-
Recent Posts
Recent Comments
- yangtingkun on 非空字段空值对查询的影响
- Eric Zong on 非空字段空值对查询的影响
- Kamus on Oracle Ace Director
- 设置全局死锁优先级 | yangtingkun on RAC全局死锁检测时间
- ORA-600(krbounotread_noctx)错误 | yangtingkun on ORA-600(krboReadBitmap_badbitmap)错误
Archives
- December 2020
- February 2019
- December 2018
- November 2018
- October 2018
- July 2018
- June 2018
- May 2018
- July 2016
- July 2013
- June 2013
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
Categories
Meta
Author Archives: yangtingkun
ORA-600(4415)错误
客户的11.2的DATA GUARD数据库出现了这个错误。 一般DATA GUARD数据库出现错误的可能性不大,而ORA-600错误的可能性就更小了,而且一旦出现,多半意味着DATA GUARD环境损坏,轻则需要恢复,重则需要重建。 不过这个错误并没有那么大危害: Fri Sep 16 17:57:13 2011 Errors IN file /u01/app/oracle/diag/rdbms/ora190/ora190/trace/ora190_ora_18743334.trc (incident=288185): ORA-00600: 内部错误代码, 参数: [4415], [], [], [], [], [], [], [], [], [], [], [] Incident details IN: /u01/app/oracle/diag/rdbms/ora190/ora190/incident/incdir_288185/ora190_ora_18743334_i288185.trc USE ADRCI OR Support Workbench … Continue reading
版本中删除对象导致当前和子版本中对象不可见
在文档中看到这部分的描述,不过有一个疑点不是很确认,于是验证了一下。 如果一个用户启用了版本,用户执行某个过程或函数时,如果在当前版本中找不到,自动会去父版本寻找,如果还找不到会去祖先版本中寻找,一直到ORA$BASE中都无法找到,才回报错对象不存在。 但是用户明确的删除操作会使得继承关系中断。一个用户如果删除当前版本中的对象,那么父版本中的对象并不会删除,只不过这个对象在当前版本中不在可见。 看到文档上的这个描述,我的疑问是,对于当前版本的子版本,能否判断父版本中对象是被删除,还是根本没有创建。换句话说,当前版本删除对象后,自版本能否绕过当前版本从父版本处继承对象。 -bash-3.2$ sqlplus test/test SQL*Plus: Release 11.2.0.2.0 Production ON Thu Sep 15 21:04:58 2011 Copyright (c) 1982, 2010, Oracle. ALL rights reserved. Connected TO: Oracle DATABASE 11g Enterprise Edition Release 11.2.0.2.0 – Production WITH the Partitioning, OLAP, … Continue reading
ITPUB名人堂第二期
感谢ITPUB将我选为名人堂第二期的嘉宾,其他废话就不多说了,下面是访谈内容。 杨总: 您好!很高兴有这个机会能对您进行采访,本次我们准备了以下一些问题需要您来解答,谢谢。 问题1:现在大家都是开始玩微博了,现在累计有两千多篇技术博客文章,您这么多年仍然坚持着每天至少一篇博客的好习惯,是什么样的一种动力让您这么多年一直坚持写下来呢? 答:其实我开始写博客的时候,博客已经流行一段时间了。一开始根本没有想过要申请一个博客,直到有一天自己通过查询文档解决了一个比较复杂的问题后,才发现自己面临一个问题:如果不把这个解决问题的步骤记录下来,那么过不了多长时间,很可能就会忘记一些关键的步骤,那么下次即使碰到同样的问题,对自己来说仍然可能需要重头开始。而如果将其保存在文本文件中,那么时间久了,查找起来就会很不方便,而当时的博客恰好可以满足我的需要,于是我的博客也就这样诞生了。 刚开始的时候手头现有的值得记录的东西较多,于是博客更新的就比较勤。有一段时间比较忙,博客的更新也就基本上停顿了。但是慢慢我发现,如果不去更新博客,那么自己就会相应的比较懒,而工作之外花在学习Oracle上的时间也会随之减少。意识到这一点后,我恢复了博客的更新,并给自己定下了每天更新一篇的目标,于是我的博客变成了督促我每天学习Oracle知识,总结Oracle经验的工具。刚开始的时候坚持可能确实比较困难,但是坚持的时间越长,就越不会轻易放弃。当坚持的时间超过了一年,更新博客就已经变成一种习惯了。 问题2:您写的博客文章包含的内容很丰富,现在有很多人都将您的博客作为oracle的百科全书了。通过您多年的DBA工作经验,对数据库的开发和维护您有哪些方面的体会? 答:其实我是从数据库开发做起,经历了开发DBA的阶段,最终成为一个管理DBA的。因此可能涉猎过的东西比较杂一些,显得博客里面的东西比较多。其实绝大部分东西还都是很基础的东西,至于“百科全书”更是不敢当了。要说是“百科全书”应该是Oracle的官方文档,是metalink。 数据库开发主要涉及建模、表的逻辑和物理结构设计、PL/SQL代码编写、性能优化等方面。而管理或维护DBA的任务包括逻辑备份、物理备份、恢复、迁移和升级等。虽然从工作范围上,二者可以明确区分,但是很多时候很难界定到底属于开发范畴还是管理范围。而且如果想要数据库的后期维护成本小,前期的设计非常重要。也就是说如果DBA在设计物理逻辑结构的时候多考虑一些后期维护工作,就可以把很多复杂且烦琐的维护工作消除在设计阶段。 问题3:凭借您这么多年的工作经历,目前ORACLE数据库在国内的使用在哪些领域,使用oracle数据库方面有什么优势,以及未来您觉得数据库的发展方向是什么? 答:Oracle目前这么大的市场占有率,只要是具有一定数据规模的行业,都会存在Oracle的身影。 如果要说Oracle数据库的优势,最主要还是体现在大数据量OLTP环境中,Oracle特有的锁机制和多版本读一致性,最大限度提升了系统所能承载的并发用户数。而对于小数据量的情况或OLAP环境中,Oracle并没有绝对的优势。 数据库的发展方向我无法预测,不过Oracle数据库的发展方向却比较明显。Oracle数据库会越来越智能、所集成的功能会越来越强大,而数据库和存储的一体化(Exadata)很可能是今后几年Oracle发展的主要方向。 问题4:现在有很多人都在说Oracle数据库现在越来越稳定,功能越来越先进,越来越自动,于是断言DBA这个行业将要逐渐消亡,请问您对此有何看法?DBA的前景如何? 答:说DBA行业将要逐渐消亡显然是杞人忧天,确实Oracle很稳定,而且随着新版本新功能的不断增加,使得原本很多需要人工设置的工作都可以自动完成了。但是我想问一个问题,大家可能都会使用类似crontab + shell + rman的方式每天自动备份数据库,但是有人会通过shell + rman来自动进行数据库的恢复吗?Broker早就支持DATA GUARD的STANDBY数据库自动FAILOVER,但是在产品环境中设置成自动FAILOVER的,我还从来都没有见过。 我到是觉得Oracle还远远不够自动。从8i到11g,看看Oracle的自动化做了哪些:内存空间的自动管理、UNDO空间自动管理、存储参数自动管理、RMAN备份和归档存放的自动管理、统计信息自动收集、AWR数据自动采集,最多在加上一个存储自动管理ASM。 同样看看从8i到11g,DBA所需要掌握的知识发生了哪些变化:RAC从最早的OPS发展到CLUSTER 到最新的GI,基本上一个大版本就会发生一次重大的结构上的改变;DATA GUARD从最早的 PHYSICAL发展到LOGICAL再到SNAPSHOT;数据复制从最早的ADVANCED REPLICATION发展到STREAM到现在GOLDENGATE;SQL提示从HINT到OUTLINE到SQL BASELINE;导入导出工具从EXP/IMP到EXPDP/IMPDP;统计信息工具从ANALYZE到DBMS_STATS;定时任务从JOB到SCHEDULER;性能数据从STATSPACK到AWR。这些还只不过是数据库已有功能的升级和变迁,在加上每个版本所增加的大量新特性,DBA到底是轻松了还是需要学习更多的知识就一目了然了吧。事实上,Oracle自动化的功能也不能掉以轻心,如果不了解实现的细节,一旦出现问题就可能造成严重的后果。 当然随着Oracle越来越自动化,以及很多图形工具使得日常管理越来越傻瓜化,可能会对初级DBA的职位有一定危险,如果Oracle都升级到了11g,你还抱着8或9的东西不放,那么被淘汰也是早晚的事情了。既然上了Oracle这个快行道,就义无反顾的走下去吧。 问题5:针对oracle数据库的学习,有哪些经验可以给大家分享一下? 答:如果能耐得下心,就去看Oracle的官方文档,从Concept看起,把Administrator、Backup and restore、Performance Tuning 等基础的东西看完,把里面所有能尝试的操作亲手做一遍,基本上就算是入门了。以后在有针对性的去看一下工具、高可用、开发、网络、安全之类的文档。这种方式的好处是基础比较扎实,而且获取信息的正确性更可控(官方文档同样存在错误,不过数量很少,初学者可无视),但是缺点也很明显,前期进度比较慢。因此前期可以去类似ITPUB这种专业论坛,多参与交流,多和别人沟通,有利用自己水平的更快提高。 问题6:通过看您的博客文章,发现您对oracle数据库的知识点掌握得很细,您对兴趣驱动型的知识学习和市场驱动型的知识学习,怎么评价?您觉得自己属于哪种类型?对将要进入这个行业的年轻人有什么寄予? 答:个人认为无论动机是什么,只要能保证积极主动的学习并且能保持相当长的一段时间,都会有所收获。只不过一般来说,如果是兴趣驱动的,那么主动性和持久性都会更好一些,如果学习、研究、探索都变成一种享受,那么想要提高水平只不过是水到渠成的事情了。 无论你是因为何种原因出于何种目的进入到Oracle数据库这个行业,希望你在Oracle学习的过程中培养出对Oracle的兴趣来,否则等待你的会是痛苦的且永不休止的学习过程。其实不只是数据库,任何一个行业都是一样的,想要获得成功而不想付出努力是行不通的。
Posted in NEWS
Leave a comment
11.2通过数据库链调用10.2过程报错
测试中无意发现了这个bug,在11.2数据库通过数据库链,执行10.2.0.1上的过程,结果出现ORA-06553: PLS-801: internal error [55916]的错误。 错误可以通过下面的例子重现: -bash-3.2$ sqlplus / AS sysdba SQL*Plus: Release 10.2.0.1.0 – Production ON Mon Sep 12 23:12:47 2011 Copyright (c) 1982, 2005, Oracle. ALL rights reserved. Connected TO: Oracle DATABASE 10g Express Edition Release 10.2.0.1.0 – … Continue reading
从磁带恢复归档出现ORA-19870错误
从磁带中直接恢复归档日志时,出现了这个错误信息。 归档日志前后备份了两次,一次是在备份数据库后做的,另一次是凌晨7点左右进行的,其中第二次备份包含的归档日志比第一次多,最近的归档日志文件备份信息如下: BS KEY SIZE Device TYPE Elapsed TIME Completion TIME ——- ———- ———– ———— ——————- 37761 3.18G SBT_TAPE 00:01:22 2011-08-27 03:22:37 BP KEY: 37761 STATUS: AVAILABLE Compressed: NO Tag: TAG20110827T032114 Handle: al_43199_1_760245675 Media: List OF Archived Logs IN backup … Continue reading
包中添加新过程应在尾部添加
在看高级应用开发手册时,在对象依赖部分,注意到这个细节。 其他对象依赖包中的过程或函数,如果这个过程或函数在包中的位置发生了变化,那么依赖当前过程或函数的对象会被置为INVALID状态。 SQL> CREATE OR REPLACE PACKAGE P_TEST AS 2 PROCEDURE P1; 3 FUNCTION F1 RETURN NUMBER; 4 END; 5 / Package created. SQL> CREATE OR REPLACE FUNCTION F2 RETURN NUMBER AS 2 BEGIN 3 RETURN P_TEST.F1; 4 END; 5 … Continue reading
Oracle Exadata的TABLE ACCESS STORAGE FULL执行计划
这个TABLE ACCESS STORAGE FULL的执行计划只有在ORACLE EXADATA上才回出现。 Oracle在Exadata上增加了一个硬件Exadata Programmable Storage Server,使得在存储系统可以变得更加智能。以往在进行全表扫描时,即使存在过滤条件,也需要将全部数据读到数据库服务器端,才能过滤掉无用的数据。但是通过这个硬件和存储软件的配合,使得这种过滤直接在存储层进行,而返回给数据库服务器的则是查询需要的结果。一方面在存储直接过滤提高访问性能,另一方面使得返回个服务器的数据量大大下降,这也是Exadata进行全表扫描性能优异的重要原因之一。 在昨天练手的时候,记录了一下这个执行计划,而这个执行计划在自己的测试环境中是不可能出现的: SQL> SELECT COUNT(*) FROM t; COUNT(*) ———- 49527761 Elapsed: 00:00:02.28 Execution Plan ———————————————————- Plan hash VALUE: 2966233522 ————————————————————————— | Id | Operation | Name | ROWS | Cost (%CPU)| TIME … Continue reading
Oracle Exadata试用
有点标题党的嫌疑,但是也没有办法,想了半天找不到一个合适的题目。 其实是一个客户从Oracle预订了EXADATA测试环境,在进行测试,我只不过跑去练练手感受一下而已,满打满算也就是一个多小时的时间。 这是一个半配的X2环境,4节点RAC,后台配置了7个存储主机。 由于是客户的环境,且客户的测试才开始,显然不能进行对数据库有太大影响的测试,事实上,RMAN备份、大数据量的EXPDP/IMPDP、SQLLOARDER等能体现EXADATA性能优势的测试都没有进行,只是通过awrextr.sql调用EXPDP导出了一份AWR数据,基本上对于数据库没有压力可言。 因此大部分测试都是运行一些插入和查询的SQL而已,这个单进程的操作是不太可能给数据库造成多大压力的,总体感觉就是确实全表扫描速度很快,一个几千万的表,运行COUNT(*)只需要2、3秒的时间,而此时这个表中还不断的插入数据。这种性能的提升,显然与EXADATA强劲的硬件架构是分不开的。 可惜测试时间太短,啥时候能接一个Oracle Exadata性能评测的活就好了。BTW:听说Oracle可能会推出一个Mini版的Exadata,看来Exadata离我们的举例越来越近了。
Posted in NEWS
Leave a comment
DBCA建库导致已有数据库出现ORA-27140错误
通过DBCA在服务器上创建一个额外的实例,结束后以外发现,原有的数据库实例出现了异常。 简单描述一下系统环境,Oracle 11.2.0.2 for Linux x86-64,随后又安装了GRID,创建了ASM磁盘组。原有的数据库有部分表空间和REDO存放在ASM磁盘组中。 为了测试,通过DBCA创建了额外的实例,事实上,通过DBCA又先后创建了两个数据库实例,第二个数据库实例创建后一切正常,将第二个实例关闭,通过DBCA创建第三个数据库实例时,导致服务器上的第一个实例出现了异常。 检查实例1上的告警日志,可以发现大量下面的错误信息: 2011-08-30 10:20:54.502000 +08:00 Process W000 died, see its trace file 2011-08-30 10:20:58.518000 +08:00 Process W000 died, see its trace file 2011-08-30 10:21:02.524000 +08:00 Process W000 died, see its trace file 2011-08-30 10:21:06.527000 … Continue reading
ORA-600(ksfdsyncdata2)错误
客户的告警日志中发现了这个ORA-600错误。 详细的错误信息为: Wed Jan 12 22:17:15 2011 KCF: WRITE/OPEN error block=0x3f6689 online=1 file=2 /TEMP/B1EDB/temp02.dbf error=27072 txt: ‘HPUX-ia64 Error: 28: No space left on device Additional information: 4 Additional information: 4155017 Additional information: -1’ Automatic tempfile offline due TO WRITE error … Continue reading
Posted in BUG
Tagged 27072, ksfdsyncdata2, No space left on device, ORA-600, temporary tablespace
Leave a comment