達夢數據庫運維常用視圖



零、系統信息

select * from v$systeminfo;

 

 

一、數據字典相關

這個數據字典表可以查詢數據庫中所有的對象,通過where中的type列和subtype$可以做過濾,比如通過以下sql可以查詢所有用戶自創建的表:

select * from SYS.SYSOBJECTS where subtype$ = 'UTAB';

(SELECT * FROM ALL_TABLES;當然也可以通過這個視圖查詢,類似視圖還有all_users/all_views/all_objects等等;)
(這兩個不用+v$)
這兩個一樣,主要排查數據字典緩沖區的信息
SELECT * FROM V$DB_CACHE SELECT * FROM V$DICT_CACHE 這兩個一樣,主要是排查數據字典的所存的系統對象的信息: select * from V$DICT_CACHE_ITEM where type = 'TABLE'; SELECT * FROM V$DB_OBJECT_CACHE WHERE TYPE = 'TABLE';

 

 二、數據庫參數相關

select * from v$dm_INI;

 

 三、許可證及版本相關

select * from V$license;
select * from v$version;  #數據庫服務器版本
select id_code;

四、日志相關

DM SERVER 的 REDO 日志用於存儲被修改數據的新值,包括事務對數據文件和回滾段的修改(就是說只要數據發生DML操作就會被記錄在redo日志lsn就會改變,即時后面rollback也會被記錄)。
REDO 日志每次被修改以后,都會自動生成一個新的日志序列值 LSN(Log SequenceNumber)。LSN 取值范圍 0~正無窮大,新建的庫 LSN 為 0,以后日志每被寫入一次,LSN值增加 1。
 
 

很多時候,主備機的lsn因為網絡問題會導致不一致,導致的現象就是數據庫在執行任何sql時都會不定時的卡頓個幾秒或十幾秒然后又好了,原因是故障處理備機lsn要追趕主機lsn。在此時需要檢查一下兩台服務器日志的lsn,可以通過如下方式:

select * from V$RLOG;

 

五、會話相關

觀察目前服務器有多少個會話連接,是否已經超過ini參數中max_sessions的限制

select * from v$sessions

 

 

六、事務和檢查點相關

觀察事務阻塞和死鎖;

阻塞:相同數據的並發操作是主因,比如一個事務在操作這個數據時,需要等待另外一個先操作這個數據的事務commit后,才可以成功操作數據不然就一直等待。

select * from v$trx;
select * from V$TRXWAIT   
select * from v$lock;
select * from V$DEADLOCK_HISTORY

 

select * from V$CKPT  #當前檢查點信息
select * from V$CKPT_HISTORY  #歷史檢查點的信息

 

七、數據庫進程與線程

select * from v$process; #查看當前進程信息
select * from v$threads;#查看當前線程信息
  select * from V$LATCHES; #查看線程等待信息,可以配合事務等待一起用

 

 

 

 

 

 

 

 

 

 

 

和實時歸檔即時歸檔的區別在於,實時即時歸檔不需要配置遠程服 務器的歸檔目錄,而遠程歸檔需要在 dmarch.ini 中配置。
自我感覺,實時即時歸檔偏向於發送到遠程服務器,然后讓遠程服 務器重做(主備),而遠程歸檔偏向於把自己的這份歸檔發送到遠 程服務器讓每一個遠程服務器都有整個系統的完整 rredo 日志( DSC

 

產生檢查點的幾種情形:
1. 日志即將滿,自動產生檢查點,刷盤日志和數據,然后可以便清空部 redo 日志特出空間存后面的 redo 日志,以此實現聯機日志文件的輪詢 使用。
2.dm.ini 參數設置的 ckpt interval 時間到了,調度線程產生檢查點
3.ckpt rlog size 參數,設置得日志空間大小以達到,則產生檢查點
4.ckpt dirty pages 參數,設置得數據臟頁達到目標數后產生檢查點 刷盤。
5.服務器正常啟動和關閉時也會產生檢查點;數據庫 服務器為什么啟 動時要產生檢查 點? 就是如果上次服 務器異常關閉的 話可能有些數據 還沒刷盤,在本 次啟動時產生檢 查點通過redo日 志把數據刷盤;數據庫服務器正常關閉時產生檢查點自然就是要把所有的日志和臟數據頁刷盤。

 

 

 

檢查點lsn和redo日志文件lsn有什么 區別:

檢查點的lsn的到了5種情況下才會產生,然后活動事務對數據任何修改(包括rollback,commit語句)都會產生file lsn。

 

 

檢查點和commit的區別:

1、commit可以保證日志刷盤但臟數據頁不刷盤;
 
事務運行時,會把生成的 REDO 日志保留在日志緩沖區中,當事務被提交之后,DM 數據庫進行以下操作:
  • 將事務任何更改的記錄寫入日志文件(即通知 日志FLUSH 線程進行日志刷盤)並最終在合適的時機(如檢查點、緩沖區滿)寫入到數據文件;
  • 釋放事務上的所有鎖,將事務標記為完成;
  • 返回提交成功消息給請求者。

所以COMMIT操作就不一定保證事務對DB的修改寫到磁盤即臟數據頁刷盤,但可以保證commit可以保證日志刷盤。

2、檢查點時刻系統將緩沖區中的日志和臟數據頁都刷盤

在系統恢復時,那些已經執行了COMMIT操作但修改仍留在內存緩沖區的事務需要做恢復工作,可以直接重做redo日志來恢復。具體原理如下:由於在事務執行時,會在日志中記下事務的開始標記、結束標志以及事務對DB的每一個修改,所以在系統恢復時,直接在熱動日志中,通過檢查故障點lsn(即系統恢復時啟動的當前檢查點)與最近一個檢查點lsn(即上一個檢查點)之間,哪些事務執行了COMMIT操作(這些事務應重做),哪些事務還未結束(這些事務應撤銷)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM