背景:
最近有sql server 2008中表的数据要导到oracle 11g中,无奈数据量太大,手工录入太费时,写程序转换数据又觉得麻烦,所以就鼓弄鼓弄oracle 的透明网关。oracle 透明网关是oracle 连接异构数据库提供的一种技术。
环境:
1. oracle 11g透明网关
2. sql server 2008数据库
3. oracle 11g数据库
注:以上3个软件都安装在同一机子上(当然你也可以安装到不同的机子上)。
方法:
1. 安装透明网关
安装很简单,这里就不截图了;在安装完后,要求配置监听,这里我们不配置,在下面的介绍中我们会手动配置。
2.透明网关安装配置
打开透明网关的安装目录,我安装的目录是F:\product\11.2.0\tg_1,然后进入到F:\product\11.2.0\tg_1\dg4msql\admin目录下,打开文件initdg4msql.ora文件。
该文件的格式是init.ora,这里的SID在后面需要用到,系统默认的是dg4msql,一般情况这样就可以了。
如果改名,在之后使用这个修改后地名字即可,配合使用Test,则文件名变成initTest.ora。
该文件是Gateway的初始参数文件,描述连接的是哪个SQL Server数据库。文件内容如下:
HS_FDS_CONNECT_INFO=localhost:1433//DATABASE_NAME
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
3. 配置监听(F:\product\11.2.0\tg_1\NETWORK\ADMIN)
在listener.ora文件中加入如下内容
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = localhost)(PORT = 1523))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = dg4msql) # 前面定义的SID
(ORACLE_HOME = F:\product\11.2.0\tg_1) #Oracle的安装目录
(PROGRAM = dg4msql) # 配置目录,不能变
)
)
4. 配置tnsnames.ora文件(F:\product\11.2.0\tg_1\NETWORK\ADMIN)
在tnsnames.ora文件中加入如下内容
dg4msql=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1523)))(CONNECT_DATA=(SID=dg4msql))(HS=OK))
5. 创建连接服务器即DBLink
create database link DG4MSQL connect to sa identified by Aa123456 using 'dg4msql';--这里的dg4msql 对应tnsname.ora文件里的服务名。
连接:SELECT * FROM ORGS@DG4MSQL;
配置完成后,查询组织表,却始终报连接“无法解析指定的连接表示符”。
当我把它换成如下形式后,发现可以连接了,
create database link dg4msql2 connect to sa identified by Aa123456
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1523))
)
(CONNECT_DATA =
(SID = dg4msql)
)
(HS = OK)
)';
SELECT * FROM ORGS@dg4msql2;
令人感到迷惑!