主備資料庫狀態手工比對(一)
具有備庫是所有生產系統的必備要求之一,不管使用什麼技術實現的主備庫資料同步,在做主備庫切換前手工比對一下各物件的一致狀態是必要步驟,下面分享筆者做狀態比對所使用的一些方法,供讀者參考和選擇。
1.建立目標端到源端的dblink,名稱為gsht69
比對原端物件與目標端物件數
select a.owner,a.object_type,a.cnt src_cnt,decode(b.cnt,null,0,b.cnt) tgt_cnt from
(select owner,object_type,count(*) cnt from dba_objects@gsht69 group by owner,object_type) a
left join
(select owner,object_type,count(*) cnt from dba_objects group by owner,object_type) b
on a.owner=b.owner and a.object_type=b.object_type
2.如果哪裡不同可以用下面的語句進行比較出來,注意要 雙項比對
select owner,object_name from dba_objects@gsht69
where object_name not like 'BIN$%'
and object_type not like '%PARTITION%'
and generated='N'
and owner in ('TRADE')
and object_type='INDEX'
minus
select owner,object_name from dba_objects
where object_name not like 'BIN$%'
and object_type not like '%PARTITION%'
and generated='N'
and owner in ('TRADE')
and object_type='INDEX'
3. 比對主鍵和外來鍵的約束個數
比對源端和目標端主鍵和外來鍵的約束個數是否一致。
select a.owner,a.constraint_type,a.cnt src_cnt,decode(b.cnt,null,0,b.cnt) tgt_cnt from
(select owner,constraint_type,count(*) cnt from dba_constraints@gsht69 group by owner,constraint_type) a
left join
(select owner,constraint_type,count(*) cnt from dba_constraints group by owner,constraint_type) b
on a.owner=b.owner and a.constraint_type=b.constraint_type
where a.owner in ('TRADE') and a.constraint_type in ('P','R')
--and a.cnt<>decode(b.cnt,null,0,b.cnt);
如若有不同,可以用下面語句進行查詢比對哪些不同
select table_name,constraint_name,CONSTRAINT_TYPE from dba_constraints@gsht69
where owner='TRADE'
--and constraint_type='C'
--and constraint_name not like 'BIN$%'
and constraint_name not like 'SYS%'
minus
select table_name,constraint_name,CONSTRAINT_TYPE from dba_constraints
where owner='TRADE'
--and constraint_type='C'
--and constraint_name not like 'BIN$%'
and constraint_name not like 'SYS%'
4. 比對物件狀態
比對源端和目標端同一使用者下的所有物件狀態是否一致。
select owner, object_name, object_type, status
from dba_objects
where object_name in (select object_name
from dba_objects
where status = 'INVALID'
and owner in ('TRADE'))
and object_name not in (select object_name
from dba_objects@gsht69
where status = 'INVALID'
and owner in ('TRADE'))
and status = 'INVALID'
order by owner, object_type, object_name;
5. 比對序列值
比對源端和目標端序列值,檢查源端是否有比目標端大的 sequence 。如果目標端 sequence 的 last_number 不小於源端的值,則資料正確。
select a.sequence_owner,a.sequence_name,a.last_number src_last_number,b.last_number tgt_last_number from
(select SEQUENCE_OWNER,SEQUENCE_NAME,LAST_NUMBER from dba_sequences@gsht69) a
left join
(select SEQUENCE_OWNER,SEQUENCE_NAME,LAST_NUMBER from dba_sequences) b
on a.sequence_owner=b.sequence_owner and a.sequence_name=b.sequence_name
where a.sequence_owner in ('TRADE') and a.last_number > b.last_number
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994536/viewspace-2756887/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 主備資料庫狀態手工比對(二)資料庫
- 【YashanDB資料庫】yasboot查詢資料庫狀態時顯示資料庫狀態為off資料庫boot
- React開發日記-React Hook/Mobx 資料狀態管理對比ReactHook
- openguass 資料庫狀態查詢資料庫
- 手寫一個業務資料比對庫
- Oracle DG資料庫狀態轉換Oracle資料庫
- 關聯式資料庫與文件資料庫對比資料庫
- Oracle、NoSQL和NewSQL 資料庫技術對比(一)OracleSQL資料庫
- 2.4.10 Step 9:手工建立資料庫資料庫
- 達夢8資料庫的狀態模式資料庫模式
- 3.4.2 將資料庫置於 Quiesced 狀態資料庫UI
- oracle Mysql PostgreSQL 資料庫的對比OracleMySql資料庫
- GBase8s 資料庫檢視狀態資料庫
- Polardb資料庫掛庫後,如何恢復主備關係資料庫
- JavaScript狀態資料JavaScript
- 【mysql】mysql的資料庫主從(一主一從)MySql資料庫
- 記憶體資料庫解析與主流產品對比(一)記憶體資料庫
- 在DG備庫備份資料庫並恢復到一個主機上,報錯RMAN-06820資料庫
- 資料庫訪問幾種方式對比資料庫
- 資料庫選型比對 Oracle vs sqlserver資料庫OracleSQLServer
- 幾款分散式資料庫的對比分散式資料庫
- MySQL資料庫資料一致性比對的方案的探討MySql資料庫
- 達夢資料庫例項的狀態和模式資料庫模式
- 在 Laravel 的資料庫模型中使用狀態模式Laravel資料庫模型模式
- 使用MegaCli工具檢視Raid磁碟陣列狀態[主站備]AI陣列
- 理解資料狀態管理
- 對“主資料”的一點吐槽
- Oracle和MySQL資料庫CTAS等操作對比OracleMySql資料庫
- Oracle、NoSQL和NewSQL 資料庫技術對比OracleSQL資料庫
- PostgreSQL 資料庫結構(DDL)比對工具 pgquarrelSQL資料庫
- Vuex 單狀態庫 與 多模組狀態庫Vue
- 達夢資料庫手工恢復相關命令資料庫
- openguass 3.1.0 資料庫啟動,關閉,狀態檢查資料庫
- sqlsever處理資料庫的恢復掛起狀態SQL資料庫
- Oracle資料庫啟動過程及狀態詳解Oracle資料庫
- Fabric 1.0原始碼分析(19) Ledger #statedb(狀態資料庫)原始碼資料庫
- 什麼?MySQL在從庫讀到了比主庫更加新的資料?MySql
- java 如何從零實現一個資料庫差異對比工具?Java資料庫