Maclean’s Oracle Database Tech Blog Archives

  • Script:列出数据库中子表上没有对应索引的外键

    该脚本用于列出在子表上没有对应索引的外键,没有索引可能引发额外的表锁: “You should almost always index foreign keys. The only exception is when the matching unique or primary key is never updated or deleted.” When a foreign key is unindexed, DML on the parent primary key results in a share row exclusive table lock (or share-subexclusive table lock, SSX) on the child table, preventing DML…

  • 11g compression 新特性(1)

    11g引入了大量compress相关的特性,其中之一便是dbms_compression包;GET_COMPRESSION_RATIO函数可以帮助我们了解压缩某个表后各种可能的影响。换而言之,这个函数可以让我们在具体实施表压缩技术或者测试前,对于压缩后的效果能有一个基本的印象。该包在11gr2中被首次引入,故而使用之前版本的包括11gr1都无缘得用。其次除OLTP压缩模式之外的柱形混合压缩只能在基于Exdata存储的表空间上实现。使用DBMS_COMPRESSION包获取的相关压缩信息是十分准确的,因为在评估过程中Oracle通过实际采样并建立模型表以尽可能还原逼真的数据。 我们可以通过trace来分析其评估过程中的具体操作,可以分成2步: 1. 建立原表的样本表,其采样值基于原表的大小: SQL> create table samp_dss_nation tablespace SCRATCH as select * from dss_nation sample block (50); Table created. 2. 基于采用表建立对应压缩类型的模型表: SQL> create table model_dss_nation tablespace SCRATCH compress for query high as select * from samp_dss_nation; create table model_dss_nation tablespace SCRATCH compress for query high as select * from samp_dss_nation * ERROR at line…

  • 11gr2 Pseudo-error debugging events

    so different from 10gr2,more debugging events added. for example , event 10949: 10949, 00000, “Disable autotune direct path read for full table scan” AND 10978, 00000, “general event for materialized view logs” you can view the event list from HERE.

  • 直接路径读取对于延迟块清除的影响

    在Oracle 11g版本中串行的全表扫描可能使用直接路径读取(direct path read)的方式取代之前版本中一直使用的DB FILE SCATTERED READ, 显然direct path read具备更多的优势: 1. 减少了对栓的使用,避免可能的栓争用 2.物理IO的大小不再取决于buffer_cache中所存在的块;试想某个8个块的extent中1,3,5,7号块在高速缓存中,而2,4,6,8块没有被缓存,传统的方式在读取该extent时将会是对2,4,6,8块进行4次db file sequential read,这是一种十分可怕的状况,其效率往往要比单次读取这个区间的所有8个块还要低得多,虽然Oracle为了避免这种情况总是尽可能的不缓存大表的块(读入后总是放在队列最冷的一端);而direct path read则可以完全避免这类问题,尽可能地单次读入更多的物理块。 当然直接路径读取也会引入一些缺点: 1.在直接路径读取某段前需要对该对象进行一次段级的检查点(A segment checkpoint). 2.可能导致重复的延迟块清除操作(我们假设你了解delayed block cleanout是什么). metalink 文档[ID 793845.1] 对该新版本中的变化进行了描述: Applies to: Oracle Server – Enterprise Edition – Version: 11.1.0.6 to 11.1.0.7 This problem can occur on any platform. Symptoms After migrating an 11g database from a standalone to a 4-node RAC,  a noticeable increase of ‘direct path read’ waits were observed at times. Here are the Cache sizes and Top 5 events. waits…

  • How to make BBED(Oracle Block Brower and EDitor Tool) on Unix/Linux/Windows

    “BBED(Oracle Block Brower and EDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,简单来说就是一个针对 Oracle的二进制编辑工具。该工具不受Oracle支持,所以默认是没有生成可执行文件的,在使用前需要重新编译。”   在10g中编译该工具显得较简单:   [maclean@rh2 ~]$ cd $ORACLE_HOME/rdbms/lib [maclean@rh2 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed make: `/s01/10gdb/rdbms/lib/bbed’ is up to date. [maclean@rh2 lib]$ rm bbed [maclean@rh2 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed Linking BBED utility (bbed) rm -f /s01/10gdb/rdbms/lib/bbed gcc -o /s01/10gdb/rdbms/lib/bbed -L/s01/10gdb/rdbms/lib/ -L/s01/10gdb/lib/ -L/s01/10gdb/lib/stubs/ /s01/10gdb/lib/s0main.o /s01/10gdb/rdbms/lib/ssbbded.o /s01/10gdb/rdbms/lib/sbbdpt.o `cat /s01/10gdb/lib/ldflags` -lnsslb10…

  • Fedora 13发布,附下载链接

    Fedora Linux是著名的redhat公司除收费的RHEL发行版外一个免费的实验性操作系统(实验性是相对于Redhat Enterprise Linux而言); 其最新版本Version 13在近期发布了(点这里进入下载页面);Fedora是一个基于社区的发行版本,同时它十分流行,其流行度仅次于Ubuntu乌班图。

  • AIX学习经典书籍:AIX 5L Administration

    McGraw-Hill出版的经典AIX学习书籍,作者是Randal K.michael, 仅作学习研究用途。 AIX5L_administration

  • ORA-00600 [KCBZPB_1], [59033077], [4], [1], [] example

    below is the 600 entry in the alertlog: alert.log: Hex dump of Absolute File 14, Block 312821 in trace file /u01/ORAHOME/app/oracle/admin/TIGERS7/bdump/tigers7_dbw0_10999.trc *** Corrupt block relative dba: 0x0384c5f5 (file 14, block 312821) Bad header found during preparing block for write Data in bad block – type: 6 format: 1 rdba: 0x00000384 last change scn: 0xf90b.c5f55f7c seq:…

  • 关于参数log_file_name_convert

    Oracle文档对于该参数的描述十分容易产生歧义:converts the filename of a new log file on the primary database to the filename of a log file on the standby database,有时被误解为归档日志的文件名转换。 如在某standby备库进行以下测试:   alter system set log_file_name_convert=’orcl’,’ZZZZZZ’ scope=spfile; SQL> select fnnam,fnonm from x$kccfn; FNNAM ——————————————————————————– FNONM ——————————————————————————– /u01/oradata/ZZZZZZ/redo03.log /u01/oradata/orcl/redo03.log /u01/oradata/ZZZZZZ/redo02.log /u01/oradata/orcl/redo02.log /u01/oradata/ZZZZZZ/redo01.log /u01/oradata/orcl/redo01.log alter system set log_file_name_convert=’orcl’,’8888888′ scope=spfile; SQL> select fnnam,fnonm from x$kccfn;…

  • ORA-00600 [kcbz_check_objd_typ_3]错误一例

    5月26日凌晨某客户实例警告日志中出现”ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_3], [0], [0], [1], [], [], [], []“,经过分析发现与之前CR实例发生的600错误情况症状相同。 从跟踪文件m1_m0001_4209.trc中可以看到当时的执行的SQL语句,如附件。 PL/SQL的调用堆栈为: —– PL/SQL Call Stack —– object      line  object handle    number  name 3f3e89300        10  package body SYS.PRVT_HDM 3f5e9d3d8        16  SYS.WRI$_ADV_HDM_T 3f3f90898      1535  package body SYS.PRVT_ADVISOR 3f3f90898      1618  package body SYS.PRVT_ADVISOR 3f3e89300       106  package body SYS.PRVT_HDM 3eb69a3f8         1  anonymous block 函数调用堆栈为: kgerinv…