Database/ORACLE

2일차 - 4장. 데이터베이스 Instance 관리

99iberty 2013. 12. 3. 15:20

 

오라클을 설치했을 때 사용자마다의 환경으로 셋팅을 바꿔서 쓰고 싶다.

파라미터로 설정 변경해야 한다.

 

초기화 파라미터 파일은 시작구동시에 참고하는 파일.

운영시에 참조하지 않는다.

 

[위치]

$ORACLE_HOME/dbs

[순서]

1. spfile -> 2.pfile -> 3. 둘 다 없으면 오라클 기본 셋팅으로 올라옴.

 

1. pfile (init[SID].ora 라는 파일) ; 초기에는 이것밖에 없었다.

text형식

DBA 수동 관리 / 편집

인터넷 환경으로 업무가 바뀌면서 내내 DB가 운영해야 하는 상황인데, DB내리고 구성변경을 못하게 되었다. 그래서 단점이 됨.

얘를 쓰는 경우 : 파라미터를 많이 바꿔야 할 때. Alter명령 일일이 다 쓸 수 없으니 편집기로 다 수정하고 spfile 로 변환해서 사용.

 

2. spfile (spfile[SID].ora 라는 파일) ; 8i부터 생김.

바이너리 형식

Oracle 관리 / Alter로 변경

디비 내리지 않고 운영중에도 환경파일 바꿀 수 있도록 지원.

8i부터 얘를 디폴트로 쓰게 설정.

아무리 얘를 써도 전부 다 파라미터를 바꿀 순 없다... -> static parameter의 경우에는 DB를 내렸다 올려야 바꿀 수 있음.

 

* 파라미터 종류

- Static parameter (spfile 이라도 DB 재시작해야 적용 가능)

- Dynamic parameter (spfile 일 때, 운영 중 변경)

 

* Alter 명령

Alter    (System )   Set 파라미터 = '값'

(Session) SCOPE = BOTH (디폴트값)

     MEMORY

     spfile

 

system : DB 전체에 / Session : 내가 맺고있는 커넥션에만. 연결 끊고 나서는 원래대로 .

MEMORY : 운영중인 DB에만 적용(리스타트시엔 flush) / spfile : 운영중엔 적용 안 하고 다음 번 리스타트시에도 적용되게. (static parameter 변경할 때)

 

 

 

초기화 파라미터에서 고급 부분이 시스템 성능에 영향을 미칠 수 있는 부분

*고급

DB_CACHE_SIZE : 데이터 버퍼 캐쉬 사이즈

SHARED_POOL_SIZE : SHARED POOL 크기

DB_FILE_MULTIBLOCK_READ_COUNT : DB파일을 읽어들일 때 한 블럭씩 안 읽어들이고 여러 블럭을 합쳐서 읽어들이는 의미의 파라미터..

 

오라클의 인덱스 꽤 종류가 많다.

 

 

 

* 기본

CONTROL_FILES    : 컨트롤 파일(스토리지 안)이 어디에 있는지

DB_BLOCK_SIZE    : 블록크기 얼마인지

PROCESSES          : 총 프로세스 갯수

 

 

 

SHOW PARAMETER : 패턴매칭으로 해당 키워드 들어간 거 전부 다 보여줌

 

 

sudo컬럼 : 의사결정 컬럼

실제 컬럼명이 지정되어 있지 않지만 오라클에서 관리하기 위해 있는 관리컬럼.

ex) rownum, rowid 등등

 

 

 

 

 

DB구동

 

1. SHUTDOWN

2. NOMOUNT  단계

alert.log 가 지워지면 해당 위치에 오라클이 새로 만들고 기록하면서 구동됨.

처음에 사용할 때는 로그가 작지만... 모든 내용이 다 있으므로 커지다가 물리디스크 다 차지하면 DB가 못 뜸.

만약 alert.log에 문제가 생기면 바로 전 단계로 다시 돌아감.

인스턴스 구동 위해 파라미터 값 읽음.

 

3. MOUNT

콘트롤 파일이 열려. 그래서 그 구조 정보를 얻기만 함.

여튼 정합성 체크 안 함.

 

중간단계에 문제가 있어서 멈춰져 있을 때, 조치 취하고 나서 alter database 로 윗단계로 올릴 수 있다.

 

4. OPEN

콘트롤파일에 있던 동기화 정보와 안 맞을 때

SMON 을 사용해서 리두로그파일에 있는 내용으로 복구. 하는 게 이 단계. 인스턴스 RECOVERY.

즉 예전에 비정상적으로 SHUTDOWN 됐을 때 물리적 데이터파일에 저장 안 되었을 때 여기서 리커버리 작업 수행함.

 

 

 

SHUTDOWN TRANSACTIONAL    : INSERT UPDATE DELETE 한 사람 기다린다. 커밋될때까지 기다린다(?).

트랜잭션 종료...가 언제지?

IMMEDIATE       :    CKPT 적용해 줌. COMMIT 안 한 거 롤백함?

ABORT    : 해도 리두로그파일에는 있당.

 

ABORT 빼고 CKPT 일어남.

 

 

일관성 있는 데이터베이스. SMON 에 의해서 INSTANCE RECOVERY 필요 없음.

 

DB가 구동되어 있을 때 STARTUP FORCE 하면 SHUTDOWN ABORT 후 STARTUP과 동일한 명령어.

 

 

 

오라클 11g에 그리드 설치하면서..

ADR (AUTOMATIC DIGNOSTIC REPOSITORY)

오라클 진단할 수 있는 자료를 하나의 위치로 모았는데 그게 ADR 임.

얘를 헬스모니터링하는 로그들을 한 군데 다 모아둠. BDUMP 이런 파일들 위치 달라짐?

 

 

SQL> show parameter background

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_core_dump                 string      partial
background_dump_dest                 string      /u01/app/oracle/diag/rdbms/orcl/orcl/trace
SQL> SHOW PARAMETER DIAG

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /u01/app/oracle

 

ASM 진단, DB진단, 리스너 진단

[orcl:diag]$ ll
total 12
drwxr-xr-x 3 oracle oinstall 4096 Dec  2 17:16 asm
drwxr-x--- 3 oracle dba      4096 Dec  3 12:05 rdbms
drwxr-xr-x 3 oracle oinstall 4096 Dec  2 17:16 tnslsnr
[orcl:diag]$ pwd
/u01/app/oracle/diag

 

* alert로그 위치 ( alert_<SID>.log )

[orcl:trace]$ ls aler*
alert_orcl.log
[orcl:trace]$ pwd
/u01/app/oracle/diag/rdbms/orcl/orcl/trace

 

 

 

 

** 성능 관련 뷰

 

1. Dynamic Performance 뷰

v$sql : sql 문장에 대한 정보 확인.

sql텍스트 라는 컬럼을 가지고 문장에 대한 소스 확인 가능 (어떤 문장이 수행됐는지)

excutions 이라는 컬럼을 가지고 수행된 횟수 확인 가능.

cpu_time : ms 단위. 특정 문장이 수행되면서 cpu 소모한 시간.

v$session : 어떤 클라이언트에서 들어왔는지, 언제 세션을 맺었는지.

v$lock : 해당 오라클에서의 DML 작업시에 트랜잭션 단위의 데이터를 보호하는 기능인

락이 걸려 있는 걸 보고 싶다.

block 이 0보다 크게 되면 해당 트랜잭션이 수행되서 락을 선점하고 있음을 나타냄.

v$fixed_table : 어떤 dynamic 퍼포먼스 뷰가 있는지, 간단한 설명.

 

동적 뷰이기 때문에 읽기 일관성이 보장되지 않음.

 

 

** 데이터 딕셔너리

테이블 형태로 데이터가 들어 있다.

데이터 딕셔너리 구조는 사용자가 모른다.

그래서 오라클은 해당 정보를 뷰의 형태로 제공해 준다.

 

dba_ 가 붙으면 dba만 접근 가능한 것.

 

 

 

 

 

ASM 이 DB 구동되면서 리스너, ASM, 데이터베이스 (맞나?) 이렇게 세개 올려주는데

EM은 자동으로 올려주지 않는다.

그래서 EM은 아래와 같이 따로 올려줘야 함

$ emctl start dbconsole

 

$ sqlplus / as sysdba <- 내꺼니까 인증 안하고 걍 들어가겠다. /