建立遠端基表的物化檢視
當使用者要跨本地資料庫,訪問另外一個資料庫表中的資料時,本地資料庫中必須建立了遠端資料庫的dblink,
透過dblink本地資料庫可以像訪問本地資料庫一樣訪問遠端資料庫表中的資料。
在建立dblink之前使用者必須有建立dblink的許可權。想知道有關dblink的許可權,以sys使用者登入到本地資料庫:
如何檢視Global_name引數是true還是False? 當資料庫引數global_name=false時,就不要求資料庫連結名稱跟遠端資料庫名稱一樣。
SQL> show parameter global_name;
NAME TYPE VALUE
---------------------------- ----------- ------------------------------
global_names boolean FALSE
SQL> select * from v$option where PARAMETER='Advanced replication';
PARAMETER VALUE
-------------------- -----------------------------------------
Advanced replication TRUE
SQL> select * from user_sys_privs t where t.privilege like upper('%link%');
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
可以看出在資料庫中dblink有三種許可權CREATE DATABASE LINK(所建立的dblink只能是建立者能使用,別的使用者使用不了),
CREATE PUBLIC DATABASE LINK(public表示所建立的dblink所有使用者都可以使用)和DROP PUBLIC DATABASE LINK。
在以下建立物化檢視的例子中,基表是遠端資料庫所帶的HR Schema中的employees表。擁有基表的使用者是hr,建立物化檢視的使用者是george。
==================================================================
建立遠端基表的on demand refresh物化檢視
==================================================================
物化檢視的重新整理模式有兩種:ON DEMAND和ON COMMIT。
ON DEMAND和ON COMMIT物化檢視的區別在於其重新整理方法的不同,ON DEMAND指物化檢視在使用者需要的時候進行重新整理,
可以手工透過DBMS_MVIEW.REFRESH等方法來進行重新整理,也可以透過JOB定時進行重新整理,即更新物化檢視,以保證和基表資料的一致性;
而ON COMMIT是說,一旦基表有了COMMIT,即事務提交,則立刻重新整理,立刻更新物化檢視,使得資料和基表一致。
建立使用者並授予許可權
SQL> create user george identified by george;
User created.
SQL> grant connect, resource to george;
Grant succeeded.
SQL> grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to george;
Grant succeeded
要建立dblink首先在本地資料庫tnsnames.ora檔案中配置了要遠端訪問的資料庫服務別名。
接下來建立dblink
SQL> create public database link hr_remote connect to hr identified by hr using 'dg01prmy';
Database link created.
其中hr_remote是你建立的dblink名字,dg01prmy是遠端資料庫的例項名,hr/hr是登入到遠端資料庫的使用者/密碼。
然後在本地資料庫中透過dblink訪問遠端資料庫'hr_remote'中hr.employees表,sql語句如下所示
SQL> select * from hr.employees@hr_remote;
SQL> select count(*) from employees@hr_remote;
COUNT(*)
----------
107
在遠端資料庫上建立物化檢視日誌
檢視的重新整理將採用增量重新整理的方式,為配合增量重新整理,ORACLE要求要在基表上建立物化檢視日誌。
SQL> conn hr/hr
SQL> create materialized view log on employees with primary key including new values;
建立物化檢視
SQL> create materialized view mv_employees build immediate refresh fast with primary key on commit as select * from employees@hr_remote;
create materialized view mv_employees build immediate refresh fast with primary key on commit as select * from employees@hr_remote
*
ERROR at line 1:
ORA-01031: insufficient privileges
建立物化檢視需要的許可權 以sysdba授權
SQL> grant create any materialized view to george;
Grant succeeded.
SQL> conn george/george
Connected.
注意:設定REFRESH ON COMMIT的物化檢視不能訪問遠端物件。
SQL> create materialized view mv_employees build immediate refresh fast with primary key on commit as select * from employees@hr_remote;
create materialized view mv_employees build immediate refresh fast with primary key on commit as select * from employees@hr_remote
*
ERROR at line 1:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
SQL> create materialized view mv_employees build immediate refresh fast with primary key as select * from employees@hr_remote;
Materialized view created.
SQL> select count(*) from mv_employees;
COUNT(*)
----------
107
Tips:
物化檢視的重新整理
(1)使用dbms_mview.refresh 手工重新整理
如:
EXEC DBMS_MVIEW.REFRESH('mv_employees');
--完全重新整理
EXEC DBMS_MVIEW.REFRESH(LIST => 'mv_employees',METHOD => 'C');
EXEC DBMS_MVIEW.REFRESH(LIST => 'mv_employees',METHOD => 'C');
EXEC DBMS_MVIEW.REFRESH('mv_employees','C');
--快速重新整理
EXEC DBMS_MVIEW.REFRESH(LIST => 'mv_employees',METHOD => 'F');
EXEC DBMS_MVIEW.REFRESH('mv_employees','F');
(2)使用dbms_refresh.refresh 過程來批次重新整理MV
如果我們在建立物化檢視的過程指定start 和next time的重新整理時間,那麼Oracle 會自動建立重新整理的job,並採用dbms_refresh.refresh 的方式。
透過dblink本地資料庫可以像訪問本地資料庫一樣訪問遠端資料庫表中的資料。
在建立dblink之前使用者必須有建立dblink的許可權。想知道有關dblink的許可權,以sys使用者登入到本地資料庫:
如何檢視Global_name引數是true還是False? 當資料庫引數global_name=false時,就不要求資料庫連結名稱跟遠端資料庫名稱一樣。
SQL> show parameter global_name;
NAME TYPE VALUE
---------------------------- ----------- ------------------------------
global_names boolean FALSE
SQL> select * from v$option where PARAMETER='Advanced replication';
PARAMETER VALUE
-------------------- -----------------------------------------
Advanced replication TRUE
SQL> select * from user_sys_privs t where t.privilege like upper('%link%');
USERNAME PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
可以看出在資料庫中dblink有三種許可權CREATE DATABASE LINK(所建立的dblink只能是建立者能使用,別的使用者使用不了),
CREATE PUBLIC DATABASE LINK(public表示所建立的dblink所有使用者都可以使用)和DROP PUBLIC DATABASE LINK。
在以下建立物化檢視的例子中,基表是遠端資料庫所帶的HR Schema中的employees表。擁有基表的使用者是hr,建立物化檢視的使用者是george。
==================================================================
建立遠端基表的on demand refresh物化檢視
==================================================================
物化檢視的重新整理模式有兩種:ON DEMAND和ON COMMIT。
ON DEMAND和ON COMMIT物化檢視的區別在於其重新整理方法的不同,ON DEMAND指物化檢視在使用者需要的時候進行重新整理,
可以手工透過DBMS_MVIEW.REFRESH等方法來進行重新整理,也可以透過JOB定時進行重新整理,即更新物化檢視,以保證和基表資料的一致性;
而ON COMMIT是說,一旦基表有了COMMIT,即事務提交,則立刻重新整理,立刻更新物化檢視,使得資料和基表一致。
建立使用者並授予許可權
SQL> create user george identified by george;
User created.
SQL> grant connect, resource to george;
Grant succeeded.
SQL> grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to george;
Grant succeeded
要建立dblink首先在本地資料庫tnsnames.ora檔案中配置了要遠端訪問的資料庫服務別名。
接下來建立dblink
SQL> create public database link hr_remote connect to hr identified by hr using 'dg01prmy';
Database link created.
其中hr_remote是你建立的dblink名字,dg01prmy是遠端資料庫的例項名,hr/hr是登入到遠端資料庫的使用者/密碼。
然後在本地資料庫中透過dblink訪問遠端資料庫'hr_remote'中hr.employees表,sql語句如下所示
SQL> select * from hr.employees@hr_remote;
SQL> select count(*) from employees@hr_remote;
COUNT(*)
----------
107
在遠端資料庫上建立物化檢視日誌
檢視的重新整理將採用增量重新整理的方式,為配合增量重新整理,ORACLE要求要在基表上建立物化檢視日誌。
SQL> conn hr/hr
SQL> create materialized view log on employees with primary key including new values;
建立物化檢視
SQL> create materialized view mv_employees build immediate refresh fast with primary key on commit as select * from employees@hr_remote;
create materialized view mv_employees build immediate refresh fast with primary key on commit as select * from employees@hr_remote
*
ERROR at line 1:
ORA-01031: insufficient privileges
建立物化檢視需要的許可權 以sysdba授權
SQL> grant create any materialized view to george;
Grant succeeded.
SQL> conn george/george
Connected.
注意:設定REFRESH ON COMMIT的物化檢視不能訪問遠端物件。
SQL> create materialized view mv_employees build immediate refresh fast with primary key on commit as select * from employees@hr_remote;
create materialized view mv_employees build immediate refresh fast with primary key on commit as select * from employees@hr_remote
*
ERROR at line 1:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
SQL> create materialized view mv_employees build immediate refresh fast with primary key as select * from employees@hr_remote;
Materialized view created.
SQL> select count(*) from mv_employees;
COUNT(*)
----------
107
Tips:
物化檢視的重新整理
(1)使用dbms_mview.refresh 手工重新整理
如:
EXEC DBMS_MVIEW.REFRESH('mv_employees');
--完全重新整理
EXEC DBMS_MVIEW.REFRESH(LIST => 'mv_employees',METHOD => 'C');
EXEC DBMS_MVIEW.REFRESH(LIST => 'mv_employees',METHOD => 'C');
EXEC DBMS_MVIEW.REFRESH('mv_employees','C');
--快速重新整理
EXEC DBMS_MVIEW.REFRESH(LIST => 'mv_employees',METHOD => 'F');
EXEC DBMS_MVIEW.REFRESH('mv_employees','F');
(2)使用dbms_refresh.refresh 過程來批次重新整理MV
如果我們在建立物化檢視的過程指定start 和next time的重新整理時間,那麼Oracle 會自動建立重新整理的job,並採用dbms_refresh.refresh 的方式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960937/viewspace-1408603/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物化檢視日誌表被DROP後建立物化檢視報錯
- oracle 建立物化檢視Oracle
- Oracle 物化檢視建立Oracle
- 物化檢視妙用__表同步使用物化檢視方法
- ORACLE中的物化檢視建立Oracle
- 物化檢視的建立(全刷模式)模式
- 建立物化檢視MV ( Materialized View )ZedView
- Oracle物化檢視的建立及使用(二)Oracle
- Oracle物化檢視的建立及使用(一)Oracle
- SYS使用者的表無法建立物化檢視日誌
- Oracle 11g 建立物化檢視Oracle
- 使用 on prebuilt table 建立物化檢視 (ZT)UI
- 使用 on prebuilt table 建立物化檢視(zt)UI
- 物化檢視基礎概念、mview跨庫遷移表View
- 【物化檢視】根據物化檢視日誌快速重新整理物化檢視的過程
- 【物化檢視】幾種物化檢視日誌分析
- ogg 同步 物化檢視建立限制 Materialized ViewZedView
- trigger和物化檢視同步表
- oracle物化檢視Oracle
- DB2資料庫物化檢視:MQT物化查詢表的使用DB2資料庫MQQT
- 遠端檢視 TensorboardORB
- 普通檢視和物化檢視的區別
- 物化檢視的快速重新整理測試與物化檢視日誌
- 11G物化檢視支援基於DBLINK遠端表的快速重新整理,包含有LOB欄位的表也可以進行快速重新整理了。
- 物化檢視詳解
- materialized view (物化檢視)ZedView
- 物化檢視 on commitMIT
- Oracle普通檢視和物化檢視的區別Oracle
- 12c 物化檢視 - 理解完全重新整理的物化檢視工作原理
- 物化檢視匯出匯入可能導致物化檢視日誌的失效
- 小議物化檢視與基表資料不一致的消除(四)
- 小議物化檢視與基表資料不一致的消除(二)
- 小議物化檢視與基表資料不一致的消除(一)
- 小議物化檢視與基表資料不一致的消除(三)
- 資料庫的物化檢視資料庫
- Oracle如何根據物化檢視日誌快速重新整理物化檢視Oracle
- 建立物化檢視導致資料庫例項崩潰資料庫
- calcite物化檢視詳解