我在两台机器上装的都是Oracle - OraDb10g_home1,然后在A机器上创建数据库ORC, B机器上也创建数据库ORC。
然后用vc以ADO的方式读写数据库。
问题是我对本机的数据库操作是好用的。但是在A机器上无法联接B上的数据源。   _bstr_t strConnect =_T("Provider=OraOLEDB.Oracle;Server=192.168.10.3:1521;Data Source=ORC;User Id=DD;Password=ORC;");   

  try
  {  m_pConnection->Open(strConnect,"","",-1); }
  catch(_com_error e)
  {                      ...               }        192.168.10.3 是B在局域网上的IP地址。1.这个strConnect语句对吗?端口是不是就是ORC的监听端口。
2.Orcale的服务端还要进行哪些设置?现在两个机器都是server版,可不可以。
谢谢大家了。

解决方案 »

  1.   

    在服务器 A 上用 net confiuration assistant 建立服务器 B 的本地服务名。
    然后用本地服务名链接。
      

  2.   

    你在A机连B机数据库。你A机上的tnsnames配制正确么?
      

  3.   

    打开A机上的%oracle_home%\network\admin\tnsnames.ora文件。
    参看已存在的内容,然后在这个文件里新建个相同格式的,改成B数据库的相应参数。
      

  4.   

    打开A机上的%oracle_home%\network\admin\tnsnames.ora文件。 
    参看已存在的内容,新建b的服务名。
    # TNSNAMES.ORA Network Configuration File: C:\oracle\ora81\network\admin\tnsnames.ora
    # Generated by Oracle configuration tools.
    INST1_HTTP =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = vincent)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = SHARED)
          (SERVICE_NAME = samisvin)
          (PRESENTATION = http://admin)
        )
      )EXTPROC_CONNECTION_DATA =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
        (CONNECT_DATA =
          (SID = PLSExtProc)
          (PRESENTATION = RO)
        )
      )
    ORC2 =    
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.3)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = ORC)
        )
      )
    上面ORC2的名字随便取,但不要叫ORC,因为A机器上已经有ORC服务名了,这样连接是指定orc2,就可以连接到B
      

  5.   

    使用net manager配置一下网络服务,另外两台oracle数据库之间通讯你可以考虑使用dblink