[原創]帶主體複製環境的資料庫遷移
源資料庫:windows 2003 32bit,oracle9.2.0.5
目標資料庫:windows 2008 64bit,oracle 10.2.0.3
-- 在源資料庫伺服器上執行的操作
-- 1.全庫備份
exp system/system file=d:\db_backup\db.dmp full=y direct=y log=d:\db_backup\db.log
-- shutdown資料庫
-- 修正另一主體複製站點的tns,連線到新的伺服器上
-- 在目標資料庫伺服器上執行的操作
-- 以sysdba登入
-- 2.建立源資料庫有,目標資料庫沒有的表空間
CREATE TABLESPACE ywuser DATAFILE
'F:\oracle\product\10.2.0\oradata\testj\ywuser.DBF' SIZE 3000M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;
......
-- 3.建立資料庫使用者
create user ywuser identified by ywuser;
grant dba to ywuser;
alter user ywuser default tablespace ywuser;
create user repadmin identified by repadmin;
grant resource,connect to repadmin;
-- 4給repadmin使用者授權
begin
dbms_repcat_admin.grant_admin_any_schema(username=>'repadmin');
end;
/
grant comment any table to repadmin;
grant lock any table to repadmin;
grant select any dictionary to repadmin;
begin
dbms_defer_sys.register_propagator(username=>'repadmin');
end;
/
begin
dbms_repcat_admin.register_user_repgroup(username=>'repadmin',privilege_type=>'receiver',list_of_gnames=>null);
end;
/
-- 5.資料庫引數修正
alter system set global_names=true;
alter database rename global_name to web.test;
-- 6.建立資料庫連結
-- 注意:配置網路服務名test,連線到主體複製站點
DROP PUBLIC DATABASE LINK test.test;
CREATE PUBLIC DATABASE LINK test.testconnect to repadmin identified by repadmin USING 'test';
-- check it!
select * from global_name@test.test;
-- 7.全庫匯入:rows=n
imp system/systemfile=d:\db_backup\db.dmp buffer=40960000 full=y log=d:\db_backup\imp_full.log rows=n ignore=y indexes=n
-- 全庫匯入:rows=y
-- 把觸發器置為無效
-- 連線到業務使用者
spool disable_trigger.sql
select 'alter trigger '||trigger_name||' disable;'
from user_triggers
/
spool off
@disable_trigger.sql
-- 把其他使用者的約束置為無效
spool disable_constrain.sql
select 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';'
from dba_constraints
where owner in ('SH','OE','HR','PM','QS','QS_CBADM','QS_CS','QS_ES','QS_OS','QS_WS','SCOTT','PERFSTAT');
spool off
@disable_constrain.sql
host del disable_trigger.sql
host del disable_constrain.sql
-- 執行匯入操作
imp system/systemfile=d:\db_backup\db.dmp buffer=40960000 full=y log=d:\db_backup\imp_full_data.log rows=y ignore=y feedback=10000
-- 8.開啟入隊功能:
BEGIN
dbms_aqadm.start_queue('SYSTEM.DEF$_AQCALL', TRUE, FALSE);
COMMIT;
END;
/
-- 9.測試複製環境
-- do sth
-- conn repadmin/repadmin
-- 監控延遲事務
select * from deftran where rownum < 10;
select count(*) from DEFTRANDEST;
select count(*) from deftran;
select count(*) from system.def$_aqcall;
select count(*) from defcall;
select count(*) from deferror;
-- Push所有的事務
variable v_ret number;
exec :v_ret := DBMS_DEFER_SYS.PUSH(destination=>'test.test',parallelism=>4,stop_on_error=>false);
commit;
-- Purge所有延遲事務
variable v_ret number;
exec :v_ret := DBMS_DEFER_SYS.PURGE(delay_seconds=>0);
commit;
-- 重新監控,並登陸到另一主體複製站點檢查資料是否已複製
-- 把業務使用者的觸發器重置為有效
-- 連線到業務使用者
spool enable_trigger.sql
select 'alter trigger '||trigger_name||' enable;'
from user_triggers
/
spool off
@enable_trigger.sql
-- ALL IS OK!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-606018/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows 環境下,MySQL 的主從複製和主主複製WindowsMySql
- windows環境下,Mysql的主從複製和主主複製WindowsMySql
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- Win環境至Linux環境Oracle資料庫遷移全過程LinuxOracle資料庫
- 資料庫主從複製資料庫
- 用最簡單的方法複製或遷移Oracle資料庫Oracle資料庫
- Azure Storage 利用 azCopy 複製遷移資料
- MySQL搭建帶過濾的複製環境MySql
- 達夢資料庫遷移資料/複製表/匯入匯出2資料庫
- MySQL-主從複製之搭建主資料庫MySql資料庫
- 生產環境資料遷移問題彙總
- mysql資料庫資料同步/主從複製的配置方法MySql資料庫
- Mysql(Mariadb)資料庫主從複製MySql資料庫
- mysql資料庫實現主從複製MySql資料庫
- 【遷移】使用rman遷移資料庫資料庫
- Redis多例項及主從複製環境搭建Redis
- 資料庫遷移資料庫
- 測試環境的遷移式升級和資料整合
- DB遷移RAC環境
- Oracle備份與恢復系列 五 續 EXP/IMP遷移、複製資料庫Oracle資料庫
- mysql檔案複製遷移MySql
- 資料庫遷移 :理解資料庫
- laravel資料庫遷移Laravel資料庫
- Odoo遷移資料庫Odoo資料庫
- redis資料庫遷移Redis資料庫
- Cacti 遷移資料庫資料庫
- 資料庫遷移方案資料庫
- ORACLE資料庫遷移Oracle資料庫
- 遷移資料庫成功!資料庫
- 建立資料庫遷移資料庫
- MySQL雙主複製環境中BINLOG日誌的解析~MySql
- 資料庫複製資料庫
- 複製資料庫資料庫
- 資料庫-oracle-資料庫遷移資料庫Oracle
- 資料庫檔案的遷移資料庫
- 關於使用 Vagrant 作為開發環境,MySQL 資料庫資料存放目錄遷移的問題開發環境MySql資料庫
- MySQL-主從複製之搭建從資料庫MySql資料庫
- 原樣壓縮conda環境,並遷移環境至另一伺服器伺服器