Oracle/Admin2009. 11. 24. 15:31
instance open까지의 단계



shutdown 명령어

shutdown에는 아래와 같이 4개의 옵션이 있다.
- abort
   (새로운 손님 안 받음. 먹고 있는 손님 내보냄. roll forward 과정이 있음.)
- immediate
   (새로운 손님 안 받음. 먹고 있는 손님 내보냄 -> DML을 끊고. 비정상적인 프로세스 정리)->생각보다 오랜 시간이 걸림
- transactional
   (새로운 손님 안 받음, 먹고 있는 손님 기다림)
- normal
   (default, 새로운 손님 안받음, 먹고 있는 손님 기다림,
    접속중인 session이 exit명령으로 나갈 경우 종료됨)


  비정상종료(abort)
  정상종료(immediate, transactional, normal)


sqlplus 접속시에 파일 실행 후에 접속
하도록 할 수 있다.

다음의 내용을 따라해보면 알 수 있다.

a.sql 파일을 생성한다.

OS] vi a.sql

a.sql파일 내부에 넣을 내용

SQL> select * from scott.emp;
SQL> exit

다음의 명령을 실행한다.

OS] sqlplus 유저/암호 @a.sql

a.sql을 실행한 후 sqlplus에 접속한다.


parameter

 - static parameter
   startup 이후에 바꿀 수 없는 parameter
   대표적인 static parameter : alter system set sga_max_size=264 

 - dynamic parameter
   startup 이후에도 바꿀 수 있는 parameter


parameter file

: instance 구성시에 필요한 파일로, initSID.ora, spfileSID.ora
  파라미터 파일 읽는 순서 : spfileSID.ora -> spfile.ora -> initSID.ora -> 에러
  pfile과 spfile이 둘다 없을 경우 startup시에 에러
  (해결방법은 pfile, spfile을 생성 or startup시 파일 지정)
  initSID.ora -> spfileSID.ora 가능
  또한 spfileSID.ora -> initSID.ora도 가능

- pfile
     initSID.ora
     text파일
     alter system set으로 파라미터 변경시 메모리상에만 바꿈. 
     파일의 내용은 안바뀜(수동으로 바꿔줘야 했음)

- spfile
      spfileSID.ora
      binary파일
      alter system set으로 명령을 쳐서 변경 
      메모리와 파일 둘 다 바뀌도록 설정할 수 있음(SCOPE=both일 경우)


아무 위치나 아무 이름의 특정 파일 생성 후 startup 시에 pfile의 경로와 이름을 넣어주면
그 파일에 설정되어 있는 대로 instance가 생성됨


OS] sqlplus / as sysdba
SQL> startup pfile=경로/파일명


spfile로 시작했을 경우 아래의 커맨드를 치면 확인할 수 있다.
내용이 나오면 spfile로 시작한 경우 이다.

SQL> show parameter spfile


아래는 파라미터 관련 실습 내용이다.

# 파라미터 : Dynamic vs Static (spfile을 사용할 경우)

- Dynamic 파라미터의 변경

SQL> alter system set sga_target = 2G;           
SQL> alter system set sga_target = 2G scope=both;
SQL> alter system set sga_target = 2G scope=memory;
SQL> alter system set sga_target = 2G scope=spfile;

- Static 파라미터의 변경

SQL> alter system set sga_max_size = 2G scope=spfile;


# 파라미터 : Dynamic vs Static (pfile을 사용할 경우)

- Dynamic 파라미터의 변경 : 명령으로 현재 인스턴스는 변경되지만 파일은 직접 수정해야 한다.

SQL> alter system set sga_target = 200m;           
SQL> alter system set sga_target = 200m scope=both;    -- ORA-32001: write to SPFILE requested but no SPFILE specified at startup
SQL> alter system set sga_target = 200m scope=memory;
SQL> alter system set sga_target = 200m scope=spfile;  -- ORA-32001: write to SPFILE requested but no SPFILE specified at startup 

- Static 파라미터의 변경 : 명령으로 수정이 불가능하며 직접 파일을 수정해야 한다.

SQL> alter system set sga_max_size = 200m scope=spfile;  -- ORA-32001: write to SPFILE requested but no SPFILE specified at startup 
SQL> alter system set sga_max_size = 200m;               -- ORA-02095: specified initialization parameter cannot be modified


# 파라미터 파일 : Pfile(텍스트파일) vs Spfile(바이너리파일)

- 기본 위치에 있는 기본 이름의 파일로 기본 위치에 기본 이름의 파일 생성

SQL> create pfile  from spfile;
SQL> create spfile from pfile;

- 원하는 위치에 원하는 이름의 파일 생성

SQL> create pfile='/home/oracle/a.txt' from spfile;

- 원하는 위치에 있는 원하는 파일을 이용해서 원하는 위치에 원하는 이름의 파일 생성

SQL> create spfile='$ORACLE_HOME/dbs/spfilea.ora' from pfile='/home/oracle/a.txt';


# Startup에 어떤 파라미터 파일을 사용하는가?

SQL> startup                              --> $ORACLE_HOME/dbs/spfileorcl.ora -> spfile.ora -> initorcl.ora -> 에러
SQL> startup pfile='/home/oracle/a.txt'   --> 원하는 pfile  이용
SQL> startup pfile='/home/oracle/b.txt'   --> 원하는 spfile 이용 : b.txt의 내용 : spfile='$ORACLE_HOME/dbs/spfilea.ora'



Diagnostic files(진단 파일)

- alertsid.log
   :무조건 생김. 전체 인스턴스 당 하나의 파일이 생김.
    위치 :BACKGROUND_DUMP_DUST에 정의된 위치
    끝없이 커지므로 가끔 지워줘야 함.

- sid_dbw0_pid.trc
   : 프로세스당 하나씩 남는다.
    dbw0대신에 다른 프로세스가 들어간다.
    위치는 BACKGROUND_DUMP_DUST에 정의된 위치
    주로 장애가 날 경우 생김

- sid_ora_pid.trc
   : 서버 프로세스가 남기는 로그로 두군데에 생긴다.
      1. BACKGROUND_DUMP_DUST : 에러시
      2. USER_DEMP_DEST              : 유저요청시

진단 파일의 위치를 알고 싶은 때 명령어

SQL> show parameter dump;

alert파일을 external테이블로 연결하기
참고 : http://blog.naver.com/orapybubu?Redirect=Log&logNo=40050729230



기타사항

RESTRICTED 관련 내용 넣을 것

show parameter sga;

tail -f $ORACLE_HOME/rdbms/log/alertorcl.log

X$로 시작되는 internal테이블
 -> parameter, instance의 활동, control 파일의 내용으로 채워져 있는 테이블

현재 instance의 상태 확인

SQL> select status from v$instance;


Posted by 자수성가한 부자