加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Oracle访问Access实现数据同步

(2012-08-14 18:25:02)
标签:

odbc数据源

映射网络驱动器

全局数据库

创建

分类: 数据迁移

1.创建Acess数据库test.mdb;并添加表emp

http://s8/middle/a32eff28x7a5253de7ec7&690
2.创建连接access的odbc数据源

http://s5/middle/a32eff28x7a5254bac8e4&690

3.配置oracle的监听

 在$ORACLE_HOME\network\admin\listener.ora添加如下内容:

  (SID_DESC =
     (SID_NAME = hsodbc)
     (ORACLE_HOME = F:\oracle\product\10.2.0\db_1)
     (PROGRAM = hsodbc)
    )

4.重启oracle监听程序C:/>lsnrctl reload或者 lsnrctl stop;lsnrctl start

5.在ORACLE_HOME\hs\admin\inithsodbc.ora文件中,增加如下内容:

HS_FDS_CONNECT_INFO = hsodbc#此处为ODBC数据源的名称,任意合法名称
HS_FDS_TRACE_LEVEL = off

6.在$ORACLE_HOME\network\admin\tnsnames.ora添加如下内容:

accessdb=
  (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.29.38)(PORT = 1521))
     (CONNECT_DATA =
      (SID = hsodbc)
     )
     (HS=OK)
   )

确认网络服务器能ping通:C:/> tnsping accessdb;

7.创建dblink:

SQL> create database link accessdb using 'accessdb';

Database link created.

8.访问Acess数据表emp

SQL> select * from emp@accessdb;

     empid empname    empsex         empage empbirth      empsalary
---------- ---------- ---------- ---------- ------------ ----------
         1 lyn        男                 20 05-OCT-85         50000
         2 sky        男                 28 05-OCT-82         50000

NOTE:

1.oracle支持异构服务,sys用户下有HS_BASE_CAPS即可

2.有帖子说,修改D:\oracle\product\10.2.0\db_1\hs\admin 下的listener.ora文件,其实不是,应修改最熟悉的那个network\admin\下的,否则,有抛出:

ORA-28545: 连接代理时 Net8 诊断到错误
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: 紧接着 2 lines (起自 ACCESSDB) 的异常

3.access文件要在本机,网络上的不行,映射网络驱动器也不行,(否则会抛出 ORA-28500的异常)。至少我测试没成功,项目要求还必须是网络上的文件。

4.通过SQL> create database link accessdb using 'accessdb';创建的dblink,在访问Acess时报错

SQL> select * from emp@accessdb;
ERROR at line 1:
ORA-02085: database link ACCESSDB.REGRESS.RDBMS.DEV.US.ORACLE.COM connects to
HO.WORLD

查询ORA-02085的注释:database link name connects to name
cause: The database link attempted to connect to a database with a different name.
The name of the database link must be the same name as the name of the database.

Action: Create a database link with same name as the database to which it connects.
意思是:If u set the parameter 'global_names' to true,the db link name connected to this server must equal db_name + db_domain.很多时候我们只是让dblink的名字等于了db_name,所以创建出错。
解决:
SQL> show parameter global_names
NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------
global_names                         boolean     TRUE
将参数global_names的值改成FALSE,禁用database link name和全局数据库名相同的限制。
SQL> alter system set global_names=false scope=both;
System altered.
SQL> select * from emp@accessdb;
     empid empname    empsex         empage empbirth      empsalary
---------- ---------- ---------- ---------- ------------ ----------
         1 lyn        男                 20 05-OCT-85         50000
         2 sky        男                 28 05-OCT-82         50000

最后,Access访问oracle比较简单,菜单中文件---获取外部数据源--链接表,下拉框选择odbc,指向对应的oracle配置的odbc即可。

参考文章http://hi.baidu.com/t_sql/item/1e20cbba860000a1eaba93ad

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有