跨服务器,跨库视图创建
在A服务器有数据库db1 用户名为db1dba 密码为db1
在sql*plus中执行
select * from global_name;
假如得到的是N1;
2.首先在B服务器上通过Oracle中的工具Net Configuration Assitant启动本地网络服务名配置,将A服务器上的数据库db1建立连接并测试通过
3.在B服务器有数据库db2 用户名为db2dba 密码为 db2
在sql*plus中执行
create public database link 数据库链路名
connect to 用户名 identified by 口令
using '主机字符串名';
如:
create public database link N1 connect to username identified by password using 'db1';
N1可以任意取名,不必是global_name!!!
1)dblink名必须与远程数据库的全局数据库名(global_name)相同;
2)用户名,口令为远程数据库用户名,口令;
3)主机字符串为本机tnsnames.ora中定义的串,即在A服务器上的;
4)两个同名的数据库间不得建立dblink;
然后,你就可以通过dblink访问远程数据库了。
如:
sql>select * from 表名@N1;访问的是A服务器上的表
AUTH_USER_TB
4.建立视图
create view V_TBL as select * from TBL@N1;
1. 192.168.0.12服务器数据库trade
select * from global_name;
得到:
TRADE.REGRESS.RDBMS.DEV.US.ORACLE.COM
2. 192.168.0.212服务器数据库trade
(1)创建本地服务,通过Oracle中的工具Net Configuration Assitant启动本地网络服务名配置, 服务名trade 主机名192.168.0.12
(2)创建数据链接
create public database link TRADE.REGRESS.RDBMS.DEV.US.ORACLE.COM connect to tradedba identified by trade using 'trade';
(link名称是可以任意取的,除此之外,用户名、密码、主机连接串都是0.12服务器上的库内容)
(3)验证:select * from global_name@TRADE.REGRESS.RDBMS.DEV.US.ORACLE.COM;
得到:
TRADE.REGRESS.RDBMS.DEV.US.ORACLE.COM 成功
(4)表te为测试表,在远程库中,本地库中无
select * from te@TRADE.REGRESS.RDBMS.DEV.US.ORACLE.COM;
得到查询结果,成功
(5)创建视图:
在本地库中建立视图v_ddm_class
create or replace view v_ddm_class as
select "TYPE","CODE","CLSLEVEL","NAME","SUBCLASS","MEMO" from ddm_class@TRADE.REGRESS.RDBMS.DEV.US.ORACLE.COM where ddm_class.type='广电分类'
;
在本地库中建立视图v_normal_class
create view v_normal_class
(type, code, clalevel, name, subclass, memo)
as
select "TYPE","CODE","CLSLEVEL","NAME","SUBCLASS","MEMO" from DDM_CLASS@TRADE.REGRESS.RDBMS.DEV.US.ORACLE.COM
where ddm_class.type='普通分类';
查询链路信息
SELECT * FROM DBA_DB_LINKS;
update sys.link$ t set t.host='10.5.39.130:1521/scyyzhdb' where t.name=''
create public database link JTDBLKIN connect to hse identified by password using '10.5.39.130:1521/scyyzhdb';
删除数据库链路
SQL> CONN YANGTK/YANGTK@REP
已连接。
SQL> DROP DATABASE LINK YANGTK.YANGTINGKUN;