ORA-27300 ORA-27301

zhouwf0726發表於2019-04-01

SQL> startup nomount
ORA-27302: failure occurred at: skgpwreset1
ORA-27303: additional information: invalid shared ctx
ORA-27146: post/wait initialization failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates


XXXXXX的Oracle引數調整

1 概述

XXXXXX使用者SUN平臺HACMP環境下ORACLE軟體安裝部署完畢,需要優化關鍵資料庫系統引數並建立使用者、表空間部署應用。

2 問題描述

XXXXXX使用者SUN平臺HACMP環境下ORACLE軟體安裝部署完畢,需要建立使用者、表空間等並調整資料庫系統引數,和現場的同事對業務需求、使用者數量等進行分析,最後整理出以下指令碼並執行:

--建立表空間

CREATE TABLESPACE BPM_DATA LOGGING DATAFILE '/oracle/oracle/oradata/cmdidb/BPM_DATA.dbf' SIZE 2048M

AUTOEXTEND ON NEXT 20480K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

CREATE TABLESPACE BPM_INDEX LOGGING DATAFILE '/oracle/oracle/oradata/cmdidb/BPM_INDEX.dbf' SIZE 2048M

AUTOEXTEND ON NEXT 20480K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

--建立臨時表空間

CREATE TEMPORARY TABLESPACE BPM_TEMP TEMPFILE '/oracle/oracle/oradata/cmdidb/BPM_TEMP.dbf' SIZE 1024M

AUTOEXTEND ON NEXT 20480K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

--建立使用者

CREATE USER BPM50 PROFILE DEFAULT IDENTIFIED BY bpmtest DEFAULT TABLESPACE BPM_DATA

TEMPORARY TABLESPACE BPM_TEMP ACCOUNT UNLOCK;

--授權使用者

GRANT CONNECT,EXP_FULL_DATABASE,IMP_FULL_DATABASE,RESOURCE TO BPM50;

--修改資料庫系統引數

alter system set pga_aggregate_target=640m scope=spfile;

alter system set db_cache_size=1440m scope=spfile;

alter system set shared_pool_size=800m scope=spfile;

alter system set java_pool_size=320m scope=spfile;

alter system set log_buffer=3145728 scope=spfile;

Alter system set open_cursors=1000 scope=spfile;

Alter system set processes=800 scope=spfile;

本來工作到了這裡就該接近尾聲了,但是遇到一個小小的插曲,執行完以上指令碼後,關閉資料庫重新啟動,資料庫無法啟動,報錯如下:

SQL> startup nomount

ORA-27302: failure occurred at: skgpwreset1

ORA-27303: additional information: invalid shared ctx

ORA-27146: post/wait initialization failed

ORA-27300: OS system dependent operation:semget failed with status: 28

ORA-27301: OS failure message: No space left on device

ORA-27302: failure occurred at: sskgpcreates

3 分析

這些錯誤大部分和作業系統有關,ORACLE啟動的時候檢查作業系統的各項配置是否滿足需求,如磁碟空間、核心引數等能否滿足自己的需要,回頭看看我們做過的操作:建立表空間、臨時表空間、修改系統引數,然後分析上面個錯誤和那些操作有關。

ORA-27301: OS failure message: No space left on device

建立表空間、臨時表空間可能引起該錯誤,df檢查磁碟空間472G可用?懦??/span>錯誤。

ORA-27300: OS system dependent operation:semget failed with status

無法獲得作業系統的訊號量。訊號量相當於OS的記憶體鎖,類似於oracle中的latch,每個程式要獲取作業系統記憶體時(不是PGASGA),需要先獲取到訊號量才能申請內存。為了能保證每個程式不被阻塞,所以最好每個程式能分配到2個訊號量。由於我們修改了oracleprocesses引數,oracle安裝建議這個引數一般設定為processes*2+15比較保險的。檢查該引數發現為300多,調整該引數為set semsys:seminfo_semmns=1024資料庫正常啟動。感謝fuyuncat幫助詳細分析訊號量的作用。

4 總結

建議各位同事以後在各個平臺安裝ORACLE軟體的時候都要先按照ORACLE安裝文件先把作業系統的各個核心引數(最大共享記憶體段、訊號量等)進行相應的調整。然後再開始安裝ORACLE。

5 附錄

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