高階複製主站點主表新增欄位操作
我測試的環境:一個主站點,一個物化檢視站點,需要在複製組的一個表新增欄位,對應物化檢視的基表也需要新增。
心得主要有2點:一個是必須執行DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT包,新加的欄位不會自動新增到複製支援的列表裡去(查詢select * from dba_repcolumn;可以觀察到)
第二點是在物化檢視站點,之前的物化檢視需要刪掉重建,重建的時候主表新加的欄位物化檢視識別不了,需要重啟物化檢視的資料庫例項,這點不知道我操作有問題還是oracle的bug。我試了2次都需要重啟資料庫。
操作過程主要分三塊,首先是主站點,然後是物化檢視站點,最後回到主站點。
下面是具體的操作過程:
對於主站點,須執行下面步驟
--暫停複製
BEGIN
DBMS_REPCAT.suspend_master_activity ( gname => 'rep_group');
END;
--刪除更新策略
begin
dbms_repcat.drop_update_resolution(sname => 'js',
oname => 'JS_CHANGE_CODE',
column_group => 'JS_CHANGE_CODE_cg',
sequence_no => 1) ;
end;
/
--刪除列組
BEGIN
DBMS_REPCAT.drop_column_group (
sname => 'js',
oname => 'JS_CHANGE_CODE',
column_group => 'JS_CHANGE_CODE_cg'
);
END;
/
--新增欄位
BEGIN
DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
sname => 'js',
oname => 'JS_CHANGE_CODE',
type => 'TABLE',
ddl_text => 'alter table js.JS_CHANGE_CODE add ftest VARCHAR2(8)');
END;
/
--建立列組
BEGIN
DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname => 'js',
oname => 'JS_CHANGE_CODE',
column_group => 'JS_CHANGE_CODE_cg',
list_of_column_names => '*');
END;
--新增更新策略
BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'js',
oname => 'JS_CHANGE_CODE',
column_group => 'JS_CHANGE_CODE_cg',
sequence_no => 1,
method => 'overwrite',
parameter_column_name => '*');
END;
/
--重新生成複製支援
begin
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT ( sname => 'js',
name => 'JS_CHANGE_CODE',
type => 'TABLE',
min_communication => TRUE);
END;
/
物化檢視站點操作步驟
--從重新整理組移除物化檢視重新整理
BEGIN
DBMS_REFRESH.subtract ( name => 'mvadmin.CDCTEST_REFRESH',
list => 'js.JS_CHANGE_CODE_bs', lax => TRUE);
END;
/
commit;
--從複製組移除複製物件
BEGIN
DBMS_REPCAT.drop_MVIEW_REPOBJECT (
sname => 'js',
name => 'JS_CHANGE_CODE_BS',
type => 'SNAPSHOT'
);
END;
/
--刪除物化檢視
drop materialized view JS_CHANGE_CODE_BS;
--新增欄位
alter table js.JS_CHANGE_CODE_bs add ftest VARCHAR2(8)
--重啟了物化檢視站點例項,重建物化檢視,
--這一步有點奇怪,主站點新增加的欄位死活沒有新增到物化檢視定義裡,如果在select裡指定那個欄位,會說欄位不能識別
--這一步我重啟了物化檢視站點例項,新建的物化檢視才能有新加的欄位
CREATE MATERIALIZED VIEW JS_CHANGE_CODE_BS
ON PREBUILT TABLE
REFRESH FAST ON DEMAND
FOR UPDATE
AS
SELECT * FROM JS.JS_CHANGE_CODE@CDCTEST ;
--新增到重新整理組
BEGIN
DBMS_REFRESH.ADD ( name => 'mvadmin.cdctest_refresh',
list => 'js.JS_CHANGE_CODE_BS', lax => TRUE);
END;
/
commit;
--新增到複製組
BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT ( gname => 'rep_group',
sname => 'JS',
name => 'JS_CHANGE_CODE_BS',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
回到主站點,恢復複製支援
BEGIN
DBMS_REPCAT.resume_master_activity ( gname => 'rep_group');
END;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25027760/viewspace-751884/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 高階複製-3、主體定義站點上的操作
- 高階複製-4、非主體定義站點上的操作
- MySQL 的主從複製(高階篇)MySql
- MySQL進階:主主複製+Keepalived高可用MySql
- 主體複製概念和體系結構——高階複製
- oracle 高階複製Oracle
- Oracle高階複製Oracle
- 高階複製總結
- 高階複製-5、測試是否可同步DML操作
- oracle 複製中設定主體站點指令碼Oracle指令碼
- Oracle高階複製Step by StepOracle
- oracle高階複製(轉載)Oracle
- oracle 高階複製簡介Oracle
- 高階複製-7、測試是否非主鍵表的同步
- 複製管理工具介紹——高階複製
- [zt] 高階複製、流複製(Streams)、備庫區別
- 高階複製-2、準備工作
- MySQL主從複製、半同步複製和主主複製MySql
- MySQL主主複製+MMM實現高可用(一)MySql
- MySQL主從複製與主主複製MySql
- MySQL主從複製、半同步複製和主主複製概述MySql
- 關於Oracle 高階複製的概念Oracle
- Oracle 高階複製的概念及配置Oracle
- Redis主從複製那點事Redis
- mysql5.7主從複製,主主複製MySql
- MySQL的主從複製、半同步複製、主主複製詳解MySql
- 配置mysql5.5主從複製、半同步複製、主主複製MySql
- mysql5.6主主複製及keepalived 高可用MySql
- 物化檢視複製概念和體系結構——高階複製
- RMAN高階應用之Duplicate複製資料庫(3)複製流程資料庫
- 改變複製物件結構對高階複製的影響物件
- OGG複製與加密欄位的衝突加密
- SQL Server複製的表中如何修改欄位SQLServer
- 主表子表動態欄位儲存實現方式總結
- fastadmin 新增欄位記圖片欄位AST
- mysql主主複製(雙主複製)配置步驟MySql
- SQL新增表欄位SQL
- alter table新增欄位操作究竟有何影響?(上篇)