Oracle 複寫隨版本演進日趨精細。物化視圖 (Materialized View) 架構要求每個複寫站點建立三個資料庫連結:公共連結 (雙向)、複寫管理員私有連結、排程推送專用連結。公共連結需指定全域資料庫名稱 (Global Database Name) 或完整連線描述符。
CONNECT system/passwd@BJ
CREATE USER mvadmin IDENTIFIED BY mvadmin;
BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(username => 'mvadmin');
END;
/
GRANT COMMENT ANY TABLE TO mvadmin;
GRANT LOCK ANY TABLE TO mvadmin;
GRANT SELECT ANY DICTIONARY TO mvadmin;
BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR(username => 'mvadmin');
END;
/
-- 方式 A: 使用全域資料庫名
CREATE PUBLIC DATABASE LINK ORACLSH USING 'Oracle.shanghai.com';
-- 方式 B: 使用完整連線描述符 (TNS)
CREATE PUBLIC DATABASE LINK ORACLSH USING '(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=oracl)))';
CONNECT mvadmin/mvadmin@BJ
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE(
next_date => SYSDATE,
interval => 'SYSDATE + 1/24', -- 每小時
delay_seconds => 0,
rollback_segment => '');
END;
/
CREATE DATABASE LINK ORACLSH
CONNECT TO proxy_bj IDENTIFIED BY proxy_bj
USING 'Oracle.shanghai.com';
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH(
destination => 'ORACLSH',
interval => 'SYSDATE + 1/24',
next_date => SYSDATE,
stop_on_error => FALSE,
delay_seconds => 0,
parallelism => 0);
END;
/
CONNECT system/passwd@BJ
GRANT ALTER SESSION TO crm;
GRANT CREATE CLUSTER TO crm;
GRANT CREATE DATABASE LINK TO crm;
GRANT CREATE SEQUENCE TO crm;
GRANT CREATE SESSION TO crm;
GRANT CREATE SYNONYM TO crm;
GRANT CREATE TABLE TO crm;
GRANT CREATE VIEW TO crm;
GRANT CREATE PROCEDURE TO crm;
GRANT CREATE TRIGGER TO crm;
GRANT UNLIMITED TABLESPACE TO crm;
GRANT CREATE TYPE TO crm;
GRANT CREATE ANY SNAPSHOT TO crm; -- 9i/10g 語法
GRANT ALTER ANY SNAPSHOT TO crm;
-- 11g+ 建議改用 MATERIALIZED VIEW 權限
GRANT CREATE MATERIALIZED VIEW TO crm;
GRANT ALTER MATERIALIZED VIEW TO crm;
init.ora 設定 GLOBAL_NAMES=TRUE。SCHEDULE_PUSH 的 parallelism 設為 0 表示串列推送,大量異動可設 1-4 並行。SNAPSHOT 術語正式更名為 MATERIALIZED VIEW,權限授予需對應版本。