我没有怎么接触过oracle,甚至都不知道oracle的表在哪里,触发器在哪里。但我现在需要实现以下的功能,希望各位多多帮忙。我需要让sql server数据库中的两个表和另外一台服务器(比如为100.100.100.2)上的oracle数据库中的两个表实现内容同步,当然它们的字段都是一样的。我想是不是可以在oracle数据库那里写一个触发器?比如这两个表在两种数据库中都叫list1、list2,list1的字段为ID、aa、bb三个字段,list2的字段为ID、cc、dd三个字段,那么请教大家这个触发器应该怎么写呢?如果写好了,我放到oracle里麻烦吗?谢谢各位!!

解决方案 »

  1.   

    先配置透明网关到sqlserver,再写触发器保持同步,具体代码自己写
      

  2.   

    还要先配置透明网关阿?
    对于我这样一个oracle盲来说似乎有点难了:(请教各位大虾,还有别的办法吗??
      

  3.   

    听说我用asp直接远程连接oracle数据库,也需要服务器端进行什么配置才行,是吧?
    oracle还真是麻烦啊!
      

  4.   

    在Oracle数据库中连接异种数据源
    一共有三种方法:1、 透明网关(Transparent Gateways)
    2、 通用连接(Generic Connectivity)之ODBC连接
    3、 通用连接(Generic Connectivity)之OLE DB连接
    现在利用第二种方法使Oracle与SQL Server直连。1. 安装HS部件。 缺省情况下,HS服务是和Oracle 8.1.7一起安装的,你可以查询SYS用户下是否存在HS_BASE_CAPS视图,以确认HS部件是否安装,如果没有可以用相关的安装盘进行安装。 2. 配置ODBC系统连接字。 在控制面板选择“Data Sources (ODBC)”,在“系统DNS”内配置ODBC for SQL Server连接(DNS名称 eg:111)
    3. 配置tnsnames.ora,它位于ORACLE_HOME\NETWORK\ADMIN。 在这个文件中增加如下代码: hgdb(要访问的SQL SERSER 的数据库名) = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = HOSTNAME(本机IP也可))(PORT = 1521))) (CONNECT_DATA = (SID = hgdb) (要访问的SQL SERSER 的数据库名,要和Listener里配置的sid相同) (HS=OK) (打开HS服务选项 ) 
    4. 配置listener.ora,它位于ORACLE_HOME\NETWORK\ADMIN。 在这个文件中增加如下代码: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = hgdb) (要访问的SQL SERSER 的数据库名,与tnsname名称相对应 )(ORACLE_HOME = C:\oracle\ora90) (PROGRAM = hsodbc)(要使用的HS服务程序,如果使用OLE DB,程序名为hsole  ) 
    5. 重新启动Oracle listener。 6. 新增位于ORACLE_HOME\HS\ADMIN内文件,这里是inithgdb。 两行代码:   HS_FDS_CONNECT_INFO = 111(ODBC 中DNS名称)  HS_FDS_TRACE_LEVEL = 0 7,  设置数据库参数global_names=false。设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。
    global_names=true则要求, 多少有些不方便。oracle9i和oracle8i都可以在DBA用户下用SQL命令改变global_names参数alter system set global_names=false;
    8. 用管理员用户登录SQL PLUS,创建DATABASE LINK。 create database link hgdb connect to sa identified by sa using ‘hgdb’; 
    9. 测试连接。如: SQL> select * from rolldown@hgdb;
    到此我们已经完成了使用ODBC连接SQL SERVER的配置工作。现在,就需要你在ORACLE中的表上写一个触发器,当ORACLE表中数据改变时触发SQLSERVER中的表,我想这个你应该自己会写吧,要不你怎么会SQLSERVER呢?呵呵!
      

  5.   

    其实楼主是想要oracle保持和sqlserver同步,sqlserver是楼主要操作的数据库,触发器就应该建在sqlserver上,问题应该是如何从sqlserver连接oracle数据库。
      

  6.   

    oracle和sql server建立Dblink
    通过job进行同步在SQL server中通过addlinkedserver 建立连接表
    EXEC sp_addlinkedserver 
    'oradb', 
    'Oracle', 
    'MSDAORA',
    '用于 Oracle 数据库的 SQL*Net 别名'exec sp_addlinkedsrvlogin 'oradb','false',null,'oracleUser','oraclePassWord'
    select * from oracledb..oracleuser.tablename --注意大小写
      

  7.   

    heyixiang(子豚の愛人) 
    其实楼主是想要oracle保持和sqlserver同步,sqlserver是楼主要操作的数据库,触发器就应该建在sqlserver上,问题应该是如何从sqlserver连接oracle数据库。
    --------------------------------------------------------------------------这位同志理解错误啊,我的意思上要sqlserver和oracle保持同步,所以触发器应该在oracle上才对吧!
      

  8.   

    写触发器不好,你在sql里写触发器,然后调用oracle的存储过程
      

  9.   

    hxshaou(晓子):写触发器不好,你在sql里写触发器,然后调用oracle的存储过程
    ----------------------------------------------------------------------------
    请问大侠,如果是这样的话,我从sql server里调用oracle的存储过程是不是设置也很复杂的阿??