使用DB_LINK 连接远程Oracle数据库示例

远程连接Oracle数据库的方法很多,但是如果在本地数据库的存储过程中,要访问一个远程数据库,我们该怎么去做呢?其实只需要做如下配置即可连接成功。以下是在存储过程中连接远程数据库并进行操作的过程:

 

1.查看远程数据库的相关数据

SERVICE_NAME

两种方式:

第一种more$ORACLE_HOME/network/admin/tnsname.ora

一般是数据库的SID

 

第二种echo$ORACLE_SID

 

2.修改本地数据库(必须和远程服务器的配置 完全一样,简单来说,直接从远程服务器 拷贝就行了)

修改本地数据库的vi$ORACLE_HOME/network/admin/tnsname.ora

添加如下:

prod =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.150)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = prod)

    )

  ) 

 

3.测试链接是否成功

在本地数据库运行 tnsping   DB.69LINK ,如果成功,可以再使用:sqlplus  username/password@DB.69LINK ,成功进入代表配置成功。

在远程服务器 创建表

SYS @ prod >conn system/oracle

 

Connected.

 

SYSTEM @ prod >create table test (n1 date) ;

 

Table created.

 

SYSTEM @ prod >insert into test select sysdate from dual;

 

1 row created.

 

SYSTEM @ prod >commit;

 

Commit complete.

 

SYSTEM @ prod >select  * from test;

 

N1

---------

10-APR-14

 

4.在本地数据库中创建远程链接

SQL> show user; 

 

USER  is  "SYS"

 

SQL> Create database link link_test connect to system identified by oracle using 'prod'  ;

 

Database  link  created;

 

此处的prod  就是 本地tnsnames.ora中配置的 '远程连接标识符'

 

SQL> select * from user_db_links;

 

DB_LINK    USERNAME    PASSWORD HOST   CREATED

--------------------------------------------------------------

LINK_TEST  SYSTEM               prod  11-APR-14

 

5.运行如下,检查链接是否已经创建:

SQL> show user; 

 

USER  is  "SYSTEM"

 

SQL> select * from sys.test@link_test;

 

N1

-------------

10-APR-14

 

6.在存储过程中应用:

CREATEORREPLACEPROCEDUREremoteAccessAS  

TYPEt_ReadUserISREFCURSOR;  

v_CursorVar1t_ReadUser;  

DECOUNTNUMBER(18);  

Begin  

SELECT*FROM表明@mylink; 

 

以上就是使用存储过程连接远程数据库的全部,更多远程数据库的连接问题在这里:http://database.51cto.com/art/201010/231338.htm

 

源文档 <http://database.51cto.com/art/201107/274247.htm>

创建时间:2022-03-30 20:47
浏览量:0