반응형 DBMS/ORACLE73 ORACLE 통계정보 백업/복구 오라클 통계정보 백업/복구 방법은 2가지가 있다. - DBA_TAB_STAT_HISTORY 사용한 통계정보 갱신 시 자동으로 백업 되어진 데이터를 이용한 복구 - 백업 테이블 생성 후 export/import를 이용한 복구 운영 중 통계정보 갱신으로 인한 SQL 실행계획 변경 시 과거 통계정보를 복구하여 SQL실행계획 원복 DBA_TAB_STAT_HISTORY 이용한 통계정보 백업/복구 • 테이블 생성 및 데이터 INSERT SQL> set line 1000 SQL> set pages 1000 SQL> set long 9999 SQL> col owner for a30 SQL> col table_name for a30 SQL> col object_name for a30 SQL> col partition_n.. 2022. 9. 6. 특정 SQL_ID shared pool 에서 flush 하기 테스트 등의 이유로 현재 shared pool 에 등록되어 있는 sql_id 를 삭제 하고자 할 때 운영 시스템에서 shared pool 의 모든 SQL을 flush 할 수는 없는 경우 사용 flush 대상 조회 shared pool에서 제거하기 위한 커서의 address, hash_value 값을 확인합니다 -- flush 대상 SQL 조회 SQL> SELECT substr(sql_text,1,30) sql_text, sql_id, address, hash_value, executions, object_status, LAST_ACTIVE_TIME FROM v$sqlarea WHERE 1=1 --AND sql_text LIKE 'SELECT /* SPK */%' AND sql_id = 'brsj9n8w4.. 2022. 9. 5. OPTIMIZER_DYNAMIC_SAMPLING 오라클 Dynamic Sampling 통계정보가 존재하지 않을 경우에 오라클은 Dynamic Sampling Level에 따라 Dynamic Sampling 작업을 수행한다. 즉 Sampling Level에 따라 데이터블록들을 Sampling한 후 통계 정보를 생성해 SQL 문을 수행한다. Dynamic Sampling 관련 힌트 -- dynamic_sampling 사용 안함 select /*+ dynamic_sampling(0) */ * from iggy_pop where code1=42 and code2=42 ; -- dynamic_sampling level 11 SELECT /*+ dynamic_sampling(emp 11) */ empno, ename, job, sal FROM emp WHERE .. 2022. 7. 6. WITH 문 사용(임시테이블, 프로시저, 펑션) 및 동작방식 - WITH 절은 2가지 동작 방식이 있다. Materialize 방식 : 임시 테이블을 생성 후 WITH 절의 결과를 저장하며, 반복 호출 시 쿼리를 실행하지 않고 임시 테이블에 저장된 결과를 사용한다. Inline 방식 : 임시 테이블을 생성하지 않고 Inline View 형태로 수행하며, 참조된 횟수만큼 반복적으로 쿼리를 실행한다. - 동작 방식은 (MATERIALIZE, INLINE) 힌트로 제어가능하다. - 힌트 없을 시 2번 이상 수행되면 Materialize, 1회만 수행되면 Inline View 로 결정됨 WITH 절 임시테이블 선언 WITH EMP_W1 AS (SELECT DEPARTMENT_ID, SUM(SALARY) AS SAL FROM HR.EMPLOYEES GROUP BY DEPA.. 2022. 7. 1. TTS (Transportable Tablespaces) - 데이터 이관 시 Tablespace 단위로 datafile를 이관하는 방법 - 대상 테이블스페이스 read only 상태에서 작업 진행해야 함 - 소스/타겟 캐릭터셋이 동일 해야 함 작업순서 1. 소스 테이블스페이스 read only 2. transport_tablespace 옵션 사용하여 메타정보 export 3. 타겟 장비에 dmp(export 받은)파일 및 데이터파일(해당 테이블스페이스의 데이터 파일) 이동 4. import 5. 타겟 테이블스페이스 read only -> read write 변경 제약사항 - Source DB와 Target DB 간의 character set이 동일해야 한다. - system,undo,sysaux,temp는 지원 불가능 - 10g 이전 버전은 source 와 t.. 2022. 6. 24. listener.ora / sqlnet.ora / tnsnames.ora 차이점 오라클 접속 관련 설정파일 listener.ora sqlnet.ora tnsnames.ora 차이점 listener.ora - 위치: 서버에서 $ORACLE_HOME/network/admin/listener.ora - 오라클 서버에서 클라이언트의 요청을 듣고, 클라이언트와의 통신 환경을 설정하는 파일 - 오라클 서버에 존재, 오라클 클라이언트에서 서버로 접속할 때 필요한 프로토콜 및 포트 정보등을 설정하는 파일 - 설정형식: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트ip)(PORT = 포트번호)) ) ) ) SID_LIST_LISTENER = (SID_LIST = (S.. 2022. 6. 20. 패스워드 특수문자 포함 sqlplus 접속 방법 특수문자 처리 패스워드에 특수문자가 포함된 경우 sqlplus 접속 시도 중 에러 발생 시 처리 방법 - sqlplus 에서 접속 시 앞뒤로 쌍따옴표(")로 막아줌 SQL> conn psk/"abc123!@" - 쉘에서 접속 시 특수문자 앞에 역슬래시(\)를 붙여줌 $ sqlplus psk/\"abc123\!\@\" 테스트 ## SP2-0306 에러 발생 SQL> create user sk identified by "abc123!@" ; User created. SQL> grant connect to sk ; Grant succeeded. SQL> conn sk Enter password: SP2-0306: Invalid option. Usage: CONN[ECT] [{logon|/|proxy} [AS .. 2022. 6. 17. ADR(Automatic Diagnostic Repository) - 오라클 로그 삭제를 안했지만 과거 로그가 삭제되는 경우가 있는데 ADR에서 자동으로 관리하기 때문- ADR의 Base Directory 는 11g 에서 새로 도입된 diagnostic_dest 파라미터 설정 값- 11g부터는 Alert File 이나 Trace File 이 예전과 같이 *_dump_dest 로 지정된 Directory에 더 이상 발생하지 않는다예전과 같은 방식으로 직접 *_dump_dest 를 지정하더라도 Oracle 은 이를 무시하고 새로운 방식(Automatic Diagnostic Repository)에 따라 각각의 File 에 저장한다- diagnostic_dest 의 기본경로는 $ORACLE_HOME/log 이지만, 환경변수 $ORACLE_BASE 가 설정되어 있는 경우에는 해.. 2022. 6. 17. AFD disk 추가/삭제 추가 -- diskstring을 설정하는 여러 방법 -- asm disk에서 사용 할 디스크를 지정하는 설정 [grid@svr1 ~]$ asmcmd dsset 'AFD:*','/dev/rdsk/*' [grid@svr1 ~]$ asmcmd dsget parameter:AFD:*, /dev/rdsk/* profile:AFD:*,/dev/rdsk/* -- AFD 파일 생성 [grid@svr1 ~]$ cat /etc/oracleafd.conf afd_diskstring='/dev/rdsk/*' afd_filtering=enable -- ASM DiskString 확인 [root@svr1 ~]# asmcmd dsget Connected to an idle instance. ASMCMD-8102: no connec.. 2022. 6. 9. ASMLIB to AFD(ASM Filter Driver) 마이그레이션 (ASM SINGLE) ASMLIB 보다 AFD를 권장(12.1.0.2 이후 버전) - Oracle AFD는 Oracle Grid와 함께 제공되므로 추가 다운로드 불필요하다. ASMLIB(oracleasm 구성)와 같이 초기 구성을 수행할 필요 없음 - 하나의 노드에 디스크를 추가 후 다른 노드에서 디스크를 스캔할 필요가 없음(oracleasm scandisks 불필요) ASMLIB 로 구성되어 있는 ASM DISK를 AFD로 마이그레이션 테스트 -- asmlib 디스크 확인 [root@svr1 ~]# oracleasm listdisks DATA [root@svr1 ~]# oracleasm querydisk -p DATA Disk "DATA" is a valid ASM disk /dev/sdb1: LABEL="DATA" TYP.. 2022. 6. 8. RMAN RAC(ASM) to SINGLE(file system) DB_NAME 변경하여 RESTORE 버전 : ORACLE 11.2.0.1 racdb(원본 db_name) to newdb(복구 db_name) - 복구 순서 1. pfile 수정 (원본 db_name으로 설정) 2. nomount 상태에서 controlfile 복구 3. mount 후 restore database 4. pfile 수정 (변경 후 db_name으로 설정) 및 control file 재생성 5. recover database (원하는 시점까지) 6. database open resetlogs BACKUP 데이터 생성 및 full 백업 -- 테이블 생성 SQL> create table sk.t1 (c1 varchar(10), c2 varchar(10)) ; Table created. SQL> exit -- FULL BACKUP.. 2022. 5. 27. RMAN 불완전 복구 버전 : ORACLE 19.3.0.0 - 복구 시 필요 파일 : full backup, controlfile, 아카이브 로그 - 복구 순서 1. nomount 상태에서 controlfile 복구 2. mount 후 restore database 3. recover database (원하는 시점까지) 4. database open resetlogs - checkpoint_change# 번호 조회 SQL> SELECT name, checkpoint_change#, checkpoint_time, status FROM v$datafile_header ; 테스트 데이터 INSERT 및 백업 진행 ## 테이블 생성 create table sk.t1 (c1 varchar(10), c2 varchar(10)) ; ##.. 2022. 5. 27. 선분이력 테이블 선분이력의 인덱스 스캔 효율 - 최근 데이터를 주로 조회 : Index [종료일 + 시작일] - 과거 데이터를 주로 조회 : Index [시작일 + 종료일] - Index [시작일 + 종료일] 구성일 때 최근 시점 조회 SELECT /*+ index_desc(A idx_x01) */ * FROM 고객별연체금액 A WHERE 고객번호 = '123' AND '20170131' BETWEEN 시작일 AND 종료일 AND ROWNUM 2022. 5. 25. RAC relink 작업 버전 : ORACLE 19.3.0.0 - OS 패치 등으로 인한 RAC 환경 relink 작업 진행 절차 - relink 작업은 롤링으로 할 수 없으므로 모든 서비스 내리고 진행(SR가이드는 이렇게 받았지만 테스트 시 롤링으로 relink 작업진행에 문제는 없었다) DBMS STOP ## 리스너 STOP [root@svr1 ~]# srvctl stop LISTENER ## DBMS STOP [root@svr1 ~]# srvctl stop database -d racdb [root@svr1 ~]# crsctl stat res -t -------------------------------------------------------------------------------- Name Target State .. 2022. 5. 17. 시퀀스(sequence) last_number 의미와 alter sequence 시 변화 dba_sequences.last_number 값의 의미 dba_sequences.last_number 값은 cache가 반영된 값이다. cache 가 20이고 last_number 11일 경우 nextval 하면 11이 채번된다. SQL> SELECT * FROM DBA_SEQUENCES WHERE sequence_owner = 'SK' ; SEQUENCE_OWNER SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY CYC ORD CACHE_SIZE LAST_NUMBER -------------------- ------------------------------ ---------- -------------------------------------------------.. 2022. 5. 11. 이전 1 2 3 4 5 다음 반응형