Oracle 10G開始支援使用SGA_TARGET參數進行SGA自動管理,Oracle可自動調節共用池和資料緩衝池的大小,以下是OS:RH AS4 U7 64bit環境 Oracle 10.2.0.1版本的一個測試,先查看現在已有的SGA設定:
SQL> show parameter sga;
NAME TYPE VALUE
----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2G
sga_target big integer 2G
更改SGA大小:
SQL> alter system set sga_max_size=4096M scope=spfile;
System altered.
SQL> alter system set sga_target=4096M scope=spfile;
System altered.
如果是RAC環境,需要這樣增加sid='*':
alter system set sga_target=20G scope=spfile sid='*';
重啟使更改生效:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 4294967296 bytes
Fixed Size 2026296 bytes
Variable Size 805307592 bytes
Database Buffers 3472883712 bytes
Redo Buffers 14749696 bytes
Database mounted.
Database opened.
SQL> show parameter sga;
NAME TYPE VALUE
----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 4G
sga_target big integer 4G
如果更改spfile導致資料庫無法啟動,可以在pfile後填加附加參數,現在一般的pfile都是一行SPFILE='spfileSID.ora',在後邊加參數會覆蓋spfile的已有參數:
SQL> alter system set lock_sga=true scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 12: Cannot allocate memory
[oracle@erpdevdb dbs]$ vi initerpstudydb.ora
SPFILE='+DGSTUDY/erpstudydb/spfileerpstudydb.ora'
lock_sga=false
SQL> startup
ORACLE instance started.
啟動後,可以重新設定scope=spfile的參數,再刪除pfile裡後加的資訊即可