memory_target設定不當導致資料庫無法啟動的問題
今天在做一個問題排查的時候碰到了另外一個有些“奇怪的”問題。
我們在測試庫中已經禁用了SGA自動儲存管理,結果在spfile檔案裡丟掉了shared_pool_size的配置
測試環境的引數類似下面的樣子
sga_max_size big integer 12000M
sga_target big integer 0
shared_pool_size big integer 0
db_cache_size big integer 6G
pga_aggregate_target big integer 3147483648
這種配置應該是有問題的,把shared_pool_size的部分給丟掉了。結果檢視當前測試庫的情況,發現shared_pool多多少少的給了2G。
COMPONENT CURRENT_M MIN_M MAX_M SPECCIFIED_M LAST_OPER LAST_OPER_TYP GRANULE_M
------------------------------ ---------- ---------- ---------- ------------ --------- ------------- ----------
shared pool 2000 992 2000 2000 MANUAL GROW 16
large pool 304 304 512 304 DEFERRED SHRINK 16
java pool 512 512 512 304 STATIC 16
streams pool 0 0 0 0 STATIC 16
DEFAULT buffer cache 6224 6144 6352 6144 MANUAL SHRINK 16
KEEP buffer cache 0 0 0 0 STATIC 16
RECYCLE buffer cache 0 0 0 0 STATIC 16
DEFAULT 2K buffer cache 0 0 0 0 STATIC 16
DEFAULT 4K buffer cache 0 0 0 0 STATIC 16
DEFAULT 8K buffer cache 0 0 0 0 STATIC 16
DEFAULT 16K buffer cache 0 0 0 0 STATIC 16
DEFAULT 32K buffer cache 0 0 0 0 STATIC 16
Shared IO Pool 0 0 0 0 STATIC 16
如果問題到這裡,可能就告一段落了。
但是我又認真看了一下,發現還是有問題。SGA有12G左右,分給shared_pool 2G,buffer_cache 6G,加上large_pool,java_pool的還不到9G,剩下的部分到哪去了?
從總體的sga的概覽來看
SQL> show sga
Total System Global Area 1.1742E+10 bytes
Fixed Size 2251264 bytes
Variable Size 5200938496 bytes --這個部分還是有很大的差別。按照目前的shared_pool+large_pool+java_pool+stream_pool<3G,剩下的2G可能就是最後的可能,沒有分配的記憶體空間。
Database Buffers 6526337024 bytes
Redo Buffers 12193792 bytes
帶著這種疑問來查問題,可能你看到很多細節都是潛在的問題。
首先來看程式的情況。結果就發現按照常理程式的owner應該顯示是使用者名稱,但是現在卻是程式號。
xxxxxx 6545 25419 0 12:44 pts/7 00:00:00 grep smon
3068 21040 1 0 Oct22 ? 00:01:21 ora_smon_TESTCUS1
最後確認了下,原來如果使用者名稱超出8位的時候就會顯示為程式號,不是問題。
最後在spfile中先寫入shared_pool_size=4G,然後重啟資料庫的時候,就報錯了。
SQL> startup
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 13920M
SQL>
從開始查問題的時候就沒有注意到這個引數,memory_target是在11g引入的。算是sga自動儲存管理的加強版本,能夠自動管理sga和pga。
如果大體瞭解了memory_target和報錯的部分,可能一下子就明朗了。
因為當前的Memory_target的值就是12G和sga_max_size是一致的。
這個時候memory_target是12G,而同時pga是3G,那麼分配給sga的部分就只有不到9G,這樣的情況就相當於設定了sga_max_size=9G
這個時候重新分析下報錯資訊。我們把shared_pool從2G調整到了4G。這樣的話memory_target的大小按照配置應該需要
shared_pool_size(4G)+db_cache(6G)+stream pool(0)+large_pool(300M)+java_pool(300M)+pga(3G)=13600M左右,和報錯的部分基本符合。所以到此為止就可以判定是memory_target的設定不當導致了這個問題。
memory_target的設定還是需要重啟資料庫例項的。重啟後檢視就沒有問題了。
看來很多問題都在一些細節上注意,這個memory_target從一開始就沒有注意到,根據客戶dba的反饋,他們是直接使用dbca來建的庫,可能就是這個時候引入了這個新特性,然後在後期做了buffer size的變更。才發現這個很潛在的問題。
我們在測試庫中已經禁用了SGA自動儲存管理,結果在spfile檔案裡丟掉了shared_pool_size的配置
測試環境的引數類似下面的樣子
sga_max_size big integer 12000M
sga_target big integer 0
shared_pool_size big integer 0
db_cache_size big integer 6G
pga_aggregate_target big integer 3147483648
這種配置應該是有問題的,把shared_pool_size的部分給丟掉了。結果檢視當前測試庫的情況,發現shared_pool多多少少的給了2G。
COMPONENT CURRENT_M MIN_M MAX_M SPECCIFIED_M LAST_OPER LAST_OPER_TYP GRANULE_M
------------------------------ ---------- ---------- ---------- ------------ --------- ------------- ----------
shared pool 2000 992 2000 2000 MANUAL GROW 16
large pool 304 304 512 304 DEFERRED SHRINK 16
java pool 512 512 512 304 STATIC 16
streams pool 0 0 0 0 STATIC 16
DEFAULT buffer cache 6224 6144 6352 6144 MANUAL SHRINK 16
KEEP buffer cache 0 0 0 0 STATIC 16
RECYCLE buffer cache 0 0 0 0 STATIC 16
DEFAULT 2K buffer cache 0 0 0 0 STATIC 16
DEFAULT 4K buffer cache 0 0 0 0 STATIC 16
DEFAULT 8K buffer cache 0 0 0 0 STATIC 16
DEFAULT 16K buffer cache 0 0 0 0 STATIC 16
DEFAULT 32K buffer cache 0 0 0 0 STATIC 16
Shared IO Pool 0 0 0 0 STATIC 16
如果問題到這裡,可能就告一段落了。
但是我又認真看了一下,發現還是有問題。SGA有12G左右,分給shared_pool 2G,buffer_cache 6G,加上large_pool,java_pool的還不到9G,剩下的部分到哪去了?
從總體的sga的概覽來看
SQL> show sga
Total System Global Area 1.1742E+10 bytes
Fixed Size 2251264 bytes
Variable Size 5200938496 bytes --這個部分還是有很大的差別。按照目前的shared_pool+large_pool+java_pool+stream_pool<3G,剩下的2G可能就是最後的可能,沒有分配的記憶體空間。
Database Buffers 6526337024 bytes
Redo Buffers 12193792 bytes
帶著這種疑問來查問題,可能你看到很多細節都是潛在的問題。
首先來看程式的情況。結果就發現按照常理程式的owner應該顯示是使用者名稱,但是現在卻是程式號。
xxxxxx 6545 25419 0 12:44 pts/7 00:00:00 grep smon
3068 21040 1 0 Oct22 ? 00:01:21 ora_smon_TESTCUS1
最後確認了下,原來如果使用者名稱超出8位的時候就會顯示為程式號,不是問題。
最後在spfile中先寫入shared_pool_size=4G,然後重啟資料庫的時候,就報錯了。
SQL> startup
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 13920M
SQL>
從開始查問題的時候就沒有注意到這個引數,memory_target是在11g引入的。算是sga自動儲存管理的加強版本,能夠自動管理sga和pga。
如果大體瞭解了memory_target和報錯的部分,可能一下子就明朗了。
因為當前的Memory_target的值就是12G和sga_max_size是一致的。
這個時候memory_target是12G,而同時pga是3G,那麼分配給sga的部分就只有不到9G,這樣的情況就相當於設定了sga_max_size=9G
這個時候重新分析下報錯資訊。我們把shared_pool從2G調整到了4G。這樣的話memory_target的大小按照配置應該需要
shared_pool_size(4G)+db_cache(6G)+stream pool(0)+large_pool(300M)+java_pool(300M)+pga(3G)=13600M左右,和報錯的部分基本符合。所以到此為止就可以判定是memory_target的設定不當導致了這個問題。
memory_target的設定還是需要重啟資料庫例項的。重啟後檢視就沒有問題了。
看來很多問題都在一些細節上注意,這個memory_target從一開始就沒有注意到,根據客戶dba的反饋,他們是直接使用dbca來建的庫,可能就是這個時候引入了這個新特性,然後在後期做了buffer size的變更。才發現這個很潛在的問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1346979/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解決memory_target設定過小導致不能啟動資料庫的問題資料庫
- 歸檔問題導致的資料庫無法啟動資料庫
- oracle SGA設定過大導致資料庫無法啟動Oracle資料庫
- LD_LIBRARY_PATH設定不當導致無法登陸和啟動oracleOracle
- 又一例SPFILE設定錯誤導致資料庫無法啟動資料庫
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- HA異常導致oracle資料庫無法啟動Oracle資料庫
- 11gRAC許可權問題導致的叢集及資料庫無法啟動資料庫
- 使用impdp不當導致的資料丟失問題
- 修改SQLNET.ORA導致資料庫無法啟動SQL資料庫
- 解決hyper v導致docker無法啟動問題Docker
- Linux下共享庫問題導致無法啟動SQLPLUS的問題解決LinuxSQL
- 非歸檔模式下異常斷電導致的資料庫無法啟動的問題修復模式資料庫
- 資料庫shutdown之後無法啟動的問題資料庫
- jdk版本導致tomcat,eclipse無法啟動的問題JDKTomcatEclipse
- 【DataGuard】由於備庫引數設定不當導致資料檔案無法新增的故障分析
- 【epoll問題】EPOLLRDHUP使用導致無法接受資料
- 【DataGuard】由於備庫引數設定不當導致資料檔案無法新增的故障分析(轉)
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- Oracle日常問題-資料庫無法啟動(案例二)Oracle資料庫
- Windows 下處理資料庫無法啟動問題Windows資料庫
- 掉電無法啟動資料庫問題解決資料庫
- SPFILE 錯誤導致資料庫無法啟動(ORA-01565)資料庫
- 並行設定不當導致資料處理速度變慢並行
- 資料庫統計資訊不更新導致的效能問題資料庫
- mongoDB因root啟動關閉資料庫導致mongo普通使用者無法啟動MongoDB資料庫
- 【問題處理】因ASM磁碟組空間不足導致資料庫例項無法啟動的故障處理ASM資料庫
- spfile誤修改導致資料庫無法啟動的另一種恢復方法資料庫
- ORACLE的歸檔空間滿導致的監聽故障資料庫無法啟動Oracle資料庫
- 資料庫預設安裝配置導致的問題資料庫
- 如何解決WAS的JAVA虛擬機器引數設定錯誤,導致控制檯無法啟動的問題Java虛擬機
- SQL Server 因設定最大記憶體過小導致無法啟動SQLServer記憶體
- 【ASM】RAC19C因引數設定不當,asm無法啟動ASM
- 由hugepage設定導致的資料庫事故資料庫
- 一條sql語句導致的資料庫當機問題及分析SQL資料庫
- 一條sql語句“導致”的資料庫當機問題及分析SQL資料庫
- 資料庫突然當機無法open的問題及解決資料庫
- 【故障恢復】因spfile修改錯誤導致資料庫無法啟動的恢復方法資料庫