求解一个透明网关的查询问题
我使用oracle 9i的透明网关访问sql server 2005的数据表(arch_tab)。假设该表有列:A,B,C,D。
我在oracle 里建立了一个dblink(test),我执行 select * from arch_tab@test的时候,是可以查询到sql server那张表里的数据的。之后,我在oracle里新建了一张视图:
create view o_arch_view select * from arch_tab@test
将sql server 读出的结果保存在一个名为o_arch_view的视图里。我在oracle里执行查询语句:
select t.A from o_arch_view t 的时候(查询A列的值)报错:ORA-00904: "T"."A"无效的标识符。为啥我执行 select * from o_arch_view的时候就没有问题?难道oracle的透明网关只能解析 select * 操作吗?为什么会报这种错误呢?该如何解决只查询一列的问题?谢谢!
我使用oracle 9i的透明网关访问sql server 2005的数据表(arch_tab)。假设该表有列:A,B,C,D。
我在oracle 里建立了一个dblink(test),我执行 select * from arch_tab@test的时候,是可以查询到sql server那张表里的数据的。之后,我在oracle里新建了一张视图:
create view o_arch_view select * from arch_tab@test
将sql server 读出的结果保存在一个名为o_arch_view的视图里。我在oracle里执行查询语句:
select t.A from o_arch_view t 的时候(查询A列的值)报错:ORA-00904: "T"."A"无效的标识符。为啥我执行 select * from o_arch_view的时候就没有问题?难道oracle的透明网关只能解析 select * 操作吗?为什么会报这种错误呢?该如何解决只查询一列的问题?谢谢!
解决方案 »
- oracle中的sql语言查询问题
- 存储过程求解,有个变量怎么处理
- 就是Oracle那个默认表,怎么查各个部分工资最低的人的信息?
- oracle text全文索引问题
- 为什么Oracle出现错误,hr用户不存在
- 请教一个初级问题,谢谢
- sql/plus语句问题求教
- 我在本机上安装了ORACLE 用于学习,还用不用安装ORACLE客户端??
- 谁能搞定这个问题:jsp连接oracle异常(已经7天无人能解了---我也急得半死---最后50分相赠)
- 急!!!求助!!ogg问题! 源端和目标端 7809端口建立不上
- 语句查看oracle分区表各分区记录数
- oracle 10g 安装后expdb ,impdb命令在cmd命令行不能使用! 请大侠指点迷津
前一段花了些时间配置 TRANSPARENT GATEWAY
现在把心得贴出来与大家共享我的OS是WIN2000
ORACLE 9.0
SQLSERVER2000
HOSTNAME : SVR1
都使用 tcp/ip 默认端口
1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)
安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql2: 配置 LISTENER.ORA
(SID_DESC =
(GLOBAL_DBNAME = tg4sql) # 可自己命名
(PROGRAM = tg4msql)
(SID_NAME = sql2000) # SID 自己命名
(ORACLE_HOME = D:\oracle\ora90)
)3: 在 oracle_home\ora90\tg4msql\admin
建文件 init<SID>.ora 由于LISTENER里定义SID为 sql2000
因此文件名为:initsql2000.ora
其中内容为:
HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER4: 重启 DATABASE AND LISTENER5: 配置 tnsnames.ora
tg_sql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = sql2000)
)
(HS=OK)
) 6: 建立 DATABASE LINK
CREATE PUBLIC DATABASE LINK DB_SQL
CONNECT TO SA IDENTIFIED BY PASSWORD
USING 'tg_sql'7: 完成,测试
select * from t_test@db_sql8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,
如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,
如果为 FALSE, 不必使用全称,当出现
“ORA-02019:为找到远程数据库的连接说明”
时,请使用全称,如:
select * from t_test@db_sql.US.ORACLE.COM
create view o_arch_view as select * from arch_tab@test
你看看select * from arch_tab@test出来的结果中字段A的大小写情况,
然后按照
select t."a" from arch_tab@test的方式执行