OS環境:windows PC
數據庫版本:oracle 10.0.2.1
這是一次小打小鬧的報錯,原因是幫同事改他自己玩的測試庫sga,原sga_max_size大小為600M,我修改為2G,重啟時報錯。
ORA-27100 shared memory realm already exists
通過查詢官方文檔,解釋該原因是因為windows pc 32位機最大支持分配oracle內存為1.7G,所以導致報錯,這是一次缺少經驗的教訓。
解決案例:
1:SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 568M
sga_target big integer 568M
2:SQL> alter system set sga_max_size=2048m scope=spfile; -將SGA設置為2G
SQL> alter system set sga_target=2048m scope=spfile;
3:SQL> shutdown immediate -重啟數據庫報錯
SQL> startup
ORA-27100 shared memory realm already exists
OSD-00029: ????????????
O/S-Error: (OS 8) ??????????????????????????????
4:SQL> create pfile from spfile; -使用spfile生成pfile,修改參數文件內的以下兩個參數,
將參數調小。
*.sga_max_size=600000000
*.sga_target=600000000
5:SQL> startup pfile='E:/oracle/product/10.2.0/db_1/database/INITorcl.ORA' -這時候啟動
依然報錯,這是因為windows機器需要重啟后臺服務,否則無法生效(郁悶)
ORA-27100 shared memory realm already exists
OSD-00029: ????????????
O/S-Error: (OS 8) ??????????????????????????????
7:找到管理/服務/OracleServiceORCL 重啟
8:SQL> startup pfile='E:/oracle/product/10.2.0/db_1/database/INITorcl.ORA'
ORACLE 例程已經啟動。
Total System Global Area 603979776 bytes
Fixed Size 1250428 bytes
Variable Size 163580804 bytes
Database Buffers 432013312 bytes
Redo Buffers 7135232 bytes
數據庫裝載完畢。
數據庫已經打開。
9:SQL> create spfile from pfile; -根據啟動的pfile生成spfile,下次啟動時候則主動讀取spfile
參數文件
SQL> startup force
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string E:/ORACLE/PRODUCT/10.2.0/DB_1/
DATABASE/SPFILEORCL.ORA
SQL> show parameter sga;
NAME TYPE VALUE
----------------------------------- ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 576M
sga_target big integer 576M