728x90

select * from 테이블명 AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '30' MINUTE) --30분전

반응형

'DataBase > Oracle' 카테고리의 다른 글

SQL Code (ORA-?????)  (0) 2015.10.05
PL/SQL Exception 종류  (0) 2015.10.05
테이블단위 백업과 복구  (0) 2015.10.05
오라클 기동과 정지  (0) 2015.10.05
옵티마이저(Optimizer) 최적화  (0) 2015.10.05
728x90

* 테이블 백업

exp station/plus file=/backup/station.dmp log=/bakcup/station_dmp.log tables=aaa, bbb, ccc

* 테이블 복구

imp gmallmig/gmallmig fromuser=gmall touser=devgmall file='/db_backup/gmall/gmall_110323.dmp' ignore=y buffer=40960000 tables=UNIT, UNIT_PRICE, USER_MENU_MAP_LOG, USER_MST_CONFIRM, USER_MST_EXCEL, VACCOUNT_PAYMENT, VIRT_HST, WISH_LIST, XTOOL_PLAN_TABLE


impdp galleriadb/galleriadb dumpfile=deptdb_full_20131213.dmp directory=PUMP logfile=impdp_20140214.log tables=gh_adm_user

 


반응형

'DataBase > Oracle' 카테고리의 다른 글

PL/SQL Exception 종류  (0) 2015.10.05
Select Interval  (0) 2015.10.05
오라클 기동과 정지  (0) 2015.10.05
옵티마이저(Optimizer) 최적화  (0) 2015.10.05
TableSpace 조회하고 생성하기  (0) 2015.10.05
728x90

ORACLE 기동/정지

1.기동

sqlplus /nolog

connect /as sysdba

startup nomount;

alter database monut;

alter database open;

2.정지

-normal,immediate,abort

-normal 은 기존에 oracle 사용자가 있을 경우 사용자가 모두 종료 할 때까지 기다립니다. 

-immdiate 는 기존의 사용자를 기다리지 않습니다. 기존의 사용한 모든 SQL은 rollback이 됩니다.

-abort는 Database를 close하지도 않고 instance만 바로 종료합니다.

가장 빠르지만 가장 하지 말아야 할 것 중에 하나이지요.


반응형

'DataBase > Oracle' 카테고리의 다른 글

Select Interval  (0) 2015.10.05
테이블단위 백업과 복구  (0) 2015.10.05
옵티마이저(Optimizer) 최적화  (0) 2015.10.05
TableSpace 조회하고 생성하기  (0) 2015.10.05
Table에 난수(Random)값 입력하기  (0) 2015.10.05
728x90

[Optimizer - 최적화]

1. OPTIMIZER란?

OPTIMIZING이란 SQL 문장을 수행하기 위하여 가장 효과적인 방법을 선택하는 처리과정을 말합니다.

이것은 DML 문장을 수행하는데 있어 중요한 단계 중 하나이며, 이러한 역할을 담당하는 부분을 우리는 OPTIMIZER라 부릅니다.

 

어떻게 하면 SQL문을 가장 효과적으로 처리할까... 이것이 Optimizer의 역할이죠.

 

◎ SELECT, UPDATE, INSERT, DELETE문을 최소 비용으로 신속하게 처리할 수 있을까 고민합니다.

◎ 오라클의 Optimizer 부분은 문장의 실행을 위해서 요구된 최소한의 프로세싱 시간과 I/O를 위하여 참조된 데이타의 효과적인 경로를 결정하기 위하여 사용합니다.

◎ Optimizer는 실행계획(Execution Plan)을 세우고 문장을 실행하기 전에 가장 효과적인 계획을 선택합니다.

◎ Optimizer는 SQL문을 위한 실행 계획의 표현은 규칙 기반 접근법(Rule-based approach) 또는 비용 기반 접근법(Cost-based approach) 중 하나를 사용합니다.

◎ 모든 경우에 Optimizer가 완벽하게 처리해 주는 것이 아니기 때문에 사용자가 Optimizer보다 SQL문장을 수행하는 더 효율적인 방식을 선택할 수도 있습니다. (대표적인 예가 오라클 힌트의 사용입니다.)

 


2. Optimizer Mode

Optimizer의 모드는 아래와 같은 방법으로 수정할 수 있습니다.

◎ 초기화 파라미터 파일 수정

-. OPTIMIZATION_MODE=COST 또는 OPTIMIZATION_MODE=RULE

◎ ALTER SESSION 명령어 사용

-. ALTER SESSION SET OPTIMIZER_GOAL=COST

 


3. Rule-based(규칙기반) Optimizer

규칙기반 접근법은 OPERATIONS의 Ranking 순위에 따라 실행계획을 선택하게 됩니다.

만약 SQL 문장을 수행하기 위한 방법이 하나 이상 있다면 규칙기반 접근법은 Ranking 순위가 더 낮은 것을 사용하게 됩니다.

 

SELECT *

  FROM emp

 WHERE ename LIKE '%S%'

   AND empno = 8888

   

위와 같은 SQL문이 있다고 하면, 규칙기반 접근에서는 WHERE절에 ename LIKE '%S%' 보다는 empno = 8888 이 보다 적은 결과값이 나올것으로 Optimizer는 예상하기 때문에, empno = 8888 부분을 먼저 실행시킵니다.

LIKE 연산자 보다는 = 연산자가 순위가 더 낮다고 보시면 됩니다.

물론 일반적으로 Ranking 순위가 낮은 operations는 Ranking 순위가 높은 operations 보다 빠른 수행 속도를 보장하지만 항상 이 규칙이 성립하는 것은 아닙니다.

간혹 복잡한 SQL에서는 Ranking 순위가 높은 operations가 Ranking 순위가 낮은 operations 보다 더 좋은 수행 속도를 나타내기도 하기 때문에 규칙기반 접근법으로 모든 SQL를 처리하는데는 많은 문제점이 있습니다.

 

[수행단계]

1. 수행 가능한 실행 계획을 구한다.

2. Rank Table에 따라서 순위를 결정한다.

3. 가장 낮은 순위를 선택하여 수행한다.

 


4. Cost-based(비용기반) Optimizer

비용기반 접근법은 가장 효과적인 실행계획을 수립하기 위하여 데이터베이스의 통계 자료를 사용합니다.

오라클 RDMBS는 ANALYZE 명령어를 사용하여 테이블, 클러스터, 인덱스 등의 통계 자료들을 수집 저장합니다.

비용기반 접근법은 가장 효과적인 실행계획을 수립하기 위하여 Data Dictionary에서 해당 OBJECT에 대한 통계정보, 이용 가능한 Access paths, HINT 등을 모두 고려하게 됩니다.

비용기반 접근법은 통계 정보의 생성 여부, 인덱스 전략의 수립에 많은 영향을 받으므로 비용기반 접근법을 사용하는 경우에는 이러한 작업에 보다 더 신중을 기해야 합니다.

 

[수행단계]

1. Optimizer는 Access path와 HINT 등을 이용하여 가능한 실행계획들을 수립한다.

2. 통계정보를 근거로 하여 각 실행계획의 비용을 산정한다.

3. 가장 적은 비용의 SQL을 선택한다.

 

 

[Oracle Optimizer goal - Choose, Rule, First rows, All rows]



■ Choose

-. 테이블에 통계정보가 있으면 CBO/All_rows, 없으면 RBO로 하겠다는 뜻

 

■ Rule

-. RBO로 하겠다는 뜻.

 

■ First rows

-. CBO로 하겠다는 것인데, 보다 구체적으로 하나의 ROW를 리턴하는데 최소 response time을 OPTIMIZER GOAL로 합니다.

-. response time 최소화를 위한 optimizing을 한다.

-. index scan을 선호하는 경향이 있다.

-. index scan을 선호하는 경향이 있기에 작은 테이블로부터 데이터를 찾을 때도 index scan을 해서 full table scan을 하는 것보다 cost가 더 걸리는 단점이 있다.

-. user interaction 즉, 화면계에 사용하면 좋다.

 

■ All rows

-. CBO로 하겠다는 것인데, 보다 구체적으로 throughput을 OPTIMIZER GOAL로 합니다.

   여기서 throughput을 '목표'로 한다는 의미는 전체 SQL문을 수행하는데, 최소의 자원을 소비하는 것을 '목표'로 한다는 뜻입니다.

-. throughput 최대화를 위한 optimizing을 한다.

-. full table scan을 선호하는 경향이 있다.

-. batch 프로그램 또는 report 출력 프로그램에 사용되는게 좋다.


■ FIRST_ROWS_N

-. Oracle 9i부터 도입된 파라미터.

-. FIRST_ROWS의 단점을 보완했다.

   단점이란, FIRST_ROWS_1, FIRST_ROWS_10, FIRST_ROWS_100, FIRST_ROWS_1000처럼 FIRST_ROWS의 범위를 지정하도록 함으로써 index scan을 해야하는지, full table scan을 해야하는지에 대한 선택을 더 현명하게 하도록 했다는 것이다.


반응형

'DataBase > Oracle' 카테고리의 다른 글

Select Interval  (0) 2015.10.05
테이블단위 백업과 복구  (0) 2015.10.05
오라클 기동과 정지  (0) 2015.10.05
TableSpace 조회하고 생성하기  (0) 2015.10.05
Table에 난수(Random)값 입력하기  (0) 2015.10.05
728x90

TableSpace 조회

SELECT TABLESPACE_NAME, FILE_NAME, BYTES/1024 AS MBytes, RESULT/1024 AS USE_MBytes FROM

 (

 SELECT E.TABLESPACE_NAME,E.FILE_NAME,E.BYTES, (E.BYTES-SUM(F.BYTES)) RESULT

 FROM DBA_DATA_FILES E, DBA_FREE_SPACE F

 WHERE E.FILE_ID = F.FILE_ID

 GROUP BY E.TABLESPACE_NAME, E.FILE_NAME, E.BYTES

 ) A;


TableSpace File 생성

CREATE TABLESPACE CSCHATUSR_DAT 

      DATAFILE '/gmalltest/GMALLTST/DATA/CSCHARTUSR01.DBF' SIZE 1024M

      AUTOEXTEND ON NEXT 10M MAXSIZE 4096M

      EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;


TableSpace File Size 변경

alter database datafile '/test01/NEWGMALL/DATA/CSCHARTUSR01.DBF' resize 1024M; 


반응형

'DataBase > Oracle' 카테고리의 다른 글

Select Interval  (0) 2015.10.05
테이블단위 백업과 복구  (0) 2015.10.05
오라클 기동과 정지  (0) 2015.10.05
옵티마이저(Optimizer) 최적화  (0) 2015.10.05
Table에 난수(Random)값 입력하기  (0) 2015.10.05
728x90

05 11, 2010 11:03

DB Table에 난수(Random)값 입력하기

Posted by kimstar Posted in " DATABASE "


통계성 DB Table을 보는 프로그램을 작성시..

입력값이 없어서 개발을 못할경우 랜덤값으로 입력해주는 PL/SQL 입니다.


begin 

for i in 1 .. 100

loop 

insert into s_scpi values 

(

TO_CHAR(sysdate+1/(24*60)*i, 'yyyymm'),   -- s_yyyymm            varchar2(6)  

TO_CHAR(sysdate+1/(24*60)*i, 'dd'),       -- s_dd                varchar2(2)  

TO_CHAR(sysdate+1/(24*60)*i, 'HH24'),     -- s_hh                varchar2(2)  

TO_CHAR(sysdate+1/(24*60)*i, 'MI'),       -- s_mi                varchar2(2)  

'smsg1a',                                 -- system_name         varchar2(16) 

'test_'||dbms_random.string('L', 1),      -- scpi_name           varchar2(16) 

rpad(ABS(dbms_random.random),1),          -- entity_id           number(7)    

rpad(ABS(dbms_random.random),4),          -- scp_request         number(7)    

rpad(ABS(dbms_random.random),4),          -- scp_request_rsp     number(7)    

rpad(ABS(dbms_random.random),4),          -- scp_request_succ    number(7)    

rpad(ABS(dbms_random.random),4),          -- scp_request_fail    number(7)    

rpad(ABS(dbms_random.random),4),          -- scp_cancel          number(7)    

rpad(ABS(dbms_random.random),4),          -- scp_cancel_rsp      number(7)    

rpad(ABS(dbms_random.random),4),          -- scp_cancel_succ     number(7)    

rpad(ABS(dbms_random.random),4)           -- scp_cancel_fail     number(7)    

); 

end loop;

commit; 

end; 

/

--------------------------------------------


dbms_random.string('U', 5)  ->   대문자로 5개의 랜덤한 글자 만들기 ( 이름 만들기 힘들어서-_-;)

dbms_random.value(1,9)  ->  1~9까지 난수 발생으로

abs(rpad(dbms_random.random,4))  -> 랜덤한 숫자 4자리 발생

sysdate+1 : 현재+1일

sysdate+1/(24*60)*10 : 현재+10분 

sysdate+1/(24*60)*i -> 현재시간+i분



반응형

'DataBase > Oracle' 카테고리의 다른 글

Select Interval  (0) 2015.10.05
테이블단위 백업과 복구  (0) 2015.10.05
오라클 기동과 정지  (0) 2015.10.05
옵티마이저(Optimizer) 최적화  (0) 2015.10.05
TableSpace 조회하고 생성하기  (0) 2015.10.05

+ Recent posts