- 浏览: 1098956 次
- 性别:
- 来自: 南京
博客专栏
-
Oracle管理和开发
浏览量:353144
最新评论
-
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 14810有一个需求,将某业务表的某个时间点之前的记录转移到它的历史 ... -
等待事件enq TX row lock contention分析
2013-01-17 17:16 33298在Oracle数据库性能报告AWRRPT分析时,发现top ... -
Oracle的UNDO表空间管理总结
2013-01-14 15:06 12992UNDO是Oracle中的一个很 ... -
Oracle在不同windows系统中的迁移
2013-01-09 15:41 3807在Windows操作系统环境下 ... -
Oracle 10.2.0.1在windows 2008上安装失败经历
2013-01-07 10:29 8706这两天遇到这个一个项目上的数据库迁移的问题。原来的环境是数据库 ... -
所有的物化视图刷新脚本
2012-12-28 13:59 0select 'execute dbms_mview.refr ... -
Oracle数据库的SQL性能问题分析
2012-12-27 15:31 5289在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 15316我们采用Oracle的物化视图增量刷新机制定时将数据库A上的某 ... -
查归档日志文件每小时生成量
2012-12-18 16:13 10794在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 4584查询Oracle表中LOB字段的占用空间大小。表中每一个LOB ... -
Oracle Data Guard的重做日志传输和应用状况监控
2012-12-04 14:05 4080这是一个用来监控Oracle Data Guard环境下从主库 ... -
Oracle sql loader使用速成
2012-11-30 14:14 4955Oracle SQL LOADER是Oracle的 ... -
Oracle 11g2的监听器配置
2012-11-29 14:34 4391Oracle的监听器服务注册 ... -
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 10639很多数据转换处理操作时,会遇到将0.007007040000转 ... -
to_date转成字符串时ORA-01843 not a valid month 问题分析
2012-11-26 16:38 29314(注,本文三度易稿) 在开发Oracle SQL或PL/SQL ... -
Data Guard 10g 的保护级别为RESYNCHRONIZATION问题
2012-11-25 11:01 1923Oracle的data guard创建完成 ...
相关推荐
标题中的“初中语文文摘励志知恩不图报是做人智慧”主要探讨的是感恩与回报在人际关系中的处理方式,特别是如何正确地表达和接受善意。描述中的内容则通过电视剧中的情节,展示了施恩与受恩可能导致的复杂情感纠葛。...
《media-ctl工具详解及其在DM3730平台的应用》 在数字媒体处理领域,TI(Texas Instruments)的DaVinci平台以其强大的多媒体处理能力备受赞誉。在该平台中,一个重要的工具就是"media-ctl",它专门用于视频采集通道...
标题描述的问题是用户在卸载了Visual Studio 2011 Developer Preview之后,发现SQL Server 2008 R2的Management Studio无法创建新的数据库关系图,提示“找不到指定的模块(MS Visual Database Tools)”的错误。...
- **传统与现代的结合**:感恩教育融合了中国传统教育中的“施恩不图报”观念与西方感恩文化的精髓。 ### 5. 学生应具备的态度 - **感恩教师**:学生应当感激教师的辛勤付出,这不仅体现在言语上,更重要的是通过...
2. **新器件创建**:通过快捷键`TC`创建新器件,并使用`TW`为器件添加新的部件。 3. **格点设置**: - 管脚格点设置:使用`VGS`,设置管脚格点为100mil。 - 图形元素格点设置:同样使用`VGS`,但设置图形元素格...
在中国,虽然没有“感恩节”,但传统教育强调“施恩不图报”,感恩教育旨在传承这一优秀品质。 总结:这篇国旗下讲话强调了“关爱生命”的办学理念,提倡感恩教育,尤其是对老师的感恩,以培养全面发展的学生。感恩...
Cesium 3Dtiles加载建筑 建筑渐变色 动态光线,自定义Shader纹理,适合cesium1.87版本以上,因为1.87版本增加了CustomShader,此文档为html,引用了在线cesium cdn,可直接运行,网上版本都是一段一段的,没有基础的...
7. 图报报刊一般不允许外借,仅限于馆内阅览,这是为了避免资源的丢失。 8. 借书数量达到上限时,借用他人借书证是解决方法之一,但需注意这可能受图书馆具体政策约束。 9. 手机图书馆应用提供了多种功能,如查询...
总的来说,这份练习旨在通过各种形式帮助学生巩固和提升语文基础知识,提高他们的阅读理解能力和语言运用能力,同时引导他们深入思考和分析课文中的道德观念和人生哲理,如施恩不图报和见利忘义的道德冲突。
通过感恩教育,学生能学会图报,懂得回报父母的养育之恩,老师的教诲之恩,以及社会的关怀与帮助。 二、实践活动——扶贫帮困捐款 学生们积极参与到扶贫帮困的活动中,自发捐款,表达对社会弱势群体的关爱。此次...
试题中的“施恩图报非君子,恩将仇报是小人”以及“浪费一粒粮食就会遭到五雷轰顶”等思想,体现了道家的道德观和对自然的尊重。 3. **法家思想**:法家重视法律和制度,韩非子是其代表。"只要有一线希望,我们就尽...
她深感“知恩当图报”和“百善孝为先”的重要性,感恩父母、师长以及所有给予帮助的人。她以实际行动践行孝道,更加频繁地回家探望父母,同时也培养了儿子的孝顺之心。这些细微的变化体现了《弟子规》在日常生活中的...
中国人尊崇礼尚往来,但很多场合礼节已经不仅仅是传统文化的代表,而是为人处事之道,于是就出现“见面要礼,临别要礼,办事要礼,行商要礼,感恩要礼,图报也要礼”。在“面子”消费心理驱动下,中国人的消费经常...
前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到21ic和CSDN等论坛朋友们的支持和鼓励。当年学单片机的时候datasheet和...感激、图报,很简单的想法。希望这次整理的资料帖能对更多的嵌入式爱好者朋友带来帮助!
纪检监察机关查办案件工作流程图报分管领导批准反映失实的说明情况必要时在一定范围内予以澄清有违纪事实但情节轻微不需追究党纪政纪责任的建议有关党组织做出恰当处理不立案处理组织实施报分管领导批准调查组负责实
问题: response.status_code为418 问题描述: 当我使用Python的requests爬取网页时response和soup都是None,检查后发现response.status_code为418 错误描述: 经过网上查询得知,418的意思是被网站的反爬程序...
2. 高清图报:视觉冲击力强,72秒的节目长度,提供新闻信息。 3. 当日天气:每三小时更新,预报未来三天的天气,支持个性化定制,内容来自中国天气网。 4. 世界天气:涵盖全球城市,内容长度48秒,同样来自中国天气...