首先在tnsname里面添加远程数据库的信息如下:
yaoxu =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.119)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = yxdata)
)
)
在本地查看 global_name 的参数。
SQL> show parameter global_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean FALSE
global_name的值为FALSE,说明创建dblink的名称可以不与远程数据库的global_name相同。
SQL> create database link to_scott connect to scott identified by oracle using '
yaoxu';
数据库链接已创建。
SQL> select sysdate from dual@to_scott;
SYSDATE
--------------
07-3月 -12
SQL> select count(*) from emp@to_scott;
COUNT(*)
----------
15
SQL> desc emp@to_scott;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> update emp@to_scott set sal=0;
已更新15行。
SQL> rollback;
回退已完成。
我们将本地数据库的global_name 的参数设置为TRUE
SQL> alter system set global_names=TRUE;
系统已更改。
SQL> show parameter global_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
SQL> create database link to_scott_test connect to scott identified by oracle us
ing 'yaoxu';
数据库链接已创建。
SQL> desc emp@to_scott_test;
ERROR:
ORA-02085: 数据库链接 TO_SCOTT_TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM 连接到
YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM
所以这样就会出错,我们再创建一个dblink,名称和远程数据库的global_name一致
先登录到远程数据库查看他的global_name
C:\\Documents and Settings\\Administrator>sqlplus sys/oracle@yaoxu as sysdba
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM
然后回到本地数据库,创建DBLINK
SQL> create database link YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM connect to scot
t identified by oracle using 'yaoxu';
数据库链接已创建。
SQL> desc emp@YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
查看本地所有的DBLINK
SQL> col owner for a20;
SQL> col object_name for a50;
SQL> select owner,object_name from dba_objects where object_type=upper('database
link');
OWNER OBJECT_NAME
-------------------- --------------------------------------------------
SYS TO_SCOTT.REGRESS.RDBMS.DEV.US.ORACLE.COM
SYS TO_SCOTT_TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
SYS YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM
yaoxu =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.119)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = yxdata)
)
)
在本地查看 global_name 的参数。
SQL> show parameter global_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean FALSE
global_name的值为FALSE,说明创建dblink的名称可以不与远程数据库的global_name相同。
SQL> create database link to_scott connect to scott identified by oracle using '
yaoxu';
数据库链接已创建。
SQL> select sysdate from dual@to_scott;
SYSDATE
--------------
07-3月 -12
SQL> select count(*) from emp@to_scott;
COUNT(*)
----------
15
SQL> desc emp@to_scott;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> update emp@to_scott set sal=0;
已更新15行。
SQL> rollback;
回退已完成。
我们将本地数据库的global_name 的参数设置为TRUE
SQL> alter system set global_names=TRUE;
系统已更改。
SQL> show parameter global_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
SQL> create database link to_scott_test connect to scott identified by oracle us
ing 'yaoxu';
数据库链接已创建。
SQL> desc emp@to_scott_test;
ERROR:
ORA-02085: 数据库链接 TO_SCOTT_TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM 连接到
YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM
所以这样就会出错,我们再创建一个dblink,名称和远程数据库的global_name一致
先登录到远程数据库查看他的global_name
C:\\Documents and Settings\\Administrator>sqlplus sys/oracle@yaoxu as sysdba
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM
然后回到本地数据库,创建DBLINK
SQL> create database link YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM connect to scot
t identified by oracle using 'yaoxu';
数据库链接已创建。
SQL> desc emp@YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
查看本地所有的DBLINK
SQL> col owner for a20;
SQL> col object_name for a50;
SQL> select owner,object_name from dba_objects where object_type=upper('database
link');
OWNER OBJECT_NAME
-------------------- --------------------------------------------------
SYS TO_SCOTT.REGRESS.RDBMS.DEV.US.ORACLE.COM
SYS TO_SCOTT_TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
SYS YXDATA.REGRESS.RDBMS.DEV.US.ORACLE.COM
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




