oracle中如何创建dblink

2024-11-25 12:07:44
推荐回答(3个)
回答1:

你是要 dblink 到另外一个 oracle?  还是 dblink 到一个 sql server ?


注:
如果创建全局dblink,必须使用systm或sys用户,在database前加public。


SQL> CREATE DATABASE LINK mydblink
  2    CONNECT TO test IDENTIFIED BY test123
  3    USING '(DESCRIPTION =
  4      (ADDRESS_LIST =
  5        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.210)(PORT = 1521)))
  6        (CONNECT_DATA = (SERVICE_NAME = orcl)
  7      )
  8    )';

Database link created.

SQL> select count(1) from user_tables@mydblink;

  COUNT(1)
----------
         6


上面的例子,是在当前 Oracle 数据库上面,创建一个 名字叫 mydblink 的数据库链接。
使用 test作为用户名,test123 作为密码。
访问的远程数据库,ip地址是 192.168.1.210,端口号是默认的 1521
远程服务器的服务名是 orcl

Oracle 连接 SQL Server
需要去下载 额外的 网关程序

注意:
本次测试
Oracle (10.2.0.1.0)  服务器 ip 地址: 192.168.1.210
SQL Server (2005 开发者版本)  服务器名(SQL2005)

下载下来的
10201_gateways_win32.zip
该 gateways 程序
可安装在 SQL Server 那台计算机上

本次网关程序,被安装在 
D:\oracle\product\10.2.0\tg_1
目录下.

安装过程会提示输入 SQL Server 数据库的信息。
该信息会被生成在
D:\oracle\product\10.2.0\tg_1\tg4msql\admin
目录下的
inittg4msql.ora
文件中。

将其复制粘贴为文件名
initTest2005.ora
然后修改内容

# This is a sample agent init file that contains the HS parameters that are
# needed for the Transparent Gateway for SQL Server

#
# HS init parameters
#
HS_FDS_CONNECT_INFO=SQL2005.test
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER


下一步,修改
D:\oracle\product\10.2.0\tg_1\NETWORK\ADMIN
目录下的
listener.ora
文件。


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oracle\product\10.2.0\tg_1)
      (PROGRAM = extproc)
    )

# 追加开始
    (SID_DESC =
      (SID_NAME = Test2005)
      (ORACLE_HOME = D:\oracle\product\10.2.0\tg_1)
      (PROGRAM = tg4msql)
    )
# 追加结束

  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = SQL2005)(PORT = 1521))
    )
  )


下一步,运行  lsnrctl stop / lsnrctl start

C:\>lsnrctl stop
输出略...

C:\>lsnrctl start
部分输出略...
服务 "Test2005" 包含 1 个例程。
  例程 "Test2005", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功


下一步,修改 
D:\oracle\product\10.2.0\tg_1\NETWORK\ADMIN
目录下的
tnsnames.ora
文件

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
    
# 追加开始
TEST2005 = 
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = SQL2005)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = Test2005)
    )
    (HS = OK)
  )
# 追加结束    
    


tnsping 测试是否正常。

C:\>tnsping test2005

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 03-10月-
2011 14:03:03

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

已使用的参数文件:
D:\oracle\product\10.2.0\tg_1\network\admin\sqlnet.ora

已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST = SQL2005)(PORT = 1521))) (CONNECT_DATA = (SID = Test2005)) (HS = OK))
OK (50 毫秒)

创建数据库链接 (DBLINK)

CREATE DATABASE LINK mssql2005
CONNECT TO "test" IDENTIFIED BY "test123"
USING '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = SQL2005)(PORT = 1521))
    (CONNECT_DATA = (SID = Test2005)
    (HS = OK)
  )
)';

SELECT * FROM test@mssql2005;

回答2:

  创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户登录到本地数据库:

回答3:

create database link to225[U1]
connect to ultranms[U2] identified by ultranms[U3]
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.2.225[U4] )(PORT= 1521))
)
(CONNECT_DATA =
(SID = nms[U5] )
(SERVER =DEDICATED)
)
)';
[U1]创建的dblink的名字
[U2]b机数据库里的用户名
[U3]b机数据库里的用户名密码
[U4]b机的ip地址和端口号
[U5]b机数据库的实例名