如何创建物化视图以连接两个不同的oracle数据库表

如何创建物化视图以连接两个不同的oracle数据库表,oracle,ddl,materialized-views,Oracle,Ddl,Materialized Views,我需要创建一个mview,使用refresh命令将数据从远程数据库获取到目标数据库 这是我创建mview的sql查询: CREATE DATABASE LINK SI_DB CONNECT TO SYSTEM IDENTIFIED BY password USING 'SI_DEV'; 这是我的tns.ora文件: SI_DEV= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = servidor

我需要创建一个mview,使用refresh命令将数据从远程数据库获取到目标数据库

这是我创建mview的sql查询:

CREATE DATABASE LINK SI_DB
    CONNECT TO SYSTEM IDENTIFIED BY password
    USING 'SI_DEV';
这是我的tns.ora文件:

SI_DEV=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = servidor)(PORT = 1521))
)
(CONNECT_DATA =
(SID = MSQL)
)
(HS=OK)
)
我得到以下错误:

ORA-12154:TNS:无法解析指定的连接标识符

我不知道如何为远程目标创建mview

我们是否需要将目标或远程数据库放入.or文件中


有人能帮我解决这个问题吗?

创建DBLink的服务器上的
tnsnames.ora
需要包含到远程Oracle实例的连接信息。通过在创建DBLink时提供连接描述符,也可以在不更改该服务器上的
tnsnames.ora
的情况下创建DBLink:

CREATE PUBLIC DATABASE LINK SI_DB
  CONNECT TO some_user
  IDENTIFIED BY some_password
USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = servidor)(PORT = 1521)) ) (CONNECT_DATA = (SID = MSQL) ) (HS=OK))';
请注意,使用
系统
用户创建一个DBLink来为普通用户启用物化视图是一个坏主意

拥有数据库链接后,可以使用以下方法创建mview:

create materialize view foobar
as
select *
from the_table@si_db;
请注意,
_表
引用了DBLink中指定的用户架构中的一个表。这就是您不应该为DBLink使用
系统
帐户的原因之一。如果表不在DBLink用户的架构中,则需要限定表名:

create materialize view foobar
as
select *
from the_user.the_table@si_db;

使用
sid的
service\u名称