我需要创建一个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文件?
有谁可以帮我解决这个问题?
答案 0 :(得分:2)
创建DBLink的服务器上的tnsnames.ora
需要包含远程Oracle实例的连接信息。您还可以通过在创建dblink时提供连接描述符来创建DBLink而无需更改该服务器上的tnsnames.ora
:
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))';
请注意,使用system
用户创建DBLink以向普通用户启用实体化视图是一个坏主意。
获得DBLink后,您可以使用以下方式创建mview:
create materialize view foobar
as
select *
from the_table@si_db;
请注意the_table
引用DBLink中指定的用户架构中的表。这是您不应将system
帐户用于DBLink的原因之一。如果该表不在DBLink用户的模式中,则需要限定表名:
create materialize view foobar
as
select *
from the_user.the_table@si_db;