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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- 【epoll問題】EPOLLRDHUP使用導致無法接受資料
- Oracle日常問題-資料庫無法啟動(案例二)Oracle資料庫
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- 重置資料庫密碼後導致網站無法訪問資料庫密碼網站
- SQL Server 因設定最大記憶體過小導致無法啟動SQLServer記憶體
- 記一次ORA-01102導致資料庫例項無法啟動案例資料庫
- 【ASM】RAC19C因引數設定不當,asm無法啟動ASM
- 懷疑私網網路卡多播問題導致crs無法正常啟動
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- ant design 中,使用dva/fetch 設定導致無法從後臺匯出excel的問題Excel
- 在settings加入AUTHENTICATION_BACKENDS設定導致root使用者無法登入問題
- MYSQL資料庫服務無法啟動MySql資料庫
- 【SSL】MAC電腦域名無法解析-啟用IPV6設定導致Mac
- 使用資料庫處理併發可能導致的問題資料庫
- 【北亞資料恢復】異常斷電導致linux伺服器無法啟動,資料庫損壞的資料恢復資料恢復Linux伺服器資料庫
- 【案例】Oracle報錯ORA-01194 ORA-01110 由於資料庫SCN不一致導致無法啟動Oracle資料庫
- Oracle資料傾斜導致的問題-無繫結變數Oracle變數
- oracle兩節點RAC,由於gipc導致某節點crs無法啟動問題分析Oracle
- ORACLE DSG資料同步軟體程式導致資料庫無法正常關閉Oracle資料庫
- 子div設定float後會導致父div無法自動撐開
- PostgreSQL 字符集烏龍導致資料查詢排序的問題,與 MySQL 穩定 "PG不穩定"排序MySql
- Electron安裝過程深入解析(讀完此文解決Electron安裝失敗導致的無法啟動,無法打包的問題)
- 伺服器意外斷電導致無法重啟資料恢復伺服器資料恢復
- 神奇的DEBUG:因為異常導致MongoDB容器無法啟動MongoDB
- 因為跨域問題導致的無法讀取 response header跨域Header
- 解決ASM無法啟動問題ASM
- Oracle sysman.mgmt_jobs導致資料庫自動重啟Oracle資料庫
- DevExpress 的LayoutControl控制元件導致資源無法釋放的問題處理devExpress控制元件
- IDEA無法連線docker中的資料庫的問題IdeaDocker資料庫
- @Transactional開啟事務導致AbstractRoutingDataSource動態資料來源無法切換的解決方案
- 修復iOS 10不彈出是否允許xxx訪問資料導致app無法聯網的bugiOSAPP
- LightDB/Postgresql 記錄客戶端啟動版本問題導致啟動失敗問題SQL客戶端
- file-max設定過小導致oracle資料庫hang住Oracle資料庫
- SAP WM 因Layout設定不對導致LX02報表查不到庫存資料
- “alter database switchover to xx“過程不當導致的primary-primary 雙主問題Database
- 【linux】【docker】Docker預設網段配置導致無法訪問LinuxDocker
- asm磁碟組依賴導致資料庫自啟動報錯ASM資料庫
- Oracle Haip無法啟動問題學習OracleAI