我需要创建一个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文件?
谁能帮我解决这个问题?
在tnsnames.ora
这里创建DBLINK需要包含的连接信息,远程Oracle实例的服务器上。您还可以tnsnames.ora
通过在创建dblink时提供连接描述符来创建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))';
请注意,与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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句