'Oracle > 기타' 카테고리의 다른 글
Read the alert log with SQL (0) | 2010.01.13 |
---|---|
[펌]오라클의 뷰가 만들어지는 과정 (0) | 2009.12.23 |
DBMS_STATS package (0) | 2009.12.08 |
index의 크기 문제 (0) | 2009.12.02 |
SQL*PLUS에서 HTML, EXCEL 출력물 만들기 (0) | 2009.11.18 |
Read the alert log with SQL (0) | 2010.01.13 |
---|---|
[펌]오라클의 뷰가 만들어지는 과정 (0) | 2009.12.23 |
DBMS_STATS package (0) | 2009.12.08 |
index의 크기 문제 (0) | 2009.12.02 |
SQL*PLUS에서 HTML, EXCEL 출력물 만들기 (0) | 2009.11.18 |
히든 파라미터 확인 SQL (0) | 2010.09.01 |
---|---|
Correlated Sub Query(상호관련 서브 쿼리) (1) | 2009.12.15 |
rollup, cube, grouping sets 연산자 (1) | 2009.12.14 |
multi table insert (0) | 2009.12.14 |
index를 사용하여 쿼리를 튜닝해보자 (0) | 2009.11.16 |
MTBF(Mean Time Between Failures) (0) | 2009.12.21 |
---|---|
User Managed Recovery (0) | 2009.12.18 |
User Managed Backup (0) | 2009.12.18 |
flashback database를 가능하게 하는 설정 (0) | 2009.12.17 |
RMAN의 구성요소 및 구성실습 (1) | 2009.12.16 |
Correlated Sub Query(상호관련 서브 쿼리) (1) | 2009.12.15 |
---|---|
timezone (0) | 2009.12.15 |
multi table insert (0) | 2009.12.14 |
index를 사용하여 쿼리를 튜닝해보자 (0) | 2009.11.16 |
WITH .. AS (0) | 2009.11.15 |
timezone (0) | 2009.12.15 |
---|---|
rollup, cube, grouping sets 연산자 (1) | 2009.12.14 |
index를 사용하여 쿼리를 튜닝해보자 (0) | 2009.11.16 |
WITH .. AS (0) | 2009.11.15 |
계층형 쿼리(Hierachical select) (0) | 2009.11.14 |
● Backup (복사)
◎ logical backup
: export utility(~9i), data pump(10g~)를 이용
널리 사용되지만, 완벽한 backup은 아님
open상태에서만 가능
◎ physical backup
: OS명령, RMAN(Recovery Manager)
open, closed
● Restore (복원)
: 손상된 파일 대신 Backup해둔 파일을 재위치 시키는 것.
● Recovery (복구)
: Restore + Redo적용
완전 복구(complete) : 있는 redo를 모두 적용
불완전 복구(incomplete) : 특정 시점까지만 redo를 적용
● failure의 유형
1. statement failure
2. user process failure -> pmon이 정리, sqlnet.expire_time=n (비정상 종료를 빨리 찾게 하는 기능)
3. network failure -> 장비 또는 tnsnames.ora, listener.ora의 설정
4. user의 실수 : 심각한 에러
5. instance failure : smon이 처리
6. media failure
2009년 11월 12일 수업내용
● 인스턴스 복구
- 비정상적으로 인스턴스가 종료되었을 때, 파일의 동기화가 맞지 않을 때 리두로그 그룹을 맞추는 일
- roll forward(open전) : 리두로그 파일에 있는 것을 하나도 빠지지 않고 메모리에 올림(commit이 된 것과 안된 것 공존)
- roll back(open후, on demand & smon)) : 데이터 블럭과 undo블럭을 메모리로 올림
참조 : http://cafe.naver.com/gseducation/371
● 인스턴스 리커버리 튜닝
- 인스턴스 리커버리를 조정(더 낫게 만드는 것이 아님)
- EM > Administaration > Advisor Central > MTTR Advisor를 이용
-> 원하는 값을 주면 리두로그파일의 크기를 권고함
● 데이터베이스에 오직 commit된 데이터만 들어있는 경우
- only 정상 shutdown
● 데이터베이스에 commit된 데이터과 commit안된 데이터의 공존
- 평상시
- 인스턴스 비정상 종료시
● 데이터베이스 모드 수정
: Backup & Recovery 실습 전 준비사항
실습 내용은 첨부파일을 참고할 것.
● Backup & Recovery 유형 / 실습
◎ 데이터 파일이 손상되는 상황
: 모든 데이터 파일은 평등하나, 데이터 파일이 어느 테이블 스페이스에 소속되어 있느냐에 따라 대접이 달라짐
○ 완전 복구
- system tablespace or undo tablespace
: mount 단계에서 복구 (closed 복구: 유저들 접근 안됨)
- users tablespace
: 문제있는 파일을 offline으로 설정 -> open단계에서 복구
- index tablespace
: 인덱스만 있는 파일이므로 삭제 후 재생성만으로 해결
- read only ts
: copy & paste
- temp file
: startup시 자동 생성됨
○ 불완전 복구
- 유저 실수로 인한 복구 -> flashback으로 해결.
◎ Redo log file
: 전제 조건 - 다중화되어 있을 것
- file 1개 삭제
: copy & paste
- group 삭제
: inactive group ->완전 복구
- active, current group -> 불완전 복구(동)
◎ Control file
- 1개만 손상되었을 경우
: copy & paste
- 전부 손상되었을 경우
: 완전 복구(create control file ...)
◎ Archived log group 삭제
- datafile에 문제가 없을 경우 : whole Backup
- datafile에 문제가 있을 경우 : 불완전 복구(은)
백업에 문제가 있을 경우(금)
실습 내용은 첨부파일 참조할 것.
기타 참고사항
DBA의 의무
- 많은 종류의 failure로부터 DB보호
- MTBF를 증가시켜라.(failure가 나는 주기를 증가시켜라)
- MTTR를 감소시켜라.(recover하는데 시간을 줄여라.)
- 데이터의 손실을 최소화시켜라.
문제제기
- nomount -> mount사이의 순서가
파라미터 파일 읽기 -> SGA 구성 -> BGP실행 -> 진단파일 염
but 진단 파일에서 BGP가 실행되는 순서가 기록되기 때문에 진단 파일 열고난 후 BGP실행이 나중이 아닌지?? --> 확인요
- 추천 영어 관련 사이트
http://www.ebse.co.kr
Managing Schema Objects (0) | 2009.12.30 |
---|---|
Moving Data (SQL*Loader, Export/Import, Datapump) (0) | 2009.12.15 |
Optimizer Statistics & Performance Statistics (0) | 2009.12.10 |
Performance Management (0) | 2009.12.08 |
Proactive Maintenance (0) | 2009.12.07 |
● Optimizer Statistics
◎ 정의
- 옵티마이져(optimizer)가 실행계획을 세울 때 필요한 통계정보
◎ 특징
- 출처는 일부 DBA_로 시작하는 Static Data Dictionary Views
- 다음과 같은 정보가 포함됨
1. 테이블 및 인덱스의 크기
2. 테이블 : ROW의 갯수, 평균 row의 크기, chain의 갯수
3. 인덱스 : 높이와 delete된 leaf row의 갯수
- 관련 패키지 : DBMS_STATS
- 이 내용을 분석해야 SQL 튜닝이 가능함.
- 주기적으로 수집을 해줘야 함.(변화가 많은 오브젝트를 기준으로)
- gather_stats_job : 테이블 선별, 히스토그램 비율과 결정을 알아서 해줌.
매일 밤 실행됨. 정확성에 문제가 있을 수 있음.
◎ 분류
○ System Stats
: 환경적 데이터의 상황을 알려줌. 9i R2부터 등장.
- dbms_stats.GATHER_SYSTEM_STATS
○ Data Stats
: 내부의 데이터의 상황을 알려줌
- dbms_stats.GATHER_DATABASE_STATS
- dbms_stats.GATHER_DICTIONARY_STATS
- dbms_stats.GATHER_FIXED_OBJECTS_STATS
- dbms_stats.GATHER_INDEX_STATS
- dbms_stats.GATHER_SCHEMA_STATS
- dbms_stats.GATHER_TABLE_STATS
● Performance Statistics
◎ 정의
- 서버 튜닝을 하기 위한 performance의 통계정보
◎ 특징
- V$로 시작하는 Dynamic Performance Views
- 이 통계 정보를 분석해야 서버 튜닝이 가능함
- 단점 : 누적된다. 휘발성이다. -> 문제의 원인을 금방 찾을 수 없다.
- 버전에 따라 통계를 수집하는 방식이 달라짐
- 8i이전
utlbstat.sql(b : begin), utlestate.sql(e : end) -> report.txt
일정 주기 snapshot으로 결과물을 생성, 파일의 위치는 $ORACLE_HOME/rdbms/admin 이다.
- 8i부터
statspack : sp*.sql -> perfstat유저가 생성되고, ...
- 10g부터
AWR + MMON + ADDM
◎ 분류
○ Activity
- v$statname -- 363
- v$sysstat : 인스턴스 시작이래로 있었던 모든 Activity의 누적 -- 363
- v$sesstat : 현재 연결중인 각 session의 Activity의 누적, -- 363*세션수
- v$service_stats : 서비스 이름별 time model Activity의 누적 -- 주로 time model 관련 지표
- v$mystat : 내 세션의 Activity의 누적 -- 363
※ 사라진 세션이 문제가 될수도 있다. -> trace를 조정(cctv설치)
○ Wait
- v$event_name : 발생 가능한 wait의 목록
- v$system_event : 인스턴스 시작이래로 경험한 wait(event)의 누적 -> v$system_wait_class
- v$session_event : 현재 연결중인 각 세션이 경험한 wait(event)의 누적 -> v$session_wait_class
- v$service_event : 서비스 이름별 wait의 누적 -> v$service_wait_class
- v$session_wait (10g ASH{Active Session History}) or v$session: 지금 당장 기다리고 있는 wait(event)
○ Others
- v$sql
- v$latch
- v$filestat
- v$pgastat
...
기타참고사항
- 대기 이벤트 = System API Call
가령 SQL*Net message to client 대기는 Server Process가 OS에서 Network Send API 요청을 하고 응답이 오기를 기다린다는 것을 의미한다. OS는 Server Process가 요청한 Data를 TCP Send Buffer에 넣는 것으로 일을 마치고 Server Process에게 응답을 보낸다. 즉, SQL*Net message to client 대기는 실제 Network 전송이 끝나기를 기다린다는 의미가 아니라 OS가 Send Buffer에 성공적으로 Data를 등록하기를 기다린다는 것을 의미한다. Network API들은 이런 속성을 지니고 있다.
- 경영 : 불확실성을 최소화하는 과정
참조 : http://ukja.tistory.com/219
Moving Data (SQL*Loader, Export/Import, Datapump) (0) | 2009.12.15 |
---|---|
Backup and Recovery (0) | 2009.12.10 |
Performance Management (0) | 2009.12.08 |
Proactive Maintenance (0) | 2009.12.07 |
Configuring the Oracle Network Environment (0) | 2009.12.04 |
Oracle 리두 로그 파일들은 Oracle 데이타베이스의 작업 및 기록에 대한 유용한 정보를 풍부하게 포함하고 있지만, Oracle8i 이전 까지는 이 정보를 활용할 수 있는 정확하고 간편한 툴이 없었습니다. 로그 파일들은 데이타베이스 복구 수행을 위해 필요한 모든 데이타를 포함하면서, 데이타베이스의 데이타와 메타데이타에 만들어진 모든 변경 사항들도 기록하고 있습니다.
LogMiner는 완벽한 관계형 툴로서, 관리자는 이것을 통해 SQL 을 사용하면서 로그 파일들의 읽기, 분석, 그리고 해석 등을 수행할 수 있고, 또한 Oracle8 포워드로부터 온라인 또는 아카이브된 유효한 리두 로그 파일을 볼 수도 있습니다.
LogMiner 를 통한 로그 파일 분석은 다음과 같은 작업을 수행할 수 있습니다..
LogMiner 는 Oracle 서버가 이미 데이타베이스 복구를 위해 리두 로그 파일들을 유지 관리하고 있기 때문에 시스템 상에 데이타 모음(collection) 오버헤드를 강요하지 않고 이 기능들을 제공하고 있습니다. 또한, LogMiner 는 강력한 관리 및 분석 툴 집합을 위한 기반 기술로서도 사용되고 있습니다.
LogMiner는 리두 로그 파일 분석을 위해 마운트된 데이타베이스를 필요로 하지는 않지만, 리두 로그 파일들의 내용을 번역하기 위하여 분석되는 데이타베이스 딕셔녀리에 대한 액세스는 필요로 합니다. LogMiner는 내부 객체 식별자 및 데이타 유형들을 의미 있는 외부 객체 이름 및 데이타 포맷으로 번역하기 위해 딕셔너리를 사용하고 있습니다. 하나의 데이타베이스 로그 파일들이 다른 데이타베이스에서 분석될 수 있도록 데이타베이스 딕셔너리 (딕셔너리 파일이라고 불리는)의 추출이 생성될 수가 있고, 딕셔너리 파일의 생성을 위해서는 PL/SQL 패키지가 제공이 되고 있습니다
분석되는 로그 파일들은 동적 성능 뷰로 매핑이 되고(V$ 테이블), PL/SQL 는 로그 파일과 V$ 로그 테이블의 결합을 위해 제공이 되고 있는데, 이 테이블의 모든 행들은 데이타베이스에서 수행되는 논리적 작업에 대한 완벽한 정보를 나타내줍니다. 이 논리적 작업들의 각각에 대하여, 변경의 영향을 논리적으로 기술하기 위해 REDO 및 UNDO SQL 문이 제공되고 있습니다. SQL UNDO 문은 원래의 변경 사항을 롤백하기 위해 사용이 될 수 있고, SQL REDO 문은 데이타베이스 상에서 수행되는 원래의 작업을 나타내고 있습니다..
로그 파일의 데이타는 테이블로 매핑되기 때문에, 표준 SQL 를 통해 또는 지원 언어/인터페이스 (PL/SQL, Java Stored Procedures, Oracle Call Interface, Pro*C, 그리고 SQLJ) 를 사용하여 프로그램적으로 간편하게 액세스될 수 있습니다.
예를 들면, Joe Smith가 EMPLOYEE 테이블에 어떤 변경 사항을 만들었는지 파악하기 위해서, 다음 질의가 실행될 수 있습니다..
select sql_redo, sql_undo from v$logmnr_contents where username = 'joe smith' and seg_name = 'EMPLOYEE';
이 질의는 다음과 같이 포맷된 결과를 반환하는데, 이 결과는 Joe가 처음에 종업원 레코드를 삭제한 다음, 보다 많은 급료의 레코드를 재생성하는 것을 보여주고 있습니다.
SQL_REDO |
SQL_UNDO |
delete * from EMPLOYEE where EMPNO = 12345 and ROWID = 'AAABOOAABAAEPCABA'; | insert into EMPLOYEE (NAME, EMPNO, SALARY) values ('joe smith', 12345, 500); |
insert into EMPLOYEE (NAME, EMPNO, SALARY) values('joe smith', 12345, 2500); | delete * from EMPLOYEE where EMPNO = 12345 and ROWID = 'AAABOOAABAAEPCABA'; |
이 간단한 예는 LogMiner의 사용이 얼마나 강력하면서 간편한지를 나타내고 있습니다. LogMiner를 사용하면 훨씬 더 정교한 분석이 수행될 수가 있습니다: 연속된 명령문들과 트랜잭션들을 통해 변경 사항을 추적합니다; 트리거와 애플리케이션 업데이트가 애플리케이션 디버깅을 위해 어떻게 상호 작용하는지를 파악합니다; 또는 용량 계획 및 튜닝 시간에 대해 테이블이 어떠한 비율로 업데이트가 되는지를 파악합니다.
출처 : http://www.oracle.com/technology/global/kr/deploy/availability/htdocs/logminer.html
DUL(Disk Unload) (0) | 2009.12.18 |
---|---|
OLTP (0) | 2009.12.16 |
Tuning(튜닝)이란? (0) | 2009.12.09 |
Enqueue vs Latch (0) | 2009.11.26 |
SCN (0) | 2009.11.17 |
OLTP (0) | 2009.12.16 |
---|---|
Oracle LogMiner (0) | 2009.12.10 |
Enqueue vs Latch (0) | 2009.11.26 |
SCN (0) | 2009.11.17 |
index (0) | 2009.11.17 |
Backup and Recovery (0) | 2009.12.10 |
---|---|
Optimizer Statistics & Performance Statistics (0) | 2009.12.10 |
Proactive Maintenance (0) | 2009.12.07 |
Configuring the Oracle Network Environment (0) | 2009.12.04 |
Implementing Oracle Database Security (0) | 2009.12.04 |