修改資料庫的ORACLE的SGA和PGA的值

mengzhaoliang發表於2009-04-07

/*
*時間:2009-04-07  Monday
*環境:Windows 2003   Oracle10g10.2.0.1.0
*標題:修改資料庫的ORACLE的SGA和PGA的值
*/

1、在用客戶端連線:
   用plsql連線資料庫時出現“ORA-12518:TNS:監聽程式無法分發客戶機連線”

 

2、檢視了alert_SID.log日誌:

Doing block recovery for file 3 block 35992
Sat Apr 04 07:35:14 2009
Errors in file e:\oracle\product\10.2.0\admin\xboms\bdump\xboms_pmon_3920.trc:
ORA-04030: 在嘗試分配 8389132 位元組 (pga heap,redo read buffer) 時程式記憶體不足

Sat Apr 04 07:35:23 2009
Process startup failed, error stack:
Sat Apr 04 07:35:23 2009
Errors in file e:\oracle\product\10.2.0\admin\xboms\bdump\xboms_psp0_3408.trc:
ORA-27300: OS 系統相關操作: spcdr:9261:4200 失敗, 狀態為: 997
ORA-27301: OS 故障訊息: 重疊 I/O 操作在進行中。
ORA-27302: 錯誤發生在: skgpspawn

3、$ORACLE_HOME/network/log/listener.log日誌
03-4月 -2009 22:10:40 開始就報下面的錯誤:
04-4月 -2009 07:36:19 * ping * 0
04-4月 -2009 07:36:19 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=SYSTEM))(COMMAND=status)

(ARGUMENTS=64)(SERVICE=(ADDRESS=(PROTOCOL=TCP)(HOST=erp1)(PORT=1568)))(VERSION=169869568)) * status * 0
04-4月 -2009 07:36:28 * (CONNECT_DATA=(SID=XBOMS)(CID=(PROGRAM=E:\oracle\product\10.2.0\db_1\perl\5.8.3

\bin\MSWin32-x86-multi-thread\perl.exe)(HOST=ERP1)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)

(HOST=10.142.80.40)(PORT=2287)) * establish * XBOMS * 12518
TNS-12518: TNS: 監聽程式無法分發客戶機連線
 TNS-12560: TNS: 協議介面卡錯誤
  TNS-00530: 協議介面卡錯誤
   32-bit Windows Error: 233: Unknown error


對資料庫做個AWR(自動負載資料庫)報告和ADDM(自動資料庫診斷監聽)報告,addm要求增加資料庫的SGA

伺服器的CPU是8個2.00GHz,8GB記憶體。發現系統給Oracle的記憶體太小
SQL> show parameter spfile;
SQL> show parameter sga

SQL> show parameter pga

spfile檔案一般在windows的$ORACLE_HOME/dbs/目錄下

SQL> create pfile from spfile;
剛建立的pfile檔案一般在windows的$ORACLE_HOME/database/目錄下,init$ORACLE_SID.ora

修改init$ORACLE_SID.ora檔案中的*.pga_aggregate_target=62914560  (位元組:60M*1024*1024)
和*.sga_target=209715200  (位元組200M*1024*1024) 的值

然後
SQL> create spfile from pfile;

(有些windows系統生成的spfile檔案在$ORACLE_HOME/database/目錄下)

在關閉資料庫之前最好備份一些資料庫,如果SGA大小配置不當,會遇到各種不能開啟資料的問題。
關閉資料庫:
SQL>shutdown immediate

啟動資料庫
SQL>startup

檢查sga和pga的值
SQL> show parameter sga

SQL> show parameter pga

修改成功!


注:
ORA-04030: 在嘗試分配 8389132 位元組 (pga heap,redo read buffer) 時程式記憶體不足

ORA-04030:out of process memory when trying to allocate string bytes

下面分析了ORA-04030的出現原因及簡單解決方法


ORA-04030出現的基本都是過多的使用memory造成的

Oracle process使用的記憶體數量是有一定限制的:

對於32 BIT的Windows系統,有SGA 1.7G限制
某些OS系統本身也有一些記憶體引數限制

 

 

 


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-586517/,如需轉載,請註明出處,否則將追究法律責任。

相關文章