改變複製物件結構對高階複製的影響
今天,接到維護人員的報告,說在一個複製組中,有一個複製物件在兩Site上的表結構不一致,Site A上的表比Site B上的表多一個欄位。而且比較奇怪的是,
從2邊修改表中的記錄,沒有錯誤發生,而且能夠同步。
按照以前的經驗:如果修改複製物件的結構後,修改複製物件中的資料是不能成功的。比如:
SQL> alter table ssmn_system drop column reserve3;
Table altered.
SQL> update ssmn_system set max_number=7;
update ssmn_system set max_number=7
*
ERROR at line 1:
ORA-23474: definition of "TEST"."SSMN_SYSTEM" has changed since generation of replication support
ORA-26500: error on caching "TEST"."SSMN_SYSTEM"
從中可以看出:刪除複製物件ssmn_system中的一個欄位後,在修改它的記錄,有錯誤發生。
所以,應該不是drop了Site B上的表的一個欄位,造成2 Site上的表結構不一致的。
那麼,是不是在Site A上表中增加了一個欄位呢?在實驗環境中測試以下:
1)在Site A的表中增加一個欄位:
SQL> alter table ssmn_system add (reserve4 varchar2(20));
2)修改表中的記錄:
SQL> update ssmn_system set reserve4='y',MAX_NUMBER=4;
1 row updated.
沒有報錯。
3)檢查Site B上表中記錄是否同步:
SQL> select * from ssmn_system;
MAX_NUMBER RESERVE3
---------- ------------- ----------
4 3
從中可以看出:資料已經同步。
4)在Site B上在此修改表中資料:
SQL> update ssmn_system set MAX_NUMBER=5;
1 row updated.
也沒有報錯。
5)檢查Site A上表中資料是否同步:
SQL> select * from ssmn_system;
MAX_NUMBER RESERVE3 RESERVE4
---------- ------------- ----------
5 3
從中可以看出:資料也同步了。
由此可以得出結論:如果增加複製物件的欄位,對高階複製沒有影響。Site A上表多一個欄位,是由於增加了欄位造成的。後來透過檢視複製組中複製物件包
含的欄位(可以從dba_repcolumn表中檢視),也驗證了這個結論。
進一步測試:如果此時在Site B上的表中也新增相同欄位, 則新增的欄位是否也能同步?
6)在Site B上新增欄位:
SQL> alter table ssmn_system add (reserve4 varchar2(20));
7)修改該欄位的值:
SQL> update ssmn_system set MAX_NUMBER=4,reserve4='test';
1 row updated.
沒有出錯。
8)檢查Site A上表的資料:
SQL> select * from ssmn_system;
MAX_NUMBER RESERVE3 RESERVE4
---------- ------------- --------------------
3 3
可以看出:max_number欄位同步了,但是reserve4欄位沒有同步,因為複製物件不包含該欄位。由此回想起之前的一個錯誤:表中有一個欄位資料不能同步。
這應該是因為這個不能同步的欄位是後增加的。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11422417/viewspace-975456/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 對於複製普通物件 深複製和淺複製是否一樣物件
- JS物件複製:深複製和淺複製JS物件
- MySQL 的主從複製(高階篇)MySql
- vue複製物件Vue物件
- SpringBoot物件複製Spring Boot物件
- 複製物件重新賦值不改變原物件物件賦值
- C#中的物件深複製和淺複製C#物件
- 淺談JS中物件的淺複製和深複製JS物件
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- 隨身碟格式會影響到隨身碟複製數量嗎?隨身碟格式對複製數量有什麼影響
- js物件的複製方法JS物件
- JavaScript物件複製理解JavaScript物件
- js深度複製物件JS物件
- js物件深複製JS物件
- 複雜連結串列的複製
- 物件的生存期 記憶體 深度複製 複製建構函式 筆記物件記憶體函式筆記
- Day 7.5 資料型別總結 + 複製 淺複製 深複製資料型別
- vue物件的深層複製Vue物件
- vue實現物件的複製Vue物件
- Java引用複製、淺複製、深複製Java
- MySQL進階:主主複製+Keepalived高可用MySql
- 線上將傳統模式複製改為GTID複製模式模式
- JS物件深度克隆/複製JS物件
- mysql中複製表結構的方法小結MySql
- 複製和引用複製
- poi操作excel,複製sheet,複製行,複製單元格,複製styleExcel
- mysql複製表結構和資料MySql
- redis主從複製幾種結構Redis
- go的深複製跟淺複製Go
- 淺複製與深複製
- MySQL 同步複製及高可用方案總結MySql
- MySQL 8 複製(三)——延遲複製與部分複製MySql
- JS 複製陣列和物件JS陣列物件
- Java物件複製之MapStruct使用Java物件Struct
- VUE js中複製物件 JSONVue物件JSON
- 談談Python中物件複製Python物件
- JavaScript中的淺複製與深複製JavaScript
- 禁止複製的網頁怎麼複製網頁
- JZ-025-複雜連結串列的複製