- 浏览: 87366 次
- 性别:
- 来自: 深圳
文章分类
按照接口标准创建DBlink后. 准备创建物化视图:
CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB
BUILD IMMEDIATE
REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1
AS SELECT * FROM SUBSCRIPTION_TAB@SMGR;
不料想,执行之后语句报告错误:
SQL> CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB
2 BUILD IMMEDIATE
3 REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1
4 AS SELECT * FROM SUBSCRIPTION_TAB@SMGR;
AS SELECT * FROM SUBSCRIPTION_TAB@SMGR
*
ERROR at line 4:
ORA-00942: table or view does not exist
SQL>desc SUBSCRIPTION_TAB@SMGR
发现输出正常.
检查远程接口对象(SUBSCRIPTION_TAB)属性:为正常的数据表.
发现该表无主键,但是和ORA-00942错误无关.
暂且不表.
查找Metalink .这种问题找这个最快了
搜索出来一堆的帖子,归纳一下可能的原因:
1 远程对象为同义词,而对应的表无mv log
2 global_name 的问题
3 Bug.
4 MLOG$_ 的问题.要重新创建MV log
...
n others
快刀斩乱麻加上猜测,发现以上皆非
此过程花费时间若干,眼睛花了好几回.
还有我们有最后一招:
set events ''942 trace name errorstack level 10''
设定跟踪,
SQL> alter session set max_dump_file_size = unlimited;
Session altered.
SQL> alter session set events ''10046 trace name context forever, level 12'';
Session altered.
SQL> alter session set events ''942 trace name errorstack level 10'';
Session altered.
SQL> CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB
2 BUILD IMMEDIATE
3 REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1
4 AS SELECT * FROM SUBSCRIPTION_TAB@SMGR;
AS SELECT * FROM SUBSCRIPTION_TAB@SMGR
*
ERROR at line 4:
ORA-00942: table or view does not exist
...................
此过程如果执行中如果提示用户无权限,需要作适当的授权
然后找到我们的Trace 文件:
[oracle@stat udump]$ ls -ltr
......
-rw------- 1 oracle oracle 1425501 May 13 18:23 stat_ora_1512.trc
-rw------- 1 oracle oracle 1518962 May 13 18:26 stat_ora_1595.trc
-rw------- 1 oracle oracle 1519241 May 13 18:27 stat_ora_1689.trc
-rw------- 1 oracle oracle 1486910 May 13 18:31 stat_ora_1700.trc
-rw-rw---- 1 oracle oracle 1677 May 14 14:49 stat_ora_1046.trc
-rw-rw---- 1 oracle oracle 631 May 15 19:35 stat_ora_14864.trc
-rw-rw---- 1 oracle oracle 631 May 15 19:42 stat_ora_15187.trc
-rw-rw---- 1 oracle oracle 631 May 15 20:57 stat_ora_18540.trc
-rw------- 1 oracle oracle 943813 May 15 21:41 stat_ora_20358.trc //This one!
打开该文件,看了半天,没看太明白.乱糟糟的一大堆内容,头疼.还是格式化一下再看:
[oracle@stat udump]$ tkprof stat_ora_20358.trc SNAPSHOT.sql
查看 SNAPSHOT.sql
这回内容还算清晰,发现主要相关内容如下:
The following statements encountered a error during parse:
SELECT * FROM "witsdba"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
Error encountered: ORA-00942
--------------------------------------------------------------------------------
SELECT "witsdba"."SUBSCRIPTION_TAB".CURRVAL@SMGR.US.ORACLE.COM FROM
DUAL@SMGR.US.ORACLE.COM
Error encountered: ORA-02289
--------------------------------------------------------------------------------
SELECT * FROM "PUBLIC"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
Error encountered: ORA-00942
--------------------------------------------------------------------------------
SELECT "PUBLIC"."SUBSCRIPTION_TAB".CURRVAL@SMGR.US.ORACLE.COM FROM
DUAL@SMGR.US.ORACLE.COM
Error encountered: ORA-02289
--------------------------------------------------------------------------------
CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB
BUILD IMMEDIATE
REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1
AS SELECT * FROM SUBSCRIPTION_TAB@SMGR
--------------------------
[oracle@stat udump]$ tkprof stat_ora_20358.trc SNAPSHOT.sql
SELECT * FROM "witsdba"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
...
先从这句下手,从sqlplus 命令中输入,查询看看:
SQL> SELECT * FROM "witsdba"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
2 /
SELECT * FROM "witsdba"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-02063: preceding line from SMGR
...
Faint ,不太可能阿.
刚才desc SUBSCRIPTION_TAB@SMGR 不是还好好的么?
莫非是,莫非是witsdba导的鬼?
SQL> c/witsdba/WITSDBA
查询,居然OK.
抽取dblink SMGR 的ddl :
CREATE DATABASE LINK SMGR CONNECT TO "witsdba" IDENTIFIED BY "mypasswd" USING
''smgr'';
...
"witsdba" ??!!
删掉,重新创建.
CREATE DATABASE LINK SMGR CONNECT TO WITSDBA IDENTIFIED BY "mypasswd" USING
''smgr''
/
...
执行SQL,创建物化试图.一切正常。
打扫战场,做个总结
以上涉及到具体的表名字因为设计到安全问题均已经作了适当的处理。
整个过程比较关键的还是alter session set events ''942 trace name errorstack level 10'' 这一步
很多时候,如果DBA在Metalink上提交一个Tar的话。Oracle技术支持人员会要求用户按照一定操作提交Trace文件。
出于其他的原因(开始还以为是个Bug),只好自己动手了。而且,瞎猫碰上了死耗子,碰巧解决了问题。
CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB
BUILD IMMEDIATE
REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1
AS SELECT * FROM SUBSCRIPTION_TAB@SMGR;
不料想,执行之后语句报告错误:
SQL> CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB
2 BUILD IMMEDIATE
3 REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1
4 AS SELECT * FROM SUBSCRIPTION_TAB@SMGR;
AS SELECT * FROM SUBSCRIPTION_TAB@SMGR
*
ERROR at line 4:
ORA-00942: table or view does not exist
SQL>desc SUBSCRIPTION_TAB@SMGR
发现输出正常.
检查远程接口对象(SUBSCRIPTION_TAB)属性:为正常的数据表.
发现该表无主键,但是和ORA-00942错误无关.
暂且不表.
查找Metalink .这种问题找这个最快了
搜索出来一堆的帖子,归纳一下可能的原因:
1 远程对象为同义词,而对应的表无mv log
2 global_name 的问题
3 Bug.
4 MLOG$_ 的问题.要重新创建MV log
...
n others
快刀斩乱麻加上猜测,发现以上皆非
此过程花费时间若干,眼睛花了好几回.
还有我们有最后一招:
set events ''942 trace name errorstack level 10''
设定跟踪,
SQL> alter session set max_dump_file_size = unlimited;
Session altered.
SQL> alter session set events ''10046 trace name context forever, level 12'';
Session altered.
SQL> alter session set events ''942 trace name errorstack level 10'';
Session altered.
SQL> CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB
2 BUILD IMMEDIATE
3 REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1
4 AS SELECT * FROM SUBSCRIPTION_TAB@SMGR;
AS SELECT * FROM SUBSCRIPTION_TAB@SMGR
*
ERROR at line 4:
ORA-00942: table or view does not exist
...................
此过程如果执行中如果提示用户无权限,需要作适当的授权
然后找到我们的Trace 文件:
[oracle@stat udump]$ ls -ltr
......
-rw------- 1 oracle oracle 1425501 May 13 18:23 stat_ora_1512.trc
-rw------- 1 oracle oracle 1518962 May 13 18:26 stat_ora_1595.trc
-rw------- 1 oracle oracle 1519241 May 13 18:27 stat_ora_1689.trc
-rw------- 1 oracle oracle 1486910 May 13 18:31 stat_ora_1700.trc
-rw-rw---- 1 oracle oracle 1677 May 14 14:49 stat_ora_1046.trc
-rw-rw---- 1 oracle oracle 631 May 15 19:35 stat_ora_14864.trc
-rw-rw---- 1 oracle oracle 631 May 15 19:42 stat_ora_15187.trc
-rw-rw---- 1 oracle oracle 631 May 15 20:57 stat_ora_18540.trc
-rw------- 1 oracle oracle 943813 May 15 21:41 stat_ora_20358.trc //This one!
打开该文件,看了半天,没看太明白.乱糟糟的一大堆内容,头疼.还是格式化一下再看:
[oracle@stat udump]$ tkprof stat_ora_20358.trc SNAPSHOT.sql
查看 SNAPSHOT.sql
这回内容还算清晰,发现主要相关内容如下:
The following statements encountered a error during parse:
SELECT * FROM "witsdba"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
Error encountered: ORA-00942
--------------------------------------------------------------------------------
SELECT "witsdba"."SUBSCRIPTION_TAB".CURRVAL@SMGR.US.ORACLE.COM FROM
DUAL@SMGR.US.ORACLE.COM
Error encountered: ORA-02289
--------------------------------------------------------------------------------
SELECT * FROM "PUBLIC"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
Error encountered: ORA-00942
--------------------------------------------------------------------------------
SELECT "PUBLIC"."SUBSCRIPTION_TAB".CURRVAL@SMGR.US.ORACLE.COM FROM
DUAL@SMGR.US.ORACLE.COM
Error encountered: ORA-02289
--------------------------------------------------------------------------------
CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB
BUILD IMMEDIATE
REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1
AS SELECT * FROM SUBSCRIPTION_TAB@SMGR
--------------------------
[oracle@stat udump]$ tkprof stat_ora_20358.trc SNAPSHOT.sql
SELECT * FROM "witsdba"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
...
先从这句下手,从sqlplus 命令中输入,查询看看:
SQL> SELECT * FROM "witsdba"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
2 /
SELECT * FROM "witsdba"."SUBSCRIPTION_TAB"@SMGR.US.ORACLE.COM
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-02063: preceding line from SMGR
...
Faint ,不太可能阿.
刚才desc SUBSCRIPTION_TAB@SMGR 不是还好好的么?
莫非是,莫非是witsdba导的鬼?
SQL> c/witsdba/WITSDBA
查询,居然OK.
抽取dblink SMGR 的ddl :
CREATE DATABASE LINK SMGR CONNECT TO "witsdba" IDENTIFIED BY "mypasswd" USING
''smgr'';
...
"witsdba" ??!!
删掉,重新创建.
CREATE DATABASE LINK SMGR CONNECT TO WITSDBA IDENTIFIED BY "mypasswd" USING
''smgr''
/
...
执行SQL,创建物化试图.一切正常。
打扫战场,做个总结
以上涉及到具体的表名字因为设计到安全问题均已经作了适当的处理。
整个过程比较关键的还是alter session set events ''942 trace name errorstack level 10'' 这一步
很多时候,如果DBA在Metalink上提交一个Tar的话。Oracle技术支持人员会要求用户按照一定操作提交Trace文件。
出于其他的原因(开始还以为是个Bug),只好自己动手了。而且,瞎猫碰上了死耗子,碰巧解决了问题。
发表评论
-
SGA与PGA
2012-02-27 10:59 9273一、名词解释 (1)SGA:System Global Are ... -
SGA与PGA
2012-02-27 10:59 0一、名词解释 (1)SGA:System Global Are ... -
ORALCE函数大全
2012-02-21 14:08 726ORACLE日期时间函数大全 TO_DAT ... -
regex
2012-02-03 15:18 767ORACLE中的支持正则表达 ... -
oracle 等待
2012-02-02 15:17 1150ORACLE的等待事件,主要可以分为两类,即空闲(IDLE)等 ... -
oracle em
2012-01-31 14:16 735访问地址:https://localhost:1158/em ... -
oracle 正则表达式
2012-01-13 17:26 7621、正则表达式中的元字符 元字 ... -
oracle 事件
2011-12-30 16:32 906很多时候,对数据库进行性能诊断可以使用SQL跟踪的方法,把一些 ... -
ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间 解决办法
2011-12-29 19:59 12731 查看所有回滚段信息: select segment_nam ... -
重做表空间
2011-12-29 18:03 873/*系统UNDO表空间的重建*/ --1. 创建新的UNDO ... -
数据参数出错 ORA-00119 ORA-00132
2011-12-09 11:07 4559SQL> startup ORA-00119: inva ... -
物化视图使用
2011-11-29 13:29 783物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副 ... -
ORACLE优化
2011-11-17 21:27 861对于OLTP系统,应该关注 ... -
精通表转成分区表
2011-11-15 20:15 345SQL> CREATE TABLE T_N (ID NU ... -
oracle 归档日志
2011-11-15 15:44 699Oracle可以将联机日志文件保存到多个不同的位置,将 ... -
rman 详细
2011-11-03 18:33 5671、连接到目标数据库(不用恢复目录数据库): R ... -
RMAN备份命令(转摘)
2011-11-03 15:21 6181、切换服务器归档模式,如果已经是归档模式可跳过此步: %sq ... -
增量备份
2011-10-24 17:41 7901. 确认ORACLE数据库属于归档模式 sqlplus ... -
表同步
2011-10-24 17:40 647--名词说明:源——被同步的数据库 目 ... -
oracle 权限查询
2011-10-11 12:04 669查看Oracle用户权限一般要通过一些实际操作,首先需要遍历所 ...
相关推荐
oracle 存储过程 函数 dblink 绝对对工作和平时学习有价值的资料。针对个人具体情况做修改即可使用
执行存储过程,通过指定目标数据库登录信息,动态生成dblink,打开游标,按批次插入本地指定表中,每批次1万条数据。同步记录和日志信息写在自动生成的sync_log表中。同步完成后自动删除动态生成的存储过程、dblink...
主要介绍了Oracle报存储过程中调用DBLink同义词出现错误:PLS-00201: 必须声明标识符的相关资料,需要的朋友可以参考下
本周由于公司一个系统的oracle数据库需要采集另一个系统mysql数据库的数据,于是对oracle通过dblink连接mysql进行了研究,测试环境是单实例oracle 10g 64位,折腾了半天搞定了,但是生产环境是10g rac,原本以为会很...
该存储过程实现源数据库按照时间同步更新计算库的过程 实现表的同步以及动态表某期间的数据同步。 该存储过程主要演示了: 1.dblink创建和dblink的使用; 2.如何使用字典表和游标实现选择性数据同步。
dblink的使用,看完之后就知道如何使用啦
ODI中的过程类似数据库中的存储过程为,在ORACLE数据库中可以通过DBLINK实现跨库调用其它数据库的对象(表、视图等),当遇到不同类型的数据时则需要插件并且需要做大量的配置工作(如:ORACLE gateways 可以实现...
利用dblink在数据远程备份时进行oracle跨用户的数据拷贝
jdbc dblink 实现,允许在 oracle 和任何其他 jdbc 可访问数据库之间创建 jdbc 链接,以通过 sql 和 pl/sql 启动查询或执行远程存储过程。 这也允许从 10.2.0 达到 Oracle 7.3.4。
oracle数据库:表空间及用户 表、视图、序列 表的基本操作:增、删、改、查 操作符及SQL函数 多表查询 存储过程和DBLINK 数据库备份
实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中。 二. 实现方法步骤: 1. 创建存储过程 2. ...
最近,改进个以前同事做的一个数据库联接类,现在把它做成了DLL,这个DLL可以很方便的进行数据库联接,SQL语句执行以及存储过程的调用并返回结果。 使用方法: 1,追加参照。 2,在程序中直接使用。 ...
建立dblink访问远程服务器数据库, 建立同义词转换远程表访问 建立存储过程将同义词表同步到本地表 建立job定时执行存储过程同步数据 代码已测试通过
oracle 存储过程,批处理脚步和DBLINK快速同步其它站点组织结构。
数据库设计的物理数据模型,即PDM文档(包括表、视图、存储过程、包、触发器、序列、domain、索引、主键) 由PDM生成的数据库建库脚本。 其他不在PDM文档中表达的数据库脚本,比如dblink,job,type等。 1.2 ...
【说明】数据库视图、同义词、物化视图、DBLink的建设原因,并阐述是否存在性能问题 存储空间规划 【说明】 1.估算系统的初始数据量,增长量及周期,初始数据空间需求 2.是否建立独立的表空间,索引空间,临时表...
一、表空间的操作 二、用户、角色、权限 ...六存储过程、函数、触发器 七、同义词操作八、dblink操作 九、Sequences操作 十、数据库必须掌握的技巧 十一、oracle锁管理 十二数据库备份和迁移 十三oracle性能调优问题
实验41:编写存储过程 83 实验42:编写包package 85 第三部分数据库的体系结构 88 实例的维护 88 实验43:数据库的最高帐号sys的操作系统认证模式 90 实验44:数据库的最高帐号sys的密码文件认证模式 92 实验45:...