본문 바로가기

oracle

오라클 Plan 정보 보는 방법 보통 set autotrace on 명령으로 plan 정보를 보는데, 회사의 DBA가 추천한 방법이 있어서 기록을 남긴다. 1. 사용자 계정으로 DB 접속 ( 시스템 계정의 경우 불필요한 쿼리까지 포함됨 ) $ sqlplus system/ 2. 쿼리 실행 SQL> alter session set sql_trace = true; SQL> 쿼리실행 ( 복수의 쿼리 가능 ) SQL> alter session set sql_trace = false; ( udump 생성을 위해 필수 ) 3. 결과 확인 $ cd $ORACLE_BASE $ cd ./admin/DB명/udump $ ls –ltr ( 가장 최근 파일 확인 ) $ tkprof 파일명.trc tt.txt sys=no; ( Trace 파일을 사람이 해석 가.. 더보기
CVS Commit 로그를 남겨보자 -. 요구사항 파악 및 설계 적용 패키지 작성을 위해 수정된 파일 목록을 추출 할 방법을 찾아 보기로 했다. 업무 때문에 소스 관리를 CVS 로 하고 있다. CVS의 단점은 개별 파일이력은 확인 할 수 있는데, 수정된 파일 목록을 뽑기가 쉽지 않다는 것이다. 구글링을 해보니 CVS에서 Commit 시점에 뭔가 처리할 수 있다는 것을 알았다. 먼저, CVS 서버에 접속해서 저장소의 CVSROOT 디렉토리를 보자 -rwxrwxr-- 1 cvs cvs 544 4월 22 09:23 checkoutlist -rwxrwxr-- 1 cvs cvs 694 3월 21 2009 checkoutlist,v -rwxrwxr-- 1 cvs cvs 882 4월 26 16:03 commitinfo -rwxrwxr-- 1 cvs c.. 더보기
오라클에서 다른 계정으로 데이터 마이그레이션 방법 오라클에서 다른 계정의 테이블을 Import 해오고자 한다. 테이블 이름만 동일하고 계정 및 테이블 스페이스가 다른 경우의 Import 과정이다. oraid 계정에서 devdb 계정으로 Import 하는 과정을 설명한다. 1. Table Space 생성 SQL> CREATE TABLESPACE TS_DEV_DATA DATAFILE '/home/dba/oradata/ts_dev_data.dbf' SIZE 2048M AUTOEXTEND OFF; SQL> CREATE TABLESPACE TS_DEV_IDX DATAFILE '/home/dba/oradata/ts_dev_idx.dbf' SIZE 1024M AUTOEXTEND OFF; Data를 위한 TS_DEV_DATA아 Index를 위한 TS_DEV_IDX 를.. 더보기
Oracle Bulk Loader Oracle DB의 특정 테이블에 대용량의 데이터를 Insert 하고 싶을때, Oracle Bulk Loader를 사용한다. Loader를 사용하기 위해서는 컨트롤 파일과, 데이터 파일이 필요하다. 컨트롤 파일은 데이터 파일 정보와 테이블 정보를 가지고 있고, 데이터 파일은 DB에 넣고자 하는 데이터 목록을 가지고 있다. 1. 테이블 생성 CREATE TABLE TEST_TBL ( NAME CHAR(20), SCORE NUM(5), UPDATE DATE ); 2. 컨트롤 파일 생성 $ cat test.ctl LOAD DATA INFILE test.dat INTO TABLE TEST_TBL FIELDS TERMINATED BY ',' (NAME, SCORE, UPDATE SYSDATE)3. 데이터 파일 생.. 더보기
Oracle import / export Export * 사용자 지정 $ exp oracle_id/oracle_pwd file='dump_filename.dmp' owner=oracle_id compress=y log=log_filename.log * 테이블 지정 $ exp oracle_id/oracle_pwd file='dump_filename.dmp' tables=table_name * 테이블 조건 지정 $ exp oracle_id/oracle_pwd file='dump_filename.dmp' tables=table_name query=\"where seq=\'007\'\" Import * 사용자 지정 $ imp oracle_id/oracle_pwd file='dump_filename.dmp' fromuser=oracle_id touser.. 더보기
Pro*c를 이용한 오라클 PL/SQL function 호출 Proc*c를 이용해 Sub Program(Procedure or Function)을 호출 하는 방법에 대해 설명한다. 자료를 찾아보면 대부분의 샘플 코드가 Procedure 로만 되어 있다. 여기서는 Function을 호출 해 보기로 한다. 사실 호출 방법은 거의 비슷 하다. - 컴파일 방법 PL/SQL 구문을 사용하기 때문에 proc 컴파일 옵션을 주어야 한다. 그런데, 컴파일 옵션을 주면 다른 Pro*c 구문에서 컴파일이 안되는 일이 발생을 한다. 따라서, PL/SQL 구문을 사용하는 소스는 별도 .pc 파일로 때어 내어서 별도 컴파일을 해야한다. $ proc include=../inc iname=sub.pc SQLCHECK=SEMANTICS userid=oracleid/oraclepwd 여기서 기.. 더보기
Pro*C/C++ Precompiler Programmer's Guide [ 원문 링크 ] http://download.oracle.com/docs/cd/A58617_01/server.804/a58233/toc.htm [ 다운로드 링크 ] 더보기
ORA-01002 fetch out of sequence ORA-01002 fetch out of sequence 는 여러 경우에 발생을 한다. 그중 한가지에 대한 오류 발생 사례 이다. DB Link로 Remote 테이블을 참조 하고 있는 프로세스가 작업을 수행하고 있는 상태에서, Remote DB가 Shutdown 되는 경우 위 에러가 발생 한다. Remote DB가 Start되고 새로운 세션을 맺어야 프로세스가 정상 동작을 한다. 세션을 유지한 상태에서 Remote DB가 Start 되어도 위 에러가 계속 발생한다. 말이 어렵다 테스트 해보자. 1. ORA TNS에 RemoteDB를 추가한다. 2. DB 링크를 생성한다. CREATE PUBLIC DATABASE LINK test_link CONNECT TO remoteDBid IDENTIFIED BY r.. 더보기
Oracle 에러코드 Visual Sutdio 2008 설치 기념 첫 산출물이다. Oracle 에러코드를 입력 하면 해당 문구를 출력 해주는 완전 초 간단 프로그램 Visual Studio 2005 보다 체감 속도가 빨라진 듯 하다. 전체 소스는 여기 소스는 사실 볼것 없고, 실행 파일만 사용하시길 ㅎㅎ 더보기
crontab 일정 주기로 처리하는 배치 프로세스의 경우 시스템 crontab에 등록 하여 자동화 시킬 수 있다. * crontab 명령 $ crontab [-e | -l | -r] -e: 등록된 crontab을 편집한다. -l: 등록된 crontab명령을 출력한다. -r: 등록된 crontab을 삭제한다. * crontab 편집 $ crontab -e 위 명령을 입력하면 vi 환경에서 crontab 편집이 된다 20 13 * * 7 /home/batch/script/backup.sh 0 6 1 3 * /home/batch/script/logdel.sh 0 0 * * * /home/batch/script/daybatch.sh 30 * * * * /home/batch/script/hourbatch.sh 0,5,10,15.. 더보기