Monthly Archives: September 2011

高级应用开发者手册总结

这篇文档篇幅并不算很长,如果想对Oracle开发或优化方面了解更深入,建议还是读一下这篇文档。 虽然文档的名称叫做高级应用开发者手册,但是如果和现在目前在看的DATA CARTRIDGE开发手册相比,这篇文档就显得十分基础了。 而事实上这篇文章介绍的大部分内容都是基础知识,也包含了一些高级内容,全文分为SQL、PL/SQL和其他高级主题三部分。以SQL部分为例,有非常基础的部分如SQL数据类型、函数索引、约束等等,也有相对高级一些的内容,比如正则表达式和DOMAIN INDEX。 看完这篇文档后,除了巩固了一些基础外,感觉收获比较大的包括正则表达式、PL/SQL Hierarchical Profiler、闪回和版本。正则表达式以前没有用过,这篇文档算是入了个门,而闪回部分虽然没有包含FLASH DROP和FLASH DB的内容,这些属于管理的范畴,但已经是我目前看到所有文档里面最全面的一篇了:闪回查询、闪回版本查询、闪回事务、闪回事务版本查询、行SCN、DBMS_FLASHBACK包以及闪回数据归档,而且大部分的内容都会有具体的使用实例,并不是简单的概念介绍。而版本的内容也相当全面,尤其是利用版本升级部分,花了相当大的篇幅介绍CROSS TRIGGER。

Posted in BOOKS | Leave a comment

LOGMINER当前日志出现ORA-310和ORA-334错误

测试LOGMINER的时候出现了ORA-310和ORA-334错误。 测试代码如下: SQL> SELECT GROUP# FROM V$LOG WHERE STATUS = ‘CURRENT’; GROUP# ———- 2 SQL> SELECT MEMBER FROM V$LOGFILE WHERE GROUP# = 2; MEMBER ——————————————————————– /oracle/oradata/orcl/redo02.log SQL> EXEC DBMS_LOGMNR.ADD_LOGFILE(’/oracle/oradata/orcl/redo02.log’, DBMS_LOGMNR.NEW) PL/SQL PROCEDURE successfully completed. SQL> EXEC DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG) PL/SQL … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

DBSNMP用户的BSLN_INTERNAL出现ORA-6502错误

11.2.0.2环境的数据库,出现了ORA-12012和ORA-6502错误。 在alert文件中发现了这个错误,详细错误信息如下: 2011-09-04 00:00:01.014000 +08:00 Errors IN file /u01/app/oracle/diag/rdbms/fhacdb1/fhacdb1/trace/fhacdb1_j000_13709.trc: ORA-12012: error ON auto EXECUTE OF job "SYS"."BSLN_MAINTAIN_STATS_JOB" ORA-06502: PL/SQL: NUMERIC OR VALUE error ORA-06512: at "DBSNMP.BSLN_INTERNAL", line 2073 ORA-06512: at line 1 其中TRACE信息内容基本上和上面的错误信息一致,没有更多有价值的东西。 检查错误信息可以发现,出现错误的是SYS下的JOB,而报错的过程是DBSNMP下的BSLN_INTERNAL,怎么看都是Oracle内部的东西,显然从错误信息就可以判断,这是一个bug。 查询了一下metalink,发现在11.1.0.7上就有这个问题:Bug 10110625: DBSNMP.BSLN_INTERNAL RECEIVES ORA-06502,可惜的是Oracle目前只是确认了这个bug,解决方案和补丁目前都还没有。 不过好在问题只是偶尔出现,且对数据库来说并没有太多的影响,因此可以忽略掉。

Posted in BUG | Tagged , , | 1 Comment

会话级指定和提示级指定OPTIMIZER_FEATURES_ENABLE结果不同

帮客户优化时发现,同样是OPTIMIZER_FEATURES_ENABLE参数,在会话级设置和在HINT中指定的效果不同。 客户的数据库从11.1.0.6升级到最新的11.2.0.2之后,一些原本运行正常的SQL,查询性能变得比较差,尝试利用OPTIMIZER_FEATURES_ENABLE方式来恢复原始的执行计划,但是发现有时在会话级设置OPTIMIZER_FEATURES_ENABLE参数执行计划并没有改变,而如果直接在SQL中设置OPTIMIZER_FEATURES_ENABLE提示,则可以使得SQL的执行计划恢复到升级之前。 由于SQL 本身比较复杂,而且事实上和当前这个主题的关系不大,这里就不列出来了。一共针对6个性能变差的SQL进行调整,发现如果使用ALTER SESSION SET OPTIMIZER_FEATURES_ENABLE = ’11.1.0.6’的方式,则有3个语句恢复11.1.0.6中的执行计划,而对于另外3个执行计划并没有改变。 而如果尝试在SQL中直接嵌入提示/*+ OPTIMIZER_FEATURES_ENABLE(’11.1.0.6’) */结果发现其中5个SQL恢复了11.1.0.6的执行计划,而只有1个SQL执行计划没有改变。 虽然一直都清楚,使用OPTIMIZER_FEATURES_ENABLE并不能100%保证SQL的执行计划恢复到指定版本,但是确实没有想到,OPTIMIZER_FEATURES_ENABLE在提示中指定和在会话级设置还会有所区别。如果说HINT的优先级更高会覆盖会话级设置,这可以理解,但是二者效果有所区别,就说不过去了。除非是OPTIMIZER_FEATURES_ENABLE在会话级的设置不足以覆盖某些其他的会话级参数设置,从而导致这个现象的产生。

Posted in ORACLE | Tagged , , | Leave a comment

11.2 sqlplus新增连接是指定版本

在11.2中,Oracle新增了版本的功能,而随之一些工具都对于版本功能有所支持,比如11.2中,sqlplus在连接数据库时就可以指定当前数据库连接到哪个版本上。 需要说明的是,这种连接版本方式的优先级是最高的,它的优先级高于ORA_EDITION环境变量,更高于数据库默认版本,看一个简单的例子: D:\>sqlplus / AS sysdba SQL*Plus: Release 11.2.0.1.0 Production ON 星期二 9月 27 08:21:47 2011 Copyright (c) 1982, 2010, Oracle. ALL rights reserved. 连接到: Oracle DATABASE 11g Enterprise Edition Release 11.2.0.1.0 – Production WITH the Partitioning, OLAP, DATA Mining … Continue reading

Posted in BUG, ORACLE | Tagged , , , | Leave a comment

连接用户获取权限信息

有客户对AWR中报告中出现的一个查询GLOBAL_NAME的SQL存在疑问,详细分析后发现是客户端建立连接后获取权限信息的语句。 客户存在疑问的SQL是: SELECT VALUE$ FROM props$ WHERE name = ‘GLOBAL_DB_NAME’ 而这个SQL出现在AWR报告中执行次数部分,可以看到这个SQL运行次数接近26W次。 Executions Rows Processed Rows per Exec Elapsed Time (s) %CPU %IO SQL Id SQL Module SQL Text 546,016 8,942,073 16.38 170.26 28.28 0.00 cm5vu20fhtnq1 select /*+ connect_by_filterin… 270,653 545,943 … Continue reading

Posted in ORACLE | Leave a comment

获取业务用户列表

在接触一个新的系统,或对一个陌生的环境进行迁移备份时,需要了解这个数据库中业务用户是哪些,系统用户有哪些,以区别对待,但有时这个工作并不太容易。 最简单的办法莫过于直接询问对数据库了解的DBA或开发人员,但是有时如果数据库中用户众多,那么没有人可以确定所有的用户范围。同样的道理,通过检查程序也有可能遗漏。何况在有些情况下,并没有人对数据库用户十分了解,也就根本无从问起。 既然所有的用户都存储在数据库中,那么利用数据库本身的方法应该可以区分哪些是业务用户,哪些是系统用户。 如果对于Oracle的用户很熟悉,那么直接通过查询DBA_USERS获取用户名列表,就可以判断的八九不离十: SQL> SELECT * FROM v$version; BANNER —————————————————————- Oracle DATABASE 10g Enterprise Edition Release 10.2.0.5.0 – Prod PL/SQL Release 10.2.0.5.0 – Production CORE 10.2.0.5.0 Production TNS FOR 32-bit Windows: Version 10.2.0.5.0 – Production NLSRTL Version 10.2.0.5.0 – … Continue reading

Posted in ORACLE | Tagged , , | Leave a comment

AIX环境dd迁移控制文件出现ORA-202和ORA-27047错误

客户尝试利用dd来迁移裸设备上的控制文件,结果出现了这个错误。 利用dd命令将控制文件从旧存储的裸设备迁移到新存储上,命令如下: dd IF=/dev/oldcontrol OF=/dev/newcontrol bs=2048k 然后尝试启动数据库,在MOUNT时报错: SQL> startup nomount ORACLE instance started. Total System Global Area 1.5032E+10 bytes Fixed SIZE 2046960 bytes Variable SIZE 2483029008 bytes DATABASE Buffers 1.2533E+10 bytes Redo Buffers 14729216 bytes SQL> ALTER DATABASE mount; ALTER … Continue reading

Posted in BUG | Tagged , , , , , | Leave a comment

运行ocrconfig replace ocrmirror出现PROT-22错误

这个错误和前面的PROT-16是同时碰到的。 运行ocrconfig replace ocr出现PROT-16错误:http://yangtingkun.net/?p=116 由于碰到了上一篇文章提到的PROT-16错误,尝试先创建ocrmirror脚本: # ./ocrconfig -REPLACE ocrmirror /dev/ocr2 PROT-22: Storage too small 现在ocr2的配置已经和要迁移的原ocr对应裸设备具有相同的大小,仍然导致了错误产生,而且根据错误信息不难看出,导致问题产生的原因是空间不足。 查询metalink发现,这是一个10.2.0.1上的bug,要求ocrmirror设备的大小要比原始ocr设备大128M,详细描述可以参考:ID 317628.1。 将ocrmirror对应的目标裸设备大小增加128M后,再次运行ocrconfig –replace ocrmirror,命令成功执行。

Posted in BUG | Tagged , , , | Leave a comment

Mini版Exadata发布——Oracle Database Appliance

由于Oracle的Exadata在大型应用中的成功,Oracle针对中小型企业推出了Exadata的mini版——Oracle Database Appliance。 Oracle Database Appliance主要针对中小企业,目标是降低中小企业的首次购买成本,因此满配的Appliance也要低于1/4配置的 Exadata,产品的主要优势是软件硬件一体化,同一个产品中集成了硬件、软件和网络,对于Oracle的License可以按需划分,最小仅需要支付4 Core的License,最多支持到24 Core。此外为了提高一体机的性能,服务器中还包含了4块73G的SSD来存储redo log,用以提高redo的读写速度。此外这款一体机的主推的功能是简化性,Oracle通过专门的部署和升级模块,使得Appliance的高可用环境部署变得异常简单,只需要2个小时左右的时间,即可配置好整个软件环境。而且以后的补丁管理同样十分方便,充分了体现了一体机简化安装简化管理的目标。另外为了降低首次购买成本,硬件费用虽然无法减少,但是Oracle的软件可以最少购买4 Core的License,而随着业务的增长可以以4 Core为最小单位增加License,最终可以扩展到24 Core。虽然Appliance面对中小型客户,但是即使是最低的4 Core单实例的配置,软件加上硬件总共也需要900K左右,而这对于中小企业而言,也绝对不是一个小数目。 虽然架构和EXADATA比较类似,也是软件硬件集成在一起,但是和EXADATA不同的是,所有的软件并非在出厂的时候全部部署好,而是除了操作系统外,没有任何其他软件,需要用户自己下载和安装。同时由于APPLIANCE的主要目标并非是性能,因此EXADATA特有的存储管理模板在APPLIANCE中并没有集成进去。而对于APPLIANCE更大的限制在于硬件无法扩展。 Oracle Database Appliance硬件包括: 4RU Chassis; 2 Server Nodes per Chassis: 2 Socket x86 per server; 6 Cores per socket 12 cores per server; 96 GB … Continue reading

Posted in NEWS | Leave a comment