Oracle 12

오라클 불완전복구 (hotbackup본만 있을경우)

최근 사이트에서 랜섬웨어로 서버자체가 날아간 적이 있다. 작년에 backup 받았던 begin/end 백업이 있었다 하지만 archive log file는 존재하지 않기에..불완전복구로 가야했다. (expdp full backup본도 있었음) 일단 oracle을 설치해서 dumpfile로 tablespace 정보를 빼냈고 생성까지 하였다. expdp log에 ora-01555 error 가 제일 큰 테이블에 있었고 (거의 업무에 모든 자료들 존재하는 300G짜리 테이블이었음..) 해당 테이블은 import가 안되었다. (SR문의 했으나 .....................) ORA-31693: Table data object "username"."table_name" failed to load/unlo..

Oracle 2023.08.04

oracle instance 선택 화면 출력 스크립트

오라클 instance가 한 서버에 여러개일 경우 .profile에 인스턴스 명을 선택할 수 있는 창이 뜨도록 스크립트를 설정하면 들어갈때 편하다. 설정이 안돼있을때는 매일 export ORACLE_SID, export ORACLE_HOME 입력하여 귀찮은적이 많았다.. Solaris / Linux 계열은 아래 다 되는것을 확인했다.. ex) RAC 환경이였음.. echo 'SELECT ORACLE_SID' echo '------------------------------------' echo '1. test : test1 ' echo '1. testt : testt1 ' echo '1. testtt : testtt1 ' echo '------------------------------------' ec..

Oracle 2023.07.19

TIMESTAMP를 통해 과거 DML 수행 횟수 조회

예전 불필요한 계정 삭제 작업을 진행했는데 사용하지 않는 계정들에 대한 정확한 파악을 위해 DML 수행 이력이 있고 없는 테이블에 대한 조회를 요청받은 적이있어 timestamp를 통해 조회하였다. 계정별 조회 ex) SELECT TABLE_OWNER, TABLE_NAME, INSERTS, UPDATES, DELETES, TIMESTAMP FROM ALL_TAB_MODIFICATIONS WHERE TO_CHAR(TIMESTAMP,'YYYYMMDD') > '20190101' AND TABLE_OWNER = '계정명' order by TIMESTAMP desc; / SELECT table_owner, COUNT(*) FROM ALL_TAB_MODIFICATIONS WHERE TO_CHAR(TIMESTAMP,..

Oracle 2023.07.17

oracle patch set 작업 (11.2.0.1 to 11.2.0.4)

예전 고객사에서 작업했던 내용을 꼼꼼하게 기록한 내용이다.. 아마 1년도 채 안돼서 아래 작업을 했던 것 같다.. 그땐 긴장이 되었었다 ㅋㅋㅋ 11.2.0.1 에서 11.2.0.4로 manual upgrade 진행하였었다. 아래는 작업 순서이다. 이 후에도 아래 참고하여 몇번 진행했었고 문제 없이 잘 패치가 완료 되었다^^. ================================================================== 1. 기존 DB Registry, Object count, Invalid object count 확인 ================================================================== - DB registry 확인 SQL> se..

Oracle 2023.07.07

ODA Database 삭제(WEB-console(Mgmt)안될때 - Derby db사용)

예전에 ODA 구축 이 후 database 를 잘못만들어서 삭제를 해야했는데 웹콘솔에서 삭제가 제대로 안돼서 SR진행하여 아래 내용을 제공받아 사용했다. 삭제는 성공적으로 잘 되었던 것으로 기억한다. 아마 Web에서 삭제를하면 ASM쪽이였나.. 어디에 무언가가 제대로 삭제가 안됐던것으로 기억한다. ODA X8-2 HA BM이였던 것으로 기억한다. ============================================================================================ Derby DB를 사용하여 DB 삭제 =========================================================================================..

Oracle 2023.07.07

ora-600[kdsgrp1](index/table corrupt/crash) , ora-600[6006](check corrupt and smon kill db)

예전에 index corrupt 났을때 처리했던 부분인데, 대충 기록해놨던것같다.. 아마 2-3년전쯤인거같다. 이 이후 다른 사이트에서 여러 block에대해 corrupt이 났던적이 있는데 백업본도없고.. 테이블 조회자체가 안돼었던적이 있어 dbms_repair로 block skip한 적도 있다 (이부분은 곧 정리해서 올려야겠다.. 사실 이것도 좀 오래돼서 기억이 잘..) =========================================================== ora-600[kdsgrp1](index/table corrupt/crash) , ora-600[6006](check corrupt and smon kill db) ====================================..

Oracle 2023.07.04

oracle 9i to 10g upgrade 작업

oracle 9.2.0.8 EE에서 10g 10.2.0.5 SE로 upgrade 작업을 진행했었다. 1년전쯤 했던건데 작업 이력이 남아있어 다시 정리해보려한다 AS-IS > AIX 5.3 ORACLE DATABASE 9.2.0.8 EE TO-BE > AIX 6.1 ORACLE DATABASE 10.2.0.5 SE 1. ============================================================================================ AS-IS DB shutdown 및 TO-BE로 경로 그대로 Cold backup (/oracle ($ORACLE_HOME), archive, datafile 전부 경로 그대로 to-be로 copy) ==============..

Oracle 2023.07.04

timestamp 이용하여 테이블 복구(Table recovery using timestamp)

최근 사이트에서 고객이 특정 테이블의 패스워드컬럼에 DML를 실수로 날리고 commit했다고 하여 DML 전 시점으로 변경을 해달라고 요청이 왔다. 일단 undo_retention 확인하였고 정확히 기억은 안나지만 10시간정도 설정 되어있었던 것 같다. (show parameter undo) 일단 테이블명 확인 후 이 전 값으로 되돌려야하는 테이블의 컬럼명과 특정값 몇개를 제공받았다. 고객이 정확한 DML 시점을 몰라서 30분 단위로 조회해서 값이 틀려지는 부분을 체크하였다. ============================================================================================ 과거 시간별 Values 조회 ===================..

Oracle 2023.07.04

log file parallel write wait event

작년에 log file parallel write wait event 가 alert에 발생하였고, DB가 거의 마비되는 현상이 있었다. 당시 기억이 잘 나진 않지만.. session kill을 했고 redo log를 꽤 많이 추가했었다. 그리고 해당 테이블이 로그성 테이블이고 복구 포인트에서 중요도가 낮은걸 확인하였고, 담당자와 개발자분들과 협의하고 nologging으로 변경하였고 이 후 해당 메세지는 사라졌다. ============================================================================================ ALERTLOG 와 해당 시간대 AWR 확인 ===============================================..

Oracle 2023.07.03

archive log 보관 주기 설정(Set the archive log retention period)

유닉스 계열은 자주 쓰다보니 외우고 있지만 윈도우는 잘 안쓰다보니 찾아볼때가 있다. 보통 작업스케줄러나 crontab에 bat, sh 파일 만들어서 걸어놓고 사용하거나, export, hot backup script에 같이 집어 넣어서 사용을 하는 경우가 많은 것 같다. 윈도우 forfiles /P D:\arch /M *.log /D -30 /C "cmd /c del @file" 유닉스, 리눅스 find /archive -name "*.log" -mtime +30 -exec rm {}\;

Oracle 2023.07.01