Logical Standby中為什麼要求表中資料的唯一性約束
邏輯standby與primary的資料庫同步是透過sql應用實現,SQL應用轉換的SQL語句在執行時,對於insert還好,對於update,delete操作則必須能夠唯一定位到資料庫待更新的那條記錄。 如果primary庫中表設定不當,可能就無法確認唯一條件。 邏輯standby 邏輯上與primary資料庫相同,物理上可能與primary資料庫存在很大差異(比如rowid, 資料塊number,檔案佔用空間,大小 等), 邏輯standby的物理結構與primary是不相同的(即使初始邏輯standby是透過primary的備份建立),因此想透過rowid 更新顯然是不行的,不能再將rowid做為唯一條件 。
如何確保primary庫中各表的行可被唯一標識
Oracle 透過主鍵、唯一索引/約束補充日誌(supplemental logging)來確定待更新邏輯standby庫中的行。當資料庫啟用了補充日誌(supplemental logging),每一條update語句寫redo的時候會附加列值唯一資訊,比如:
v 如果表定義了主鍵,則主鍵值會隨同被更新列一起做為update語句的一部分,以便執行時區別哪些列應該被更新。
v 如果沒有主鍵,則非空的唯一索引/約束會隨同被更新列做為update語句的一部分,以便執行時區分哪些列應該被更新,如果該表有多個唯一索引/約束,則oracle自動選擇最短的那個。
v 如果表即無主鍵,也沒有定義唯一索引/約束,所有可定長度的列連同被更新列作為update語句的一部分。更明確的話,可定長度的列是指那些除:long,lob,long raw,object type,collection型別外的列。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-614710/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為什麼在資料倉儲中很少使用主外來鍵約束
- 唯一性約束和唯一性索引的區別索引
- [資料庫]資料庫中為什麼不推薦使用外來鍵約束資料庫
- Android約束佈局到底為什麼香?Android
- alter database recover to logical standby xxx 很長時間,為什麼Database
- Logical Standby中Job的處理
- 查詢(看)表的主鍵、外來鍵、唯一性約束和索引索引
- C#中泛型約束(where)是什麼?C#泛型
- ORACLE: 查詢(看)表的主鍵、外來鍵、唯一性約束和索引Oracle索引
- 資料庫約束 主鍵-唯一性-Check-外來鍵資料庫
- 物理Standby資料庫及邏輯Standby資料庫(Physical Standby & Logical Standby)資料庫
- oracle中的約束Oracle
- 練習:NICK方案中PurchaseOrder新增CHECK型別的約束,要求ReceivedDate >= PODate型別
- 建立 Logical Standby DatabaseDatabase
- manage logical standby databaseDatabase
- DataGuard:Logical Standby Switchover
- 如何在ORACLE中修改表的約束條件啊Oracle
- 主鍵,唯一性約束,不同session間未提交事務中的爭議性資料引起的問題。Session
- 【CONSTRAINT】具有唯一性約束的列是否可以插入空值AI
- SQL Server 資料表程式碼建立約束SQLServer
- 機器學習 # 為什麼機器學習要求資料是獨立同分布的?機器學習
- 啟用約束時使用exceptions表來跟蹤不符合約束的資料並修正Exception
- 為什麼社交網路中資料翻頁技術複雜
- DataGuard:Logical Standby FailoverAI
- 監控Logical standby databaseDatabase
- Logical Standby Database的配置步驟.Database
- Logical Standby的維護操作_SKIP
- 【MySQL】批量刪除mysql中資料庫中的表MySql資料庫
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- MySQL——表的約束,資料型別,增刪查改MySql資料型別
- 5_MySQL 表的欄位約束MySql
- 在 SQL Server 中,建立表時可以直接為欄位新增唯一約束(UNIQUE)SQLServer
- Oracle DG建立Logical Standby DatabaseOracleDatabase
- CHECK約束中的NULL條件Null
- 查詢oracle表的資訊(表,欄位,約束,索引)Oracle索引
- [求助][資料庫]表間約束的刪除完整性?資料庫
- 請問一下為什麼在hibernate中資料我更新不掉?
- SQLite語句(一):表的操作和約束SQLite