- 浏览: 1088048 次
- 性别:
- 来自: 南京
博客专栏
-
Oracle管理和开发
浏览量:349908
最新评论
-
Simon.Ezer:
请问对于“如果非主键字段值发生改变,则不会同步过去”这种情况, ...
创建增量同步Oracle物化视图问题 -
dahai639:
挺好的,支持一下
Oracle的pipelined函数实现高性能大数据处理 -
zealotpz:
不错,原来是用户oracle 的所属组的问题
以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析 -
mikixiyou:
zhangyuslam 写道如果担心全局索引失效,可以使用如下 ...
Oracle分区表的分区交互技术实现数据快速转移 -
sea0108:
...
Oracle sql loader使用速成
您知道在 oracle 上创建物化视图时,需要注意到什么吗?在出错的时候,该如何调试吗?
我最近遇到这样一个问题。在创建一个每天一次、全量更新物化视图时出错了。
报的错误是 ORA-6512 ,是 关于SYS.DBMS_SNAPSHOT_UTL 包的。
这是系统包的错误,这会是Oracle bug吗?
物化视图脚本很简单,同步异地的一个数据库中的一张表到本地数据库中来,属于常见的数据同步操作。
异地和本地的数据库版本都是 Oracle 10.2.0.3 。
CREATE MATERIALIZED VIEW V_JW_COURSETIMETABLE
REFRESH COMPLETE ON DEMAND
START WITH TO_DATE('28-05-2012 21:47:56', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE + 1
AS
SELECT WID AS WID, KCM as KCM, JXBH AS JXBH, KKNF AS KKNF, KKXQM AS KKXQM, XQ AS XQ, JS AS JS, ZS AS ZS, JSGH AS JSGH
FROM USR_GXSJ.V_JW_COURSETIMETABLE@lk_rs_dpstar
where
(KKNF = '2011' AND KKXQM = '1') OR (KKNF = '2011' AND KKXQM = '2')
还有一点很郁闷。该物化视图之前是创建成功的,现在是删除掉重建就不行了。
(miki 西游的文档:原文链接链接 : http://mikixiyou.iteye.com/blog/1543973 转载请著明出处和作者)
1.分析
我们首先检查物化视图创建语法,完全没有看出来错误。
我们再核实其中的 SELECT 操作,也能正常执行出结果。
之前这个物化视图视图是存在的,只是删除掉略作字段调整而重建一下而已。
现在,我们该如何去分析和解决这个问题呢?
查官方文档:
在 oracle metalink 查阅到这些信息,有一个 bug5015547 ,他的描述信息同我们的错误完全一致。文档为 Bug 5015547 : CANNOT CREATE A MATERIALIZED VIEW OVER A DATABASE LINK OR A-942
文档中的信息如下:
Bug 5015547 : CANNOT CREATE A MATERIALIZED VIEW OVER A DATABASE LINK ORA-942
------------------
Security setup is :
Local side :
user_d - materialized view owner;
Remote side :
user_a - table owner;
user_b - has view on table in user_a's schema
user_c - has select privs on view in user_b's schema.
connect User_D/User_D
drop materialized view User_D.Table1;
CREATE MATERIALIZED VIEW User_D.Table1 REFRESH WITH ROWID AS SELECT * FROM
the statement which is failing is :
ORA-942: table or view does not exist
ORA-6512: at "SYS.DBMS_SNAPSHOT_UTL", line 1543
ORA-2063: preceding 2 lines from TARMM
因为有如此类似的 bug 信息,所以决定先安装一下补丁包,试试看能否解决掉这个问题。
(注,这里开始走了弯路,不相信自己判断,盲从官方文档)
2.解决过程
2.1安装补丁包
这是一个 RAC 架构的数据库,因此需要在每个节点上依次安装补丁包 5015547
安装过程如下:大家可以参考一下如何在 RAC 下依次安装小补丁包。
一个节点一个节点地关闭数据库实例,ASM 实例,监听器应用
/data/oracle/home/5015547@edbrac3=>+ASM3$opatch apply -local
Invoking OPatch 10.2.0.3.0
Oracle interim Patch Installer version 10.2.0.3.0
Copyright (c) 2005, Oracle Corporation. All rights reserved..
Oracle Home : /opt/app/oracle/product/10.2.0/db_1
Central Inventory : /opt/app/oracle/oraInventory
from : /var/opt/oracle/oraInst.loc
OPatch version : 10.2.0.3.0
OUI version : 10.2.0.3.0
OUI location : /opt/app/oracle/product/10.2.0/db_1/oui
Log file location : /opt/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2012-05-28_13-11-46PM.log
ApplySession applying interim patch '5015547' to OH '/opt/app/oracle/product/10.2.0/db_1'
Invoking fuser to check for active processes.
Invoking fuser on "/opt/app/oracle/product/10.2.0/db_1/bin/oracle"
You selected -local option, hence OPatch will patch the local system only.
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/opt/app/oracle/product/10.2.0/db_1')
Is the local system ready for patching?
Do you want to proceed? [y|n]
y
User Responded with: Y
Backing up files and inventory (not for auto-rollback) for the Oracle Home
Backing up files affected by the patch '5015547' for restore. This might take a while...
^[Backing up files affected by the patch '5015547' for rollback. This might take a while...
Patching component oracle.rdbms, 10.2.0.3.0...
Updating archive file "/opt/app/oracle/product/10.2.0/db_1/lib/libserver10.a" with "lib/libserver10.a/kkzd.o"
ApplySession adding interim patch '5015547' to inventory
Verifying the update...
Inventory check OK: Patch ID 5015547 is registered in Oracle Home inventory with proper meta-data.
Files check OK: Files from Patch ID 5015547 are present in Oracle Home.
Running make for target ioracle
The local system has been patched and can be restarted.
终于执行安装完毕。
但是创建还是报同样的错误。
下面怎么办?
2.2使用 10046 event 分析
我们还有 10046 event 工具,可以进一步分析问题内部更详细的报错信息。
alter session set events '10046 trace name context forever, level 10';
在 udump 下,找到最新的 trc 文件,就是 10046 event 生成的日志文件。在文件中,我们发现了下面有用的信息。
=====================
PARSING IN CURSOR #3 len=152 dep=2 uid=137 oct=47 lid=137 tim=15360746465623 hv=3730321282 ad='d4484170'
begin sys.dbms_snapshot_utl.get_pk_constraint_info@LK_RS_DPSTAR_FOR_USR_RS_APP (:mowner, :master, :pknm, :pktyp, :pkcols, :idxnm, :idxcols); end;
END OF STMT
PARSE #3:c=0,e=24,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=1,tim=15360746465621
WAIT #3: nam='SQL*Net message to dblink' ela= 0 driver id=1413697536 #bytes=1 p3=0 obj#=320 tim=15360746465766
WAIT #3: nam='SQL*Net message from dblink' ela= 519 driver id=1413697536 #bytes=4 p3=0 obj#=320 tim=15360746466303
WAIT #3: nam='SQL*Net break/reset to dblink' ela= 22 driver id=1413697536 break?=0 p3=0 obj#=320 tim=15360746466342
EXEC #3:c=0,e=712,p=0,cr=0,cu=0,mis=0,r=0,dep=2,og=1,tim=15360746466429
ERROR #3:err=942 tim=1572940438
=====================
PARSE ERROR #1:len=248 dep=1 uid=137 oct=3 lid=137 tim=15360746466502 err=942
SELECT WID AS WID, KCM as KCM, JXBH AS JXBH, KKNF AS KKNF, KKXQM AS KKXQM, XQ AS XQ, JS AS JS, ZS AS ZS, JSGH AS JSGH
FROM V_JW_COURSETIMETABLE@LK_RS_DPSTAR_for_usr_rs_app
where
(KKNF = '2011' AND KKXQM = '1') OR (KKNF = '2011' AND KKXQM = '2')
EXEC #2:c=0,e=22751,p=0,cr=4,cu=11,mis=0,r=0,dep=0,og=1,tim=15360746466604
ERROR #2:err=942 tim=1572940438
报错的系统包是
begin sys.dbms_snapshot_utl.get_pk_constraint_info@LK_RS_DPSTAR_FOR_USR_RS_APP (:mowner, :master, :pknm, :pktyp, :pkcols, :idxnm, :idxcols); end;
我们在 sqlplus 界面中,只看到 sys.dbms_snapshot_utl 报错,其实真正报错的是存储过程 get_pk_constraint_info 。
从这个过程名称可以看出,这是再校验基础表的主键字段出错。
我们物化视图脚步中,没有指明是使用 rowid 还是 primary key 方式遍历数据。默认使用 primary key 。
这里很可能基表上没有了主键约束。
2.3处理方法
我暂时将物化视图脚步做了修改,增加 with rowid 子句,创建成功。具体脚步如下:
CREATE MATERIALIZED VIEW V_JW_COURSETIMETABLE
REFRESH COMPLETE ON DEMAND
START WITH TO_DATE('28-05-2012 21:47:56', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE + 1
with rowid
AS
SELECT WID AS WID, KCM as KCM, JXBH AS JXBH, KKNF AS KKNF, KKXQM AS KKXQM, XQ AS XQ, JS AS JS, ZS AS ZS, JSGH AS JSGH
FROM USR_GXSJ.V_JW_COURSETIMETABLE@lk_rs_dpstar
where
(KKNF = '2011' AND KKXQM = '1') OR (KKNF = '2011' AND KKXQM = '2')
更值得推荐的方法是使用采用主键字段做刷新。在基础表上创建主键约束。
3.总结
在涉及到跨图的物化视图同步数据的开发操作时,一个最基本的要求时,基础表上有主键约束。
再深入一下,所有的表如无明确要求,都应该具有主键约束。
发表评论
-
Oracle分区表的分区交互技术实现数据快速转移
2013-01-22 11:48 14684有一个需求,将某业务表的某个时间点之前的记录转移到它的历史 ... -
等待事件enq TX row lock contention分析
2013-01-17 17:16 33220在Oracle数据库性能报告AWRRPT分析时,发现top ... -
Oracle的UNDO表空间管理总结
2013-01-14 15:06 12896UNDO是Oracle中的一个很 ... -
Oracle在不同windows系统中的迁移
2013-01-09 15:41 3715在Windows操作系统环境下 ... -
Oracle 10.2.0.1在windows 2008上安装失败经历
2013-01-07 10:29 8640这两天遇到这个一个项目上的数据库迁移的问题。原来的环境是数据库 ... -
所有的物化视图刷新脚本
2012-12-28 13:59 0select 'execute dbms_mview.refr ... -
Oracle数据库的SQL性能问题分析
2012-12-27 15:31 5238在Oracle 10.2.0.4数据库中,有一个SQL执行缓慢 ... -
db block gets和consistent gets的分析
2012-12-26 18:09 0在Oracle的文档中有这样一段解释: db block g ... -
创建增量同步Oracle物化视图问题
2012-12-25 14:07 15190我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某 ... -
查归档日志文件每小时生成量
2012-12-18 16:13 10733在O racle数据库中,通过v$archived_lo ... -
如何删掉临时表空间的文件
2012-12-18 15:40 0Unlike Oracle datafiles which m ... -
Oracle sql性能诊断暨event 10046和10053使用
2012-12-17 10:24 0早上em grid control监控显示数据库的负载增加,其 ... -
查LOB字段占用的空间大小
2012-12-13 16:00 4498查询Oracle表中LOB字段的占用空间大小。表中每一个LOB ... -
Oracle Data Guard的重做日志传输和应用状况监控
2012-12-04 14:05 4028这是一个用来监控Oracle Data Guard环境下从主库 ... -
Oracle sql loader使用速成
2012-11-30 14:14 4843Oracle SQL LOADER是Oracle的 ... -
Oracle 11g2的监听器配置
2012-11-29 14:34 4325Oracle的监听器服务注册 ... -
Deleting archivelog on physical standby with RMAN in Oracle 10g
2012-11-28 13:25 0Turns out to be quite easy ... -
to_char将number转成string的小技巧
2012-11-27 14:14 10578很多数据转换处理操作时,会遇到将0.007007040000转 ... -
to_date转成字符串时ORA-01843 not a valid month 问题分析
2012-11-26 16:38 29161(注,本文三度易稿) 在开发Oracle SQL或PL/SQL ... -
Data Guard 10g 的保护级别为RESYNCHRONIZATION问题
2012-11-25 11:01 1880Oracle的data guard创建完成 ...
相关推荐
初中语文文摘励志知恩不图报是做人智慧
针对于TI DaVinci平台的media-ctl工具,对视频采集通道进行配置的工具。在DM3730的平台上验证可以正常使用。
可怜我的C盘本来只有8.XG,所以不得不卸载掉它。 卸载掉本身没啥问题,只是昨晚突然发现 Sql Server 2008 R2 Management Studio 突然不能新建数据库关系图了,一建立就会报“找不到指定的模块(MS Visual Database ...
做为数字城市的重点公众应用天地图安全要求规范!
详细介绍了怎么建立报表,以及图报的设计,包括Ireport配置说明.pdf,Jasperreport+ireport学习笔记(1-4).pdf
解决Cesium访问数据跨域问题,数据使用tomcat部署在服务器上。
今天在模型恢复的时候出现上图报错信息,最后发现是由于调用tf.train.slice_input_producer方法产生的错误信息。它本身认为是一个tensor 修改方法: 获取batch后,在sess中先初始化即可 sess.run(tf.global_...
经典的凸包问题,解决给定点中选择出图报个数最少的点集,并按顺时针顺序将其打印出来
中国人尊崇礼尚往来,但很多场合礼节已经不仅仅是传统文化的代表,而是为人处事之道,于是就出现“见面要礼,临别要礼,办事要礼,行商要礼,感恩要礼,图报也要礼”。在“面子”消费心理驱动下,中国人的消费经常...
问题: response.status_code为418 问题描述: 当我使用Python的requests爬取网页时response和soup都是None,检查后发现response.status_code为418 错误描述: 经过网上查询得知,418的意思是被网站的反爬程序...
前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到21ic和CSDN等论坛朋友们的支持和鼓励。当年学单片机的时候datasheet和...感激、图报,很简单的想法。希望这次整理的资料帖能对更多的嵌入式爱好者朋友带来帮助!
纪检监察机关查办案件工作流程图报分管领导批准反映失实的说明情况必要时在一定范围内予以澄清有违纪事实但情节轻微不需追究党纪政纪责任的建议有关党组织做出恰当处理不立案处理组织实施报分管领导批准调查组负责实
淘宝市场综合分析助手方便广大淘宝卖家轻松获取行业关键词top100商品的各种资料并导出,分析市场价格区间占比,市场销量占比,市场价格-销量综合的综合市场分析,并提供柱状图报