dblink主要用于时时同步不是同一个数据库表。
物化视图:
在数据库里,它的作用无非是定期的从远程数据库获取数据到本地数据库,这样的情况一般应用于数据不是实时的。实时的最好直接使用dblink来获取数据。它与视图的区别是MV是自动刷新或者手动刷新的,View不用刷新,MV主要用于远程数据访问,mv中的数据需要占用磁盘空间,view中不保存数据。
创建物化视图的SQL:
CREATE MATERIALIZED VIEW BF_QSP_CREDIT_AMOUNT_MV
REFRESH FORCE ON DEMAND
WITH ROWID
START WITH TO_DATE('22-07-2009 10:10:25', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE + 1/24
AS
SELECT a.* FROM BF_QSP_CREDIT_AMOUNT_ALL@b2b_to_ebs a;
在很多项目上,经常外网需要用到内网基础数据中的数据,比如现在要访问企业基本信息,就需要访问内网基础数据中的数据,而这个数据是存放在内网数据库的ENT_LINK_MAN表中。如果内网数据访问不到就会报错。
那现在就给大家介绍一种共享数据的方法,通过dblink建立视图的方式共享内网的数据,视图建立之后问题得到解决。两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink。
如何通过dblink建立视图呢?
其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,sid以及数据库用户名和密码。
创建可以采用以下方式:
1、已经配置本地服务
以下是引用片段:
create database link sz
connect to approval identified by approval
Using
'(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.x.xx)(PORT = xxxx))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)';
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;
此时仅仅是将内网的数据库进行关联起来,要想访问到内网的企业基本信息还需要建立一个视图关联上内网的企业基本信息表。那为什么要建立一个视图而不是一个表呢,因为视图可以实时的与内网数据保持一致,而表却不能。接下来介绍如何创建视图。
create view ENT_LINK_MAN as select * from ENT_LINK_MAN@sz;
create view 视图名 * from 内网的表名@基础数据库名称;
建立视图完成后,即可外网访问到内网的企业基本信息了。
转载于:https://blog.51cto.com/dantanmingxin/1565403