如题;
我想实现在oracle1数据库中使用sql,或者存储过程,触发器来操作另一台oracle2数据库,请问我需要做哪些配置?之前自己查询过相关解决方案:
1。配置TNS,然后创建dblink, 创建同义词
-- 错误提示:ORA-12505:TNS:监听程序无法识别连接描述符中所给出的SID.
2。使用sp_addlinkedserver命令,根本执行不到,最后才知道是SQL SERVER的命令..请知道的前辈给以明确指示:最好能提示哈,每个步骤怎么操作的. 先谢了。
我想实现在oracle1数据库中使用sql,或者存储过程,触发器来操作另一台oracle2数据库,请问我需要做哪些配置?之前自己查询过相关解决方案:
1。配置TNS,然后创建dblink, 创建同义词
-- 错误提示:ORA-12505:TNS:监听程序无法识别连接描述符中所给出的SID.
2。使用sp_addlinkedserver命令,根本执行不到,最后才知道是SQL SERVER的命令..请知道的前辈给以明确指示:最好能提示哈,每个步骤怎么操作的. 先谢了。
这样的错误,网上很多 ,你搜下吧
不过主要业务方面涉及到使用该功能, 之前做过ORACLE到SQL2000透明网关,是可以在ORACLE里边直接操作SQL2000里边的表的, 我想可能我所理解的方式不对吧,应该可以实现这功能的吧; SQL SERVER数据库都可以,我想ORACLE肯定可以的.. 还请有大牛不吝赐教..
grant select, references, alter, index on sykm006 to ORACEL2;然后:进入ORACEL2用户,建立与ORACEL1的同义词
create or replace synonym sykm006 for ORACEL1.SYKM006; 最后:在ORACEL2用户下 运行sql:
select * from sykm006运行正常,可以查出ORACEL1用户下的sykm006表的数据,表明成功。 这样做的前提的是 数据库ORACEL1和数据库ORACEL2在同一台机器上。至于在不同的机器上,期待
CONNECT TO 用户名 IDENTIFIED BY 密码
USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = X.X.X.X)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = SID)))';这样过后, 还需要配置其他么?同义词配置不配置无所谓,主要是使用方便
1.tns的配置是否正确?可以在数据库所在服务器使用tnsping XXX查看
2.创建的dblink是否正确? 你可以是用 select * from table_name@dblink_name的方式来查询
3.你的SQL是否有问题?建议你将TNS配置信息,DBLINK的创建脚本(密码隐藏掉),执行的SQL语句都发出来看看
CREATE PUBLIC DATABASE LINK crm_boss
CONNECT TO name IDENTIFIED BY pwd
USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 172.16.0.169)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = SID)))'这句话中,的name、pwd参数值,我写的是在net manager里边配置时测试的那个账号,密码;不知道对不对,不对的话,应该写那个用户名、密码; SID我写的是目标数据库名字;(因为我看到在oracle/db_1/network/admin/tnsnames.ora里边配置的); 不知道我这样写对不对, 之前没手动配置过这个,全是依照之前那些tns配置推理修改的;若不对, 怎么样修改呢, 谢谢;最后查询语句是 select * from 表名@crm_boss;
弹出的错误信息入帖子上发的;
注明: oracle我是菜鸟, 接触时间不多; 若犯的错误比较基础;还望各位前辈给予指出,不吝赐教;再次感谢.
oracle1:192.168.1.58 oracle_sid=orcl1
oracle2:192.189.4.57 oracle_sid=orcl2 user:scott pwd:tiger
在orcl1中创建orcl2的数据库链接
orcl1:sql:>
CREATE PUBLIC DATABASE LINK crm_boss
CONNECT TO scott idtified BY tiger
USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.189.4.57)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl2)))';
测试:
select * from emp@crm_boss ;
这里这个orcl1和orcl2都要在本地服务配置的,还有你配置好以后,用tnsping orcl1和orcl2,看能够PING通不,你出现的错误是指本地无法识别你的服务名。
请问下配置里边的两台ORACLE数据库, oracle_sid是怎么得到呢?
是在net_Manager里边么,还是手动配置在tnsnames.ora里边?
CREATE PUBLIC DATABASE LINK crm_boss
CONNECT TO name IDENTIFIED BY pwd
USING '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 172.16.0.169)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = SID)))'这一句话就OK的, name、pwd是netManager里边配置的登陆sqlplus的用户名、密码,SID是目标数据库名称;