[오라클 / Oracle] SGA 크기 변경 (spfile, pfile 이용하기)

728x90
728x90

현재 SGA의 크기는 아래와 같다. 오라클을 기동할 때 NOMOUNT 상태에서 파라미터 파일이 읽히는데, 이 파라미터 파일에 SGA의 크기가 정해져있다. 따라서 SGA 크기를 변경하기 위해서는 파라미터 파일을 수정해야 한다.

SGA 크기 변경 1번 과정

SGA 크기 변경을 위해 정적 파라미터 파일의 내용을 수정하는 방법과 동적 파라미터 파일의 내용을 수정하는 방법 총 두 가지를 소개하겠다.

 

우선 sqlplus에 접속하여 동적 파라미터 파일을 기준으로 정적 파라미터 파일을 생성한다.

$ sqlplus "/ as sysdba"
SQL> create pfile='pfile_name' from spfile 'spfile_name';

SGA 크기 변경 2번 과정

위의 SQL문을 통해 /oracle/product/19.0.0/dbs (= $ORACLE_HOME/dbs) 디렉토리에 initORA19C.ora라는 pfile이 생성된 것을 확인할 수 있다.

SQL> exit
ORA19C@/oracle/product/19.0.0>dbs> ls
afiedt.buf  hc_ORA19C.dat  init.ora  initORA19C.ora  lkORA19C  orapwORA19C  spfileORA19C.ora

SGA 크기 변경 3번 과정

오라클은 기동 시에 정적 파라미터 파일(pfile)보다 동적 파라미터 파일(spfile)을 우선으로 읽는다. 이는 아래의 SQL문으로 확인할 수 있다.

참고: 오라클 기동 중 SHUTDOWN 상태에서 NOMOUNT 상태로 변경되는 과정에서 동적 파라미터 파일이 없어 정적 파라미터 파일을 읽어왔다면 아래의 명령어의 결과는 빈 칸이 된다. (6번에서 확인할 수 있음)

SQL> show parameter spfile

SGA 크기 변경 4번 과정

 

정적 파라미터 파일 수정하기

오라클 기동 시에 동적 파라미터 파일이 아닌 정적 파라미터 파일을 읽도록 동적 파라미터 파일의 이름을 잠시 바꾸자.

$ mv spfileORA19C.ora spfileORA19C.ora.orig

SGA 크기 변경 5번 과정

아래 명령을 통해 기동 시에 읽은 동적 파라미터 파일을 볼 수 있는데, spfile이 없으므로 VALUE에 빈 칸으로 나타나는 것을 확인할 수 있다.

SQL> show parameter spfile

SGA 크기 변경 6번 과정

위에서 생성한 정적 파라미터 파일 initORA19C.ora 파일을 vi로 열어 편집해보자. 상단의 ORA19C.__sga_target=~~~~ 부분과 하단에 .sga_target=~~~라고 적힌 것을 볼 수 있는데, 이 부분이 SGA의 크기를 나타낸다.

$ vi initORA19C.ora

SGA 크기 변경 7번 과정
기존 내용 (수정 전)

따라서 이 부분을 수정해준다. 나는 앞 자리 숫자 5를 6으로 바꿔주었다.

SGA 크기 변경 8번 과정
수정한 내용

수정 후 저장을 하고 다시 startup을 하면 Total System Global Area의 값이 위에서 수정한대로 변경된 것을 확인할 수 있다.

SGA 크기 변경 9번 과정

동적 파라미터 파일 수정하기

위에서 만들었던 정적 파라미터 파일을 삭제하고, 변경했던 동적 파라미터 파일의 이름을 다시 원상복구 시키자.

$ rm initORA19C.ora
$ mv spfileORA19C.ora.orig spfileORA19C.ora

SGA 크기 변경 10번 과정

동적 파라미터 파일의 내용은 vi로 직접 수정할 수 없다. 따라서 아래처럼 alter system 문을 통해 수정해야 한다.

아래는 SGA의 크기를 661M로 수정하는 예시이다.

SQL> alter system set sga_target=661M scope=spfile;

SGA 크기 변경 11번 과정

 

반응형