[20230307]如何知道啟用IMU.txt
[20230307]如何知道啟用IMU.txt
--//上個星期對生產系統redo做了一個轉儲,主要是想分析為什麼這套系統每天產生的日誌有點大。
--//我當時認為這套系統單機應該使用開啟IMU。實際上的情況該系統開啟附加日誌,不可能工作在IMU下。
--//那麼如何知道資料庫啟用IMU呢?對於相關知識有點生疏,複習一下。
--//首先有幾種情況oracle不會啟用IMU。
1.rac環境。
2.資料庫開啟flashback。
3.開啟附加日誌。
4.當然一種情況比較特殊就是如果寫滿IMU快取,系統也會切換到傳統模式。
5.當然如果切換日誌,也會導致IMU資訊寫盤。alert會出現Private Strand Flush Not Complete之類的提示。
6.如果執行alter system checkpoint也會導致IMU資訊寫盤,但是我以前遇到的情況是不確定,有時寫有時不寫。
具體細節我一直不是很清楚..
--//如何知道當前資料庫啟用IMU呢,自己做一些總結:
1.環境:
SCOTT@book> @ver1
PORT_STRING VERSION BANNER
------------------- ---------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
2.首先不能簡單透過隱含引數_in_memory_undo確定。
SYS@book> alter database flashback on;
Database altered.
SYS@book> @ hide _in_memory_undo
NAME DESCRIPTION DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE ISSES ISSYS_MOD
--------------- ---------------------------------------------- ------------- ------------- ------------ ----- ---------
_in_memory_undo Make in memory undo for top level transactions TRUE TRUE TRUE TRUE IMMEDIATE
--//我設定資料庫flashback on;,但是_in_memory_undo並不會自動設定false。
--//當然如果你發現_in_memory_undo=false,那麼一定關閉IMU。
3.最簡單方法就是檢視v$sysstat檢視:
select * from v$sysstat where name like '%IMU%';
select name,value from v$sysstat where name like '%commits%';
--//select * from v$sgastat where name='KTI-UNDO';
--//你可以等一小段時間再次執行看看是否變化來確定IMU的啟用。
--//注意如果IMU commits的值有變化說明啟用了IMU,因為資料庫可能在執行過程開啟flashback或者附加日誌.這樣就關閉IMU.
SYS@book> alter database flashback on;
Database altered.
SYS@book> select name,value from v$sysstat where name like '%commits%';
NAME VALUE
------------ -----
user commits 13824
IMU commits 10727
--//執行一些小的dml操作並提交!!.
SYS@book> select name,value from v$sysstat where name like '%commits%';
NAME VALUE
------------ -----
user commits 13826
IMU commits 10727
--//資料庫目前開啟flashback on,IMU commits的值沒有發生了變化!!
SYS@book> alter database flashback off;
Database altered.
SYS@book> select name,value from v$sysstat where name like '%commits%';
NAME VALUE
------------ -----
user commits 13828
IMU commits 10727
--//執行一些小的dml操作並提交!!.
SYS@book> select name,value from v$sysstat where name like '%commits%';
NAME VALUE
------------ -----
user commits 13834
IMU commits 10733
--//可以發現IMU commits的值增加,說明開啟IMU.這樣可以快速判斷.感覺這是最簡單的方法!!
4.其它方法:
$ cat imu.sql
SELECT INDX
,FIRST_BUF_KCRFA
,last_buf_kcrfa
,PNEXT_BUF_KCRFA_CLN nxtbufadr
,NEXT_BUF_NUM_KCRFA_CLN nxtbuf#
,BYTES_IN_BUF_KCRFA_CLN "B/buf"
,PVT_STRAND_STATE_KCRFA_CLN state
,STRAND_NUM_ORDINAL_KCRFA_CLN strand#
,PTR_KCRF_PVT_STRAND stradr
,INDEX_KCRF_PVT_STRAND stridx
,SPACE_KCRF_PVT_STRAND strspc
,TXN_KCRF_PVT_STRAND txn
,TOTAL_BUFS_KCRFA totbufs#
,STRAND_SIZE_KCRFA strsz
FROM X$KCRFSTRAND ;
--//透過查詢X$KCRFSTRAND檢視,如果PTR_KCRF_PVT_STRAND=00(也就是stradr=00),基本可以判斷沒有使用IMU.
$ cat imuz.sql
SELECT
indx
,inst_id
,ktifpno
,ktifpxcb tx_addr
,ktifpupb undo_begin
,ktifpupc undo_cur
,ktifpupe undo_end
,ktifprpb redo_begin
,ktifprpc redo_cur
,ktifprpe redo_end
,TO_NUMBER (ktifpupc, 'XXXXXXXXXXXXXXXX') - TO_NUMBER (ktifpupb, 'XXXXXXXXXXXXXXXX') undo_usage
,TO_NUMBER (ktifpupe, 'XXXXXXXXXXXXXXXX') - TO_NUMBER (ktifpupb, 'XXXXXXXXXXXXXXXX') undo_size
,TO_NUMBER (ktifprpc, 'XXXXXXXXXXXXXXXX') - TO_NUMBER (ktifprpb, 'XXXXXXXXXXXXXXXX') redo_usage
,TO_NUMBER (ktifprpe, 'XXXXXXXXXXXXXXXX') - TO_NUMBER (ktifprpb, 'XXXXXXXXXXXXXXXX') redo_size
,KTIFPPSI
,KTIFPRBS
,KTIFPTCN
,KTIFPFLC
,KTIFPOPC
,ktifptxflg
FROM x$ktifp
where
TO_NUMBER (ktifprpe, 'XXXXXXXXXXXXXXXX') - TO_NUMBER (ktifprpb, 'XXXXXXXXXXXXXXXX') !=0
;
--//如果一個業務繁忙的系統,執行以上有輸出,可以確定啟用IMU,測試環境也很容易模擬,執行一些小的dml不提交,再執行以上命令有
--//輸出,可以確定啟用IMU。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2939164/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP 如何啟用SAP IS-RETAIL?AI
- 如何啟用或禁止SSL證書?
- sigmoid啟用函式如何求導Sigmoid函式求導
- 黑客用漏洞清除債務 這種漏洞如何“早知道”黑客
- 如何透過ZBlogPHP啟用Gzip壓縮?PHP
- 如何開啟 Mac 應用程式防火牆Mac防火牆
- Linux 中如何啟用和禁用網路卡?Linux
- Linux中如何啟用root使用者Linux
- 如何在Safari Mac中啟用暗黑模式?Mac模式
- 你知道如何自動儲存 Spring Boot 應用程式號嗎Spring Boot
- Linux啟用 “啟用 Linux” 水印Linux
- Ubuntu Linux中如何啟用root使用者UbuntuLinux
- 如何在Apple Watch上啟用Taptic Chime功能APPAPT
- 如何免費的讓網站啟用HTTPS網站HTTP
- 大資料應用開發如何入門需要知道這些大資料
- 如何改善應用啟動效能 | Facebook 應用的經驗分享
- Linux怎麼知道服務是否啟動?Linux
- linux遠端工具vnc啟用,linux遠端工具vnc如何啟用,Linux安裝vnc教程。LinuxVNC
- 如何開啟Win10日曆應用_ win10日曆應用開啟教程Win10
- office2010如何啟用?office 2010辦公軟體的安裝教程和啟用方法
- 啟用
- 如何在 Alpine Linux 上啟用或禁用防火牆?Linux防火牆
- windows如何開機自動啟動某些應用?Windows
- 在Mac中如何啟用語音輸入功能?Mac
- 如何在Mac、iPhone和iPad上啟用True Tone?MaciPhoneiPad
- NAS中如何啟用多媒體伺服器?伺服器
- 如何在 Firefox 中啟用 DNS-over-HTTPS(DoH)FirefoxDNSHTTP
- 如何啟用Hibernate慢查詢日誌? -Vlad Mihalcea
- 如何在macOS中啟用標記註釋工具Mac
- 如何在 K3s 中啟用 Traefik Dashborad
- 如何在Firefox中啟用DNS-over-HTTPS(DoH)FirefoxDNSHTTP
- 如何在 Linux 上安裝並啟用 Flatpak 支援?Linux
- 如何啟用或禁用最佳化Mac儲存Mac
- 如何根據角色批量啟用SAP Fiori服務
- 小教程:如何開啟 Mac 應用程式防火牆Mac防火牆
- 如何啟用SAP C4C OData Event Notification
- ghost win10怎麼啟用net3.5_ghost win10如何啟用net3.5Win10
- mindmaster啟用碼|mindmaster啟用金鑰AST