sga_max_size와 sga_target 사이즈 변경 작업을 하고 오라클을 재구동 하였다.
SGA의 전체 사이즈보다 두 값의 초과 하여 서버 구동이 되지 않았다.
이유는 shared_pool_size와 java_pool_size가 SGA 전체 메모리 크기보다 클 경우라고 한다.
SQL> startup
ORA-00821: Specified value of sga_target 16M is too small, needs to be at least 128M
SQL> startup
ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0
연속으로 에러가 발생한다.
해결 방법은 spfile을 pfile로 생성하여 sga_target의 크기를 수정 후 다시 spfile로 생성하면 된다.
SQL> create pfile from spfile;
vi를 이용하여 init<SID>.ora 파일 수정
SQL> startup pfile="init<SID>.ora"
DB 구동이 정상적으로 되면 pfile을 spfile로 생성
SQL> create spfile from pfile
만약
ERROR at line 1:
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file
'/u01/app/oracle/product/10.2.0/db_1/dbs/init<SID>.ora'
파일을 못찾았을 경우 DBMS 최초 설치시 $ORACLE_BASE/admin/<SID>/pfile/init.ora.xxxx 파일을 dbs폴더에 생성 해준다.
나의 경우 pfile 생성시 spfile의 바이너리가 깨져 아래의 에러가 발생하였다.
그래서 아래와 같이 $ORACLE_BASE/admin/<SID>/init.ora.xxx 파일을 이용하여 startup을 할 수 있었다.
SQL> show parameter pfile
ORA-00600: internal error code, arguments: [kspgip1], [101], [930], [1],
[sql92_security], [], [], []
SQL> shutdown immediate;
ORA-00600: internal error code, arguments: [kspgip1], [101], [508], [1], [_max_arch_lns_wait], [], [], []
SQL> startup
ORA-00821: Specified value of sga_target 16M is too small, needs to be at least 128M
SQL> startup pfile="initTIWAZ.ora"
ORACLE instance started.
Total System Global Area 603979776 bytes
Fixed Size 1218220 bytes
Variable Size 184551764 bytes
Database Buffers 402653184 bytes
Redo Buffers 15556608 bytes
Database mounted.
Database opened.