使用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。