현재 SGA의 크기는 아래와 같다. 오라클을 기동할 때 NOMOUNT 상태에서 파라미터 파일이 읽히는데, 이 파라미터 파일에 SGA의 크기가 정해져있다. 따라서 SGA 크기를 변경하기 위해서는 파라미터 파일을 수정해야 한다.
SGA 크기 변경을 위해 정적 파라미터 파일의 내용을 수정하는 방법과 동적 파라미터 파일의 내용을 수정하는 방법 총 두 가지를 소개하겠다.
우선 sqlplus에 접속하여 동적 파라미터 파일을 기준으로 정적 파라미터 파일을 생성한다.
$ sqlplus "/ as sysdba"
SQL> create pfile='pfile_name' from spfile 'spfile_name';
위의 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
오라클은 기동 시에 정적 파라미터 파일(pfile)보다 동적 파라미터 파일(spfile)을 우선으로 읽는다. 이는 아래의 SQL문으로 확인할 수 있다.
참고: 오라클 기동 중 SHUTDOWN 상태에서 NOMOUNT 상태로 변경되는 과정에서 동적 파라미터 파일이 없어 정적 파라미터 파일을 읽어왔다면 아래의 명령어의 결과는 빈 칸이 된다. (6번에서 확인할 수 있음)
SQL> show parameter spfile
정적 파라미터 파일 수정하기
오라클 기동 시에 동적 파라미터 파일이 아닌 정적 파라미터 파일을 읽도록 동적 파라미터 파일의 이름을 잠시 바꾸자.
$ mv spfileORA19C.ora spfileORA19C.ora.orig
아래 명령을 통해 기동 시에 읽은 동적 파라미터 파일을 볼 수 있는데, spfile이 없으므로 VALUE에 빈 칸으로 나타나는 것을 확인할 수 있다.
SQL> show parameter spfile
위에서 생성한 정적 파라미터 파일 initORA19C.ora 파일을 vi로 열어 편집해보자. 상단의 ORA19C.__sga_target=~~~~ 부분과 하단에 .sga_target=~~~라고 적힌 것을 볼 수 있는데, 이 부분이 SGA의 크기를 나타낸다.
$ vi initORA19C.ora
따라서 이 부분을 수정해준다. 나는 앞 자리 숫자 5를 6으로 바꿔주었다.
수정 후 저장을 하고 다시 startup을 하면 Total System Global Area의 값이 위에서 수정한대로 변경된 것을 확인할 수 있다.
동적 파라미터 파일 수정하기
위에서 만들었던 정적 파라미터 파일을 삭제하고, 변경했던 동적 파라미터 파일의 이름을 다시 원상복구 시키자.
$ rm initORA19C.ora
$ mv spfileORA19C.ora.orig spfileORA19C.ora
동적 파라미터 파일의 내용은 vi로 직접 수정할 수 없다. 따라서 아래처럼 alter system 문을 통해 수정해야 한다.
아래는 SGA의 크기를 661M로 수정하는 예시이다.
SQL> alter system set sga_target=661M scope=spfile;