物化檢視實現資料庫倉庫主從複製(2)
文章版權所有 Jusin Hao(luckyfriends) ,支援原創,轉載請註明。
1. 建立物化檢視
1.1. 建立DBLink
複製庫(10.168.2.12)上配置tns
/u01/app/oracle/product/11.2.0/db_1/network/admin\tnsnames.ora增加
bidw55 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.168.2.11)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bidw)
)
)
複製庫(10.168.2.12)上建立datalink:
以BI_USE55R使用者登入:
CREATE public DATABASE LINK DW11LINK CONNECT TO BI_USER IDENTIFIED BY "oracle" using 'bidw55';
1.2. 生產庫(10.168.2.11)上建立MV LOG 物化試圖日誌
以BI_USER使用者登入建立物化試圖日誌。
1.2.1. 沒有主鍵的,建mvlog的方式:CREATE MATERIALIZED VIEW LOG ON CHECK_DM TABLESPACE "BI_USER_DATA"
WITH ROWID, SEQUENCE INCLUDING NEW VALUES;
指令碼生成方法:
select 'CREATE MATERIALIZED VIEW LOG ON ' || a.table_name ||
' TABLESPACE BI_MATERIALIZED WITH ROWID, SEQUENCE INCLUDING NEW VALUES;'
from user_tables a
where a.table_name in ('CHECK_DM',…..);
1.2.2. 有主鍵的表,建mvlog方式:CREATE MATERIALIZED VIEW LOG ON CHECK_DM TABLESPACE "MATERIALIZED" WITH ROWID, PRIMARY KEY, SEQUENCE INCLUDING NEW VALUES;
指令碼生成方法:
select 'CREATE MATERIALIZED VIEW LOG ON ' || a.table_name ||
' TABLESPACE BI_MATERIALIZED WITH ROWID, PRIMARY KEY, SEQUENCE INCLUDING NEW VALUES;'
from user_tables a
where a.table_name in ('CHECK_DM',…..);
1.3. 複製庫(10.168.2.12)上建立MV物化試圖
以BI_USER12使用者登入從庫,建立物化檢視
1.3.1. 沒有主鍵的表,建mv的方式CREATE MATERIALIZED VIEW CHECK_DM REFRESH FAST WITH ROWID ON DEMAND
AS SELECT * FROM CHECK_DM@DW11LINK;
指令碼生成方法:
select 'CREATE MATERIALIZED VIEW ' || a.table_name ||
' parallel 4 REFRESH FAST WITH ROWID ON DEMAND AS SELECT /*+ parallel(4) */ * FROM ' ||
a.table_name || '@DW11LINK;'
from user_tables a
where a.table_name in ('CHECK_DM',…..);
1.3.2. 有主鍵的表,建mv的方式:命令參考:
CREATE MATERIALIZED VIEW CHECK_DM REFRESH FAST WITH PRIMARY KEY ON DEMAND AS SELECT * FROM CHECK_DM@ERPLINK;
----指定表空間
CREATE MATERIALIZED VIEW CHECK_DM tablespace bi_user_data REFRESH FAST WITH PRIMARY KEY ON DEMAND AS SELECT * FROM CHECK_DM@ERPLINK;
---加入並行和nologging
CREATE MATERIALIZED VIEW ZONE_INFO parallel 4 nologging REFRESH FAST WITH PRIMARY KEY ON DEMAND AS SELECT /*+ parallel(4) */ * FROM ZONE_INFO@DW11LINK;
指令碼生成方法:
select 'CREATE MATERIALIZED VIEW ' || a.table_name ||
' parallel 4 nologging REFRESH FAST WITH PRIMARY KEY ON DEMAND AS SELECT /*+ parallel(4) */ * FROM ' ||
a.table_name || '@DW11LINK;'
from user_tables a
where a.table_name in ('CHECK_DM',…..);
1.4. 複製庫(10.168.2.12)上建立重新整理組和任務
以BI_USER12使用者登入建立.
1.4.1. 建立重新整理組:BEGIN
DBMS_REFRESH.MAKE(
name => 'JBLJOB',
list => '',
next_date => SYSDATE,
interval => '/*60:Mins*/ sysdate + 60/(60*24)',
implicit_destroy => FALSE,
lax => FALSE,
job => 0,
rollback_seg => NULL,
push_deferred_rpc => FALSE,
refresh_after_errors => TRUE,
purge_option => NULL,
parallelism => NULL,
heap_size => NULL);
END;
/
commit;
1.4.2. 新增任務:BEGIN
DBMS_REFRESH.ADD(
name => 'JBLJOB',
list => 'CHECK_DM',
lax => TRUE);
END;
/
建立重新整理任務的指令碼生成方法:
SELECT 'BEGIN DBMS_REFRESH.ADD(name =>''' || 'JBLJOB''' || ',' ||
'list =>''' || a.table_name || ''',lax => TRUE);END;/commit;'
from user_tables a
where a.table_name in ('CHECK_DM',…..);
2. 建立物化檢視的索引
用以下語句從生產庫上匯出建索引的DDL語句,然後在複製庫上執行
2.1. 在生產伺服器上匯出索引:
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',FALSE);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'CONSTRAINTS',FALSE);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',true);
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'PRETTY',true);
set pagesize 0
set long 100000
set feedback off
set echo off
set linesize 2000
spool d:\create_index_result.sql
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
FROM USER_INDEXES u
where u.table_name in('CHECK_DM',…..);
spool off;
2.2. 格式化索引指令碼
在複製庫上建立索引前,需要注意生成的索引可能格式需要調整,
其中唯一索引改為非唯一索引;
修改索引所在表空間;
修改索引所屬使用者名稱;
索引較多加入nologging、並行;
有主鍵的表在建立檢視過程中會建立對應的主鍵唯一索引;
大體格式如下:
CREATE INDEX "BI_USER12"."PK_CHECK_DM" ON "BI_USER12"."CHECK_DM " ("DC_ID") tablespace bi_user_index parallel 4 nologgingparallel 4 nologging;
3. 更新統計資訊並建立統計分析任務
略。
;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14710393/viewspace-1167707/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物化檢視實現資料庫倉庫主從複製(1)資料庫
- mysql資料庫實現主從複製MySql資料庫
- 資料庫鏈、物化檢視、高階複製方面資料庫
- 資料複製_物化檢視
- 資料庫主從複製資料庫
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- Linux實現MySql資料庫的主從複製(一主一從)LinuxMySql資料庫
- linux下mysql主從複製,實現資料庫同步LinuxMySql資料庫
- 資料庫的物化檢視資料庫
- (轉)oracle資料庫之間 表複製方法二(物化檢視 方法)Oracle資料庫
- Mysql(Mariadb)資料庫主從複製MySql資料庫
- 實現跨庫可更新物化檢視
- MySQL-主從複製之搭建主資料庫MySql資料庫
- MySQL-主從複製之搭建從資料庫MySql資料庫
- DB2資料庫物化檢視:MQT物化查詢表的使用DB2資料庫MQQT
- 【MV】實現跨庫可更新物化檢視
- 物化檢視--資料倉儲手冊
- [zt]prebuilt 物化檢視遷移資料庫UI資料庫
- mysql資料庫資料同步/主從複製的配置方法MySql資料庫
- 物化檢視實現的特殊資料複製(r11筆記第42天)筆記
- Oracle資料庫中物化檢視的原理剖析Oracle資料庫
- 11g從活動資料庫複製資料庫資料庫
- redis 主從複製實現Redis
- mysql實現主從複製MySql
- 使用物化檢視實現在不同字符集的資料庫之間的資料同步資料庫
- MongoDB資料庫之主從複製配置實戰【轉】MongoDB資料庫
- Mysql實現主從複製(一主雙從)MySql
- 在Oracle中實現資料庫的複製Oracle資料庫
- 直接複製資料檔案實現linux平臺資料庫複製到windows平臺資料庫Linux資料庫Windows
- 使用 Docker Compose 搭建 MySQL 資料庫主從複製例項DockerMySql資料庫
- 利用percona-xtrabackup快速搭建MySQL資料庫主從複製MySql資料庫
- oracle實驗-資料庫複製Oracle資料庫
- docker實現mysql主從複製DockerMySql
- 【mongodb】mongodb 實現主從複製MongoDB
- 資料庫複製資料庫
- 複製資料庫資料庫
- 建立物化檢視導致資料庫例項崩潰資料庫
- docker 映象倉庫 Harbor 部署 以及 跨資料複製Docker