이번에서 저번 글에서 오라클 로그파일에서 오류메세지(ORA-)구문을 추출하여 "오라클오류로그.log" 파일에 저장한 이후에 오라클오류로그 파일을 읽어들여 DB에 저장하는 방법입니다. for구문을 이용하여 파일의 라인을 읽어 sqlplus를 통해 sql파일에 파라미터를 던져 오라클 오류를 입력하는 방식입니다. 오라클오류_인서트.SQL 파일 INSERT INTO ORACLE_ERROR SELECT '&1' FROM DUAL; COMMIT; EXIT; 윈도우 배치 명령어 FOR /f "tokens=*" %%i IN (./오라클오류로그.log) DO @sqlplus DBID/DBPW@TNS명 @./오라클오류_인서트.SQL "%%i"
DATABASE
SQLPLUS등을 이용하여 SQL파일을 수행한후 LOG파일을 생성하는 배치를 만든후 해당 배치의 로그파일에서 오라클 오류메세지를 별도로 저장하여 데이터를 확인하고 싶을때 윈도우 DOS배치에서 파일에서의 특정문자열을 필터링하여 출력하는 기능을 하는 명령어 FINDSTR을 이용하여 오라클 오류메세지를 별도의 오류메세지 파일로 저장하는 예제 입니다. 이후 작업은 다음 글에서 본 오류메세지 파일을 읽어들어 db에 저장하는 예제를 알아보겠습니다. findstr "ORA-" ./로그파일명.LOG > 오라클오류로그.log
오라클 SQLPLUS에서 SQL스크립트 수행시 다중 서버 작업 방법 본 작업은 배치등의 작업에서 여러개의 서버가 있을경우 하나의 SQL을 파일을 통해 여러 서버에서의 DB처리 작업이 가능한 방법입니다. 하나이상의 DB를 관리하고 있는 DBA에게 유용한 방법 입니다. 다중 계정 프로세스 처리 SQL파일(TEST.SQL) --첫번째 서버 계정 접속 CONN DB_ID(TEST1)/DB_PW@TNS_NAME CREATE TABLE TEST1 AS SELECT * FROM DBA_TABLES; --두번째 서버 계정 접속 CONN DB_ID(TEST2)/DB_PW@TNS_NAME CREATE TABLE TEST1 AS SELECT * FROM DBA_TABLES; SQLPLUS SQL스크립트 파일 수행 SQLPL..
LONG DATA TYPE의 데이터값을 추출하기 위한 방법으로 FUNCTION을 통한 LONG DATA 추출 예제 예제는 DBA_TAB_COLUMNS VIEW의 기본값 DATA_DEFAULT 추출을 위한 함수 생성과 조회 스크립트로 구성 기본값 추출 FUNCTION CREATE CREATE OR REPLACE FUNCTION GET_COLUMN_DEFAULT( P_TABLE_NAME VARCHAR2, P_COLUMN_NAME VARCHAR2 ) RETURN VARCHAR AS RETURN_STR VARCHAR2(40000); SQL_STR VARCHAR2(40000); BEGIN SQL_STR:='SELECT DATA_DEFAULT FROM DBA_TAB_COLUMNS WHERE TABLE_NAME=''..
p_date=$(TZ=KST+711;date '+%Y%m') p_date_d=$(TZ=KST+711;date '+%Y%m%d') now_date=$(date '+%Y%m%d') if [ ! -d $p_date ] then print "monthly directory maked" mkdir /백업폴더/$p_date [rint "monthly directory not maked" else fi find /아카이브폴더경로 -mtime +30 -exec mv {} /백업폴더/$p_date/. \;
ORA-08104: 인덱스 객체 00000 은(는) 온라인 구축 중이거나 재구축 중입니다 ORA-08104 : this index object is being online built or rebuilt Online 옵션을 적용 인덱스를 생성중 비정상적으로 종료했을 경우 drop index, alter index rebuild 등의 작업이 다음과 같은 오류 발생. ORA-08104: 인덱스 객체 00000 은(는) 온라인 구축 중이거나 재구축 중입니다 이 때 object id 00000을 인자로 다음과 같이 clean 할 수 있다. sys 유저로 수행해야 한다. declare v_ret boolean; begin v_ret := dbms_repair.online_index_clean(nnnnn); end;..
캐릭터셋 확인 select parameter, value from nls_database_parameters where parameter = 'NLS_CHARACTERSET'; CHARSET 변경 update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET'; update sys.props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET'; update sys.props$ set value$='KOREAN_KOREA.KO16MSWIN949' where name='NLS_LANGUAGE'; commit; 재시작 SHUTDOWN IMMEDIATE; STARTUP MOUNT; A..
LOB SEGMENT TABLESPACE 변경 ALTER TABLE 테이블명 MOVE LOB(LOB컬럼명) STORE AS(TABLESPACE 테이블스페이스명); LOB 인덱스 테이블스페이스는 LOB세그먼트에 따라 변경
SQL로더를 통해 등록할 파일이 여러개인경우 배치파일을 만들어서 등록할 파일을 인수로 받아 처리하게 만들면 번거로운 작업을 줄일수 있음. 인수를 받아 처리할 배치파일 1개와 배치파일에서 컨트롤 정보를 참조할 컨트롤 파일1개를 만들어 맨 하단의 명령어를 통해 수행한다. 윈도우 배치를 기반으로 생성된 스크립트며, 리눅스, 유닉스도 쉘로 만들기에 크게 다르지 않다. 배치파일.bat sqlldr userid=아이디/비밀번호@tns명 data=%1 log=%2 bad=%3 control=컨트롤파일.CTL 컨트롤파일.CTL LOAD DATA INTO TABLE 대상테이블명 FIELDS TERMINATED BY ',' --구분자 TRAILING NULLCOLS ( 컬럼1,컬럼2,컬럼3,컬럼4,컬럼5 ) 실행명령어 배..