ORACLE2012. 1. 10. 21:14
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.

Posted by Tiwaz