ㅇ ㅂㅇ
Oracle 인스턴스 관리
초기화 매개변수 파일
- 인스턴스를 시작하려면 Oracle 서버가 초기화 매개변수 파일을 읽어야 함
두가지 유형의 초기화 매개변수 파일이 있음
* PFILE - 일반적으로 initSID명.ora라고 하는 정적 매개변수 파일
* SPFILE - 일반적으로 spfileSID명.ora라고 하는 지속 매개변수 파일
초기화 매개변수 파일 내용
* 인스턴스 매개변수 목록
* 인스턴스와 연관된 데이터베이스의 이름
* SGA(시스템글로벌영역)의 메모리 구조에 대한 할당
* 채워진 온라인 리두 로그 파일로 수행하는 작업
* 제어 파일의 이름 및 위치
* 실행 취소 세그먼트 정보
여러 가지 상황에서의 성능을 최적화하기 위해 한 인스턴스에 대해 여러 초기화 매개변수 파일이 존재할 수 있음.
Oracle Enterprise Manager를 사용하여 초기화 매개변수 보기
OEM Console에서 다음 작업을 수행
1. Databases > Instance > Configuration으로 이동
2. General 페이지에서 ALL Initialization Parameters를 선택
PFILE
- PFILE은 표준 영역 체제 편집기를 사용하여 유지 관리할 수 있는 텍스트 파일. 인스턴스를 시작하는 동안 PFILE은 읽기 전용 파일. 파일이 수정되면 인스턴스를 종료한 다음 다시 시작하여 새 매개변수 값을 적용해야 함.
- PFILE은 기본적으로 $ORACLE_HOME/dbs 디렉토리에 있으며 initSID명.ora라는 이름이 지정.
PFILE 생성
- 설치하는 동안 Universal Installer에서 예제 파일 init.ora를 생성. 이 init.ora 예제 파일을 사용하면 인스턴스에 맞는 initSIDl.ora를 생성 가능. initSID.ora 파일의 매개변수를 수정할 때는 텍스트 편집기를 사용
PFILE 예제
* "keyword=value" 형식으로 값을 지정
* Oracle 서버는 각 매개변수에 대한 기본값을 가지며 이 값은 운영 체제에 따라 다를 수 있음.
* 매개변수를 임의 순서로 지정할 수 있지만 예외인 경우도 있음.
* 주석 행은 #기호로 시작
* 문자 리터럴을 포함하려면 매개변수를 큰 따옴표로 묶음.
* IFILE 키워드를 사용하여 추가 파일을 포함 할 수 있음.
* 운영 체제에서 대소문자를 구분하는 경우 파일 이름에서도 대소문자를 구분
* 값이 여러 개 있을 경우 괄호로 묶고 쉼표로 구분.
SPFILE
- SPFILE은 Oracle9i에서 새로 추가된 이진 파일. 이 파일은 수동으로 수정이 불가. 항상 서버측에 상주해야 하며 파일이 생성된 이후에는 Oracle 서버에 의해 유지 관리됨. SPFILE을 수동으로 수정하면 사용을 할 수 없게 됨. SPFILE은 데이터베이스를 종료하고 시작할 때 변경 사항을 지속적으로 유지함. 또한 파일에 기록된 매개변수 값을 자체적으로 튜닝할 수있음. SPFILE은 서버측에 상주하므로 RMAN을 사용하여 초기화 매개변수 파일을 백업 가능. 기본적으로 이 파일은 $ORACLE_HOME/dbs에 있으며 기본 이름은 spfileSID명.ora 형식으로 지정함.
SPFILE 생성
- SPFILE은 CREATE SPFILE 명령을 사용하여 PFILE 파일에서 생성됨. 이 명령을 실행하려면 SYSDBA 권한이 있어야 함. 이 명령은 인스턴스가 시작되기 전이나 후에 실행 가능.
SQL> CREATE SPFILE [='SPFILE-NAME']
2 FROM PFILE [='PFILE-NAME']
해석
1line : SPFILE-NAME 은 생성할 SPFILE의 이름
2line : PFILE-NAME 은 SPFILE을 생성하기 위해 사용하는 PFILE의 이름. PFILE은 서버측에서 사용 할 수 있어야 함.
반대로 SPFILE을 통해 PFILE을 만드는 것도 가능, 자세한 설명은 아래에서.
SQL> CREATE PFILE [='PFILE-NAME']
2 FROM SPFILE [='SPFILE-NAME']
- SPFILE-NAME 및 PFILE-NAME이 구문에 포함되지 않으면 Oracle은 기본 PFILE을 사용하여 시스템에서 생성한 이름으로 SPFILE을 생성
SQL>CREATE SPFILE FROM PFILE;
SPFILE 엑스포트;
- SPFILE의 내용을 PFILE로 엑스포트 할 수 있음
SQL>CREATE PFILE FROM SPFILE;
- PFILE은 서버측에서 텍스트 파일로 생성. 이 명령은 인스턴스가 시작되기 전이나 후에 실행 할 수 있음. 이렇게 하면 SPFILE을 보고 다음을 수행하여 쉽게 수정 할 수 있음.
* SPFILE을 PFILE로 엑스포트함.
* PFILE을 편집.
* 편집된 PFILE에서 SPFILE을 다시 생성.
- SPFILE을 PFILE로 엑스포트하여 지속 매개변수 파일의 백업을 생성 할 수도 있음
V$SPPARAMETER
위에서 설명한 대로 여러 옵션을 사용하여 SPFILE의 매개변수 설정을 볼 수 있음. 그 밖에 V$SPPARMETER를 사용하여 SPFILE의 내용을 표시하거나 볼 수도 있음.
SPFILE 예제
- PFILE에서 매개변수 설정과 동일한 행에 지정된 주석은 SPFIEL에서 유지 관리 되며 다른 모든 주석은 무시.
- SPFIEL의 텍스트는 UNIX에서 쉽게 볼 수 있지만 SPFILE은 이진 형식이고 SPFILE을 수동으로 수정하면 사용 할 수 없게 됨. SPFILE의 특정 내용을 보고 일부를 수정하려면 SPFILE을 PFILE로 엑스포트할 것.
STARTUP 명령 동작
우선순위
* STARTUP 명령이 사용되면 서버측의 spfileSID.ora가 인스턴스를 시작.
* spfileSID.ora를 찾을 수 없으면 서버측의 기본 SPFILE이 인스턴스를 시작.
* 기본 SPFILE을 찾을 수 없으면 서버측의 initSID.ora가 인스턴스를 시작
- 지정된 PFILE은 기본 SPFIEL보다 우선적으로 사용되어 인스턴스를 시작.
- PFILE에는 SPFILE 사용을 지정하는 정의가 선택적으로 포함될 수 있음. 기본 위치가 아닌 위치에서 SPFILE로 인스턴스를 시작하려면 이 방법을 사용해야 함. 기본 위치가 아닌 위치에서 SPFILE로 데이터베이스를 시작하려면 PFILE 내에 SPFILE=<전체 경로 및 파일 이름> 항목이 있어야 함.
SPFILE에서 매개변수 수정
- ALTER SYSTEM SET 명령은 인스턴스 매개변수 값을 변경하는 데 사용.
ALTER SYSTEM SET parameter_name = parmeter_value
[COMMENT 'text'] [SCOPE = MEMORY|SPFILE|BOTH]
[SID='sid' | '*']
설명
parameter_name : 변경할 매개변수의 이름.
Parameter_value : 매개변수가 변경되는 값.
COMMENT : 변경되는 매개변수 옆 SPFILE에 추가되는 주석.
SCOPE : 메모리, SPFILE 또는 두 영역 모두에서 변경되는지 여부를 결정.
MEMORY : 현재 실행 중인 인스턴스에서만 매개변수 값을 변경.
SPFILE : SPFILE에서만 매개변수 값을 변경.
BOTH : 현재 실행 중인 인스턴스 및 SPFILE에서 매개변수 값을 변경.
SID : 사용되는 SPFILE의 ORALCE_SID를 지정.
'sid' : SPFILE을 변경하는 데 사용되는 특정 SID를 지칭
'*' : 기본 SPFILE을 사용
예제:
SQL> SHOW PARAMETERS undo_suppress_errors
NAME TYPE VALUE
---------------------- ----------- -------
undo_suppress_errors boolean FALSE
SQL> ALTER SYSTEM SET undo_suppress_errors = TRUE
2 COMMENT = ‘temporary testing’ SCOPE=BOTH
3 SID=‘DBA01’;
SQL> SHOW PARAMETERS undo_suppress_errors
NAME TYPE VALUE
---------------------- ----------- -------
undo_suppress_errors boolean TRUE
ALTER SYSTEM RESET 명령은 값을 삭제하거나 기본값으로 되돌리는 데 사용.
SQL> ALTER SYSTEM RESET parameter_name [SCOPE =MEMORY | SPFILE | BOTH] [SID = ‘sid’ | ’*’]
예제:
SQL> ALTER SYSTEM RESET undo_suppress_errors
2 SCOPE=BOTH SID=‘dba01’;
다음 방법을 사용하여 SPFILE에서 매개변수를 제거 가능.
* ALTER SYSTEM SET을 사용하여 삭제를 시뮬레이트하도록 매개변수를
다시 기본값으로 설정.
* CREATE SPFILE FROM PFILE을 사용하여 SPFILE을 다시 생성.
* ALTER SYSTEM RESET을 사용하여 SPFILE에서 매개변수를 삭제.
Oracle Enterprise Manager를사용하여 SPFILE 구성수정
OEM Console에서 다음 작업을 수행합니다.
1. Databases > Instance로 이동합니다.
2. Configuration을 누릅니다.
3. General 페이지에서 All Initialization Parameters를 누릅니다.
4. 값 열에서 매개변수를 수정합니다.
5. OK를 누릅니다.
데이터베이스 시작
- 데이터베이스를 시작할 때 시작할 상대를 선택함.
* 인스턴스 시작(NOMOUNT)
- 인스턴스는 데이터베이스 생성 또는 제어 파일의 재생성 동안에만 NOMOUNT 단계에서 시작됨.
인스턴스 시작에는 다음 작업이 포함됨
* 다음 순서로 $ORACLE_HOME/dbs에서 초기화 파일 읽기
- 먼저 spfileSID.ora를 읽음
- 찾을 수 없으면 spfile.ora를 읽음
- 찾을 수 없으면 initSID.ora를 읽음
STARTUP으로 지정한 PFILE 매개변수는 기본 동작보다 우선적으로 적용
* SGA 할당
* 백그라운드 프로세스 시작
데이터베이스 이름은 초기화 매개변수 파일 또는 STARTUP 명령의 DB_NAME 매개변수를 사용하여 지정해야 함.
* 데이터베이스 마운트(MOUNT)
- 특정 관리 작업을 수행하려면 인스턴스를 시작해야 하고 데이터베이스를 마운트만 하고 열지 말아야 함.
예를 들어, 다음 작업 동안에는 데이터베이스를 마운트만 하고 열면 안됨.
* 데이터 파일 이름을 바꾸는 동안
* 리두 로그 아카이브 옵션을 활성화하고 비활성화하는 동안
* 전체 데이터베이스 복구 작업 동안
데이터베이스 마운트에는 다음 작업이 포함
* 데이터베이스를 이전에 시작한 인스턴스와 연관시키기
* 매개변수 파일에 지정된 제어 파일 찾기 및 열기
* 데이터 파일과 리두 로그 파일의 이름 및 상태를 알기 위해 제어 파일 읽기(그러나 이때 데이터 파일과 온라인 리두 로그 파일의 존재 여부를 확인 하지 않음.)
* 데이터베이스 열기(OPEN)
- 정상적인 데이터베이스 운영이란 인스턴스가 시작되고 데이터베이스가 마운트되고 열리는 것을 말하며 적합한 사용자가 데이터베이스에 접속하여 일반적인 데이터 액세스 작업을 수행할 수 있음.
- 데이터베이스 열기에는 다음 작업이 포함 됨
* 온라인 데이터 파일 열기
* 온라인 리두 로그 파일 열기
- 데이터베이스를 열 때 데이터 파일이나 온라인 리두 로그 파일이 없으면 ORALCE 서버는 오류를 반환
- 최종단계에서 ORACLE 서버는 모든 데이터 파일 및 온라인 리두 로그 파일을 열 수 있는지 확인하고 데이터베이스의 일관성을 검사함. 필요한 경우 시스템모니터(SMON) 백그라운드 프로세스는 인스턴스를 복구 시작.
STARTUP 명령
- 인스턴스를 시작하려면 다음 명령을 사용
STARTUP [FORCE] [RESTRICT] [PFILE=filename]
[OPEN [RECOVER][database]
|MOUNT
|NOMOUNT]
* OPEN : 사용자가 데이터베이스를 액세스 할 수 있게 함.
* MOUNT : 특정 DBA 작업ㅇ르 위해 데이터베이스를 마운트하지만 사용자가 데이터베이스를 액세스하는 것은 허용하지 않음.
* NOMOUNT : SGA를 생성하고 백그라운드 프로세스를 시작하지만 데이터베이스를 액세스하는 것은 허용하지 않음.
* PFILE=parfile: 인스턴스를 구성하는 데 비 기본 매개 변수 파일의 사용을 허용.
* FORCE : 정상 시작 전에 실행 중인 인스턴스를 중지.
* RESTRICT : RESTRICTED SESSION 권한을 가진 사용자만 데이터베이스를 액세스 할 수 있도록 함.
* RECOVER : 데이터베이스를 시작할 때 매체 복구를 시작.
데이터베이스 자동 시작
UNIX의 경우
- 데이터베이스 자동 시작 및 종료는 /var/opt/oracle 디렉토리의 oratab 파일 같은 특수 운영 체제 파일의 항목으로 제어 할 수 있음.
-STARTUP 명령을 실행하는 동안 오류가 발생하면 STARTUP 명령을 다시 실행하기 전에 SHUTDOWN 명령을 실행해야 함.
- STARTUP 및 SHUTDOWN 명령은 SQL 명령이 아닌 SQL*PLUS 명령임.
ALTER DATABASE 명령
- NOMOUNT 단계에서 MOUNT 단계로 또는 MOUNT 단계에서 OPEN 단계로 데이터베이스를 이동하려면 ALTER DATABASE 명령을 사용.
ALTER DATABASE { MOUNT | OPEN }
- 사용자 트랜잭션의 데이터 수정을 방지하기 위해 데이터베이스를 읽기 전용 모드로 열 수 있음.
-인스턴스를 다시 시작하려면 다음 명령을 사용하면 됨.
ALTER DATABASE OPEN [READ WRITE | READ ONLY]
* READ WRITE : 사용자가 리두 로그를 생성할 수 있도록 데이터베이스를 읽기-쓰기 모드로 열음. (Default 값)
* READ ONLY : 사용자를 읽기 전용 트랜잭션에 제한하여 리두 로그 정보를 생성하지 못하게 함.
제한 모드로 데이터베이스 열기
- RESTRICTED SESSION은 구조 관리 또는 데이터베이스 임포트 및 엑스포트와 같은 작업을 수행 할 때 유용. 데이터베이스를 제한 모드에서 시작하여 RESTRICTED SESSION 권한을 가진 사용자만 데이터베이스를 사용하도록 할 수 있음. 또한 ALTER SYSTEM SQL 명령을 사용하여 데이터베이스를 제한 모드로 둘 수 있음.
ALTER SYSTEM [ {ENABLE|DISABLE} RESTRICTED SESSION ]
* ENAVLE RESTRICTED SESSION : 이후 부터 RESTRICTED SESSION 권한을 가진 사용자만 로그인할 수 있게 함.
* DISABLE RESTRICTED SESSION : 권한이 없는 사용자도 로그인 할 수 있도록 RESTRICTED SESSION을 비활성화
세션 종료
- 인스턴스를 제한모드로 설정한 다음 관리 작업을 수행하기 전에 다음을 수행하여 모든 현재 사용자 세션을 삭제 할 수 있음.
ALTER SYSTEM KILL SESSION 'integer1,integer2'
* integer1 : V$SESSION 뷰에서 SID 열 값
* integer2 : V$SESSION 뷰에서 SERIAL# 열 값
세션 ID 및 일련 번호는 세션을 고유하게 식별하는 데 사용되며 이것은 사용자가 로그 오프하고 새 세션이 동일한 세션 ID를 사용하더라도 ALTER SYSTEM KILL SESSION 명령이 올바른 세션에 적용됨을 보장 ( 동일한 세션 ID를 가진다 하여도 SERIAL 번호까지 동일하게 적용되지 않기에 올바른 세션에 대해 적용됨을 보장함)
- 세션 종료 효과
ALTER SYSTEM KILL SESSION 명령은 백그라운드 프로세스 PMON이 실행 시 다음 단계를 수행하도록 함.
* 사용자의 현재 트랜잭션을 롤백.
* 현재 보유한 모든 테이블 또는 행 잠금을 해제함.
* 현재 사용자가 예약한 모든 자원을 사용 가능하게 함.
읽기 전용 모드로 데이터베이스 열기
- 데이터베이스가 이미 읽기-쓰기 모드로 열려 있지 않으면 모든 데이터베이스는 읽기 전용으로 열릴 수 있음. 이러한 기능은 운용중인 데이터베이스에서 질의 처리를 오픈로드하는 대기 데이터베이스에 특히 유용함.
예를 들어, 디스크 정렬을 하는 경우처럼 질의가 임시 테이블스페이스를 사용할 필요가 있는 경우 현재 사용자는 기본 임시 테이블스페이스로 지정된 지역적으로 관리되는 테이블 스페이스를 가지고 있어야 하며 그렇지 않으면 질의는 실패. SYS 사용자의 경우 지역적으로 관리되는 테이블 스페이스가 필요함.
읽기 전용 모드는 리두 데이터를 생성하지 않는 데이터베이스 복구 또는 데이터베이스 상태 변경 작업을 제한하지 않음. 예를 들어, 읽기 전용 모드에서 다음 작업을 수행할 수 있음.
* 데이터 파일을 오프라인이나 온라인으로 설정 가능
* 오프라인 데이터 파일 및 테이블스페이스의 복구를 수행 가능.
제어 파일, 운영 체제 감사 트레일, 추적 파일 및 경고 로그 파일과 같은 다른 파일에 대한 디스크 쓰기는 읽기 전용 모드에서 계속 수행 할 수 있음.
데이터베이스 종료
- 데이터베이스를 종료하여 모든 물리적 구조의 운영 체제 오프라인 백업을 수행하고 다시 시작 할 때 수정된 정적 초기화 매개변수가 적용되게 함.
인스턴스를 종료하려면 SYSOPER 또는 SYSDBA로 접속하고 다음 명령을 사용.
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
Normal 모드로 종료
- 기본 종료 모드는 Normal 모드임. Normal 모드로 데이터베이스 종료는 다음 조건을 만족시키며 진행 됨.
* 새 접속이 허용되지 않음.
* 종료하기 전에 Oracle 서버가 모든 사용자의 접속 해제를 기다림.
* 데이터베이스 및 리두 버퍼가 디스크에 기록됨.
* 백그라운드 프로세스가 종료되고 SGA가 메모리에서 제거됨.
* 인스턴스를 종료하기 전에 Oracle은 데이터베이스를 닫고 마운트 해제
* 이후 시작 시 인스턴스를 복구할 필요가 없음.
Transactional 모드로 종료
- Transactional 모드로 종료는 클라이언트의 작업 손실을 방지함. Transactional 모드로 데이터베이스 종료는 다음 조건을 만족시키며 진행됨.
* 모든 클라이언트가 특정 인스턴스에서 새 트랜잭션을 시작할 수 없음.
* 클라이언트는 진행 중인 트랜잭션을 마치면 접속을 해제함.
* 모든 트랜잭션이 끝나는 즉시 종료 됨.
* 이후 시작 시 인스턴스를 복구 할 필요가 없음.
Immediate 모드로 종료
- Immediate 모드로 데이터베이스 종료는 다음 조건을 만족시키며 진행됨.
* 현재 Oracle 서버가 처리하고 있는 SQL 문이 완료되지 않음.
* Oracle 서버는 현재 데이터베이스에 접속하고 있는 모든 사용자의 접속이 해제될 때 까지 기다리지 않음.
* 인스턴스를 종료하기 전에 Oracle은 데이터베이스를 닫고 마운트 해제함.
* 이후 시작 시 인스턴스를 복구할 필요가 없음.
Shutdown 옵션
Abort 모드로 종료
- Normal 및 Immediate 종료 옵션이 작동하지 않는 경우 현재 데이터베이스 인스턴스를 Abort 모드로 종료할 수 있음. Abort 모드로 인스턴스 종료는 다음 조건을 만족시키며 진행됨.
* 현재 Oracle 서버가 처리하고 있는 SQL문이 즉시 종료.
* Oracle은 현재 데이터베이스에 접속하고 있는 사용자의 접속이 해제될 때까지 기다리지 않음.
* 데이터베이스 및 리두 버퍼가 디스크에 기록되지 않음.
* 커밋되지 않은 트랜잭션은 롤백되지 않음.
* 인스턴스는 파일을 닫지 않은 채 종료됨.
* 데이터베이스가 닫히지 않거나 마운트 해제되지 않음.
* 이후 시작 시 자동으로 인스턴스를 복구해야 함.
진단 파일을 사용한 인스턴스 모니터
- 진단 파일을 사용하면 데이터베이스 작업에 대한 정보를 캡처할 수 있으며 인스턴스 관리에 유용함. 진단 파일에 여러 유형이 있으며, 생성되는 진단 파일의 유형은 발생한 문제 또는 배포해야 하는 정보에 따라 다름.
* alertSID.log 파일 : 데이터베이스의 일상적인 운영에 필요한 정보
* 백그라운드 추적 파일 : SMON, PMON, DBWn와 같은 백그라운드 프로세스를 실패하는 경우 필요한 주요 정보.
* 사용자 추적 파일 : 치명적인 사용자 오류에 대한 주요 정보 또는 사용자 강제 추적 파일임.
경고 로그 파일
- 각 Oralce 인스턴스에는 경고 로그 파일이 있으며, 없는 경우에는 인스턴스가 시작 될 때 생성됨. 데이터베이스 작업이 진행됨에 따라 로그 파일이 늘어나므로 직접 관리가 필요. 일상적인 운용 또는 오류를 진단하는 경우 경고 로그 파일을 먼저 확인해야 함. 또한 경고 로그 파일에는 포인터가 포함되어 있으므로 파일을 추적하여 보다 자세한 정보를 확인 가능.
경고 로그 파일은 다음 정보들을 기록함.
* 데이터베이스를 시작하고 종료한 시기
* 모든 비기본 초기화 매개변수의 목록
* 백그라운드 프로세스 시작
* 인스턴스에 사용중인 스레드
* LGWR가 기록하는 로그 시퀀스 번호
* 로그 스위치에 대한 정보
* 테이블스페이스 및 실행 취소 세그먼트 생성
* 실행된 명령문 변경
* ORA-600과 같은 오류 메시지 및 확장 오류에 대한 정보
alert_SID.log 위치는 초기화 매개변수 BACKGROUND_DUMP_DEST에 의해 정의
백그라운드 추적 파일
- 백그라운드 추적 파일은 SMON, PMON, DBWn와 같은 백그라운드 프로세스에서 발생한 오류를 기록하는 데 사용됨. 이러한 파일은 오류를 추적 파일에 기록해야 하는 경우에만 존재하며 문제를 진단하고 해결하는 데 사용됨. 백그라운드 추적 파일이 처음 생성되는 경우 데이터 서버의 버전 번호 및 운영 체제를 나타내는 헤더 정보가 포함.
사용자 추적 파일에 대한 이름 지정 규칙 : sid_processname_PID.trc(db01_lgwr_23845.trc).
파일의 위치는 초기화 매개변수 BACKGROUND_DUMP_DEST에 의해 정의
사용자 추적 파일
- 사용자 추적 파일에는 SQL 튜닝에 유용한 추적된 SQL문의 통계와 사용자 오류 메시지가 포함됨.
- 사용자 추적 파일에 대한 이름 지정 규칙 : sid_ora_PID.trc(db01_ora_23845.trc)
- 파일의 위치는 초기화 매개변수 USER_DUMP_DEST에 의해 정의.
사용자 추적 활성화 또는 비활성화
- 인스턴스 레벨에서 SQL_TRACE=TRUE를 설정하면 많은 양의 추적데이터가 생성됨. 이 옵션을 사용할 때는 주의해야 함.
댓글 없음:
댓글 쓰기