还是有用户喜欢用 MS ACCESS 通过 ODBC 连 Oracle 数据库,修正数据。
对于一般比较高级的授权用户,这样做,我们是允许的。我们会去安装 ODBC 在 Client 端,帮助设置好,建立 ODBC。这些不细说。关于 ODBC driver -- 驱动程序,只有一点需要注意的地方,如果升级了 Oracle 的服务器端,ODBC 驱动程序所在的客户端也要升级。旧的 ODBC 驱动程序不能再使用。比方如果数据库升级到了10g Client 端也要升级到 10g client。 deinstall/reinstall 这件事多少有些麻烦。
现在说到用 MS ACCESS 通过 ODBC 链接 Oracle 的数据。
1. 先要在 Client 上面装上 Oracle ODBC 驱动程序。 Oracle Client CD 上面自带。可以选用 custom 的方式安装;
2. 在 control panel --> Administrative Tools --> Data Source (ODBC). 在 User DSN 或者 System DSN 下面建立一个新的 data source,主要是要连接的数据库信息。(别忘了这是在 TNS/Oracle Network 工作的前提之下)
3. 在 MS ACCESS 数据库里面,file --> get external data --> link tables --> ODBC database --> 选建立好的 data source 或者新建。
但是问题来了,下面一个步骤,会弹出来一个窗口,列出来可以允许ODBC data source 的那个用户连接的所有 table。这个时候,你可能一个 table 都看不到,或者能看到太多的 tables 了。
怎样限制 ODBC 列表出来的可以在 MS ACCESS 中看到的 oracle 表呢?只要在 ODBC 连接用户的 schema 下面建立两个 view 就可以控制了,比方:
CREATE OR REPLACE VIEW SCOTT.ALL_OBJECTS AS
SELECT * FROM SYS.ALL_OBJECTS
WHERE OWNER IN ('SCOTT');
CREATE OR REPLACE VIEW SCOTT.ALL_SYNONYMS AS
SELECT * FROM SYS.ALL_SYNONYMS
WHERE OWNER IN ('SCOTT');