11.2.0.2 “_datafile_write_errors_crash_instance”

可以通过隐藏参数_datafile_write_errors_crash_instance控制DBWR进程写出到数据文件遇到I/O问题时的表现:
在版本11.2.0.2中:
1. 默认情况下,若是RAC或未启用归档的实例或出现问题的是SYSTEM表空间的数据文件会导致实例终止;其他情况下,会造成相关数据文件被OFFLINE。
2.若该参数设置为TRUE,则在DBWR写文件出现问题时总是终止本实例
3. 若设置为FALSE,仅在未启用归档或SYSTEM表空间的数据文件的情况下会终止实例;

 

” The new behavior is defined by _datafile_write_errors_crash_instance
parameter. Parameter has no default value and 3 different behaviors depending
if it is set and to which value. For default behavior (param not set) the
instance is crashed if RAC or archivelog mode is disabled or this is a system
tablespace. Otherwise the file is offlined. If param is set to TRUE, it is
crashed in all cases. If set to FALSE, it is crashed only if archivelog mode
is disabled or this is a system tablespace.”

 

参数并不能完全保证实例不受IO错误影响而意外终止,且设置该参数可能导致数据文件被OFFLINE。 具体设置方法,该参数可以在线设置:

 

SQL> alter system set “_datafile_write_errors_crash_instance”=false;

11g新特性recover corruption list

11g新特性RMAN语法recover corruption list是为了简化数据坏块的修复,在11g中recover corruption块时不需要一一指定数据文件名字了,只要是在v$database_block_corruption视图中记录的坏块,只要使用了 corruption list语法,都会试图修复。

 

下面我们使用recover .. clear命令手动造成个别数据块坏块,之后使用 recover corruption list;修复:

 

RMAN> recover datafile 8 block 100 clear;

Starting recover at 25-NOV-09
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=16 device type=DISK
Finished recover at 25-NOV-09

RMAN> 

RMAN> validate datafile 8 block 100;

Starting validate at 25-NOV-09
using channel ORA_DISK_1
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00008 name=+DATA/prodb/datafile/test.262.794687963
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
8    FAILED 0              0            1               0         
  File Name: +DATA/prodb/datafile/test.262.794687963
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              0               
  Index      0              0               
  Other      1              1               

validate found one or more corrupt blocks
See trace file /s01/diag/rdbms/prodb/PRODB/trace/PRODB_ora_16689.trc for details
Finished validate at 25-NOV-09

Corrupt block relative dba: 0x02000064 (file 8, block 100)
Bad check value found during validation
Data in bad block:
 type: 30 format: 2 rdba: 0x02000064
 last change scn: 0x0000.00185030 seq: 0x1 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x50301e01
 check value in block header: 0xcdb0
 computed block checksum: 0x4db5
ksfdrfms:Mirror Read file=+DATA/prodb/datafile/test.262.794687963 fob=0xcdc3a6a0 bufp=0x7f81c5726000 blkno=100 nbytes=8192
ksfdrfms: Read success from mirror side=1 logical extent number=0 disk=DATA_0003 path=/dev/asm-disk7
Mirror I/O done from ASM disk /dev/asm-disk7
Trying mirror side DATA_0003.
Reread of blocknum=100, file=+DATA/prodb/datafile/test.262.794687963. found same corrupt data
ksfdrnms:Mirror Read file=+DATA/prodb/datafile/test.262.794687963 fob=0xcdc3a6a0 bufp=0x7f81c5726000 nbytes=8192
ksfdrnms: Read success from mirror side=2 logical extent number=1 disk=DATA_0002 path=/dev/asm-disk6
Mirror I/O done from ASM disk /dev/asm-disk6
Trying mirror side DATA_0002.
Reread of blocknum=100, file=+DATA/prodb/datafile/test.262.794687963. found same corrupt data
ksfdrnms:Mirror Read file=+DATA/prodb/datafile/test.262.794687963 fob=0xcdc3a6a0 bufp=0x7f81c5726000 nbytes=8192
ksfdrfms:Mirror Read file=+DATA/prodb/datafile/test.262.794687963 fob=0xcdc3a6a0 bufp=0x7f81c5726000 blkno=100 nbytes=8192
ksfdrfms: Read success from mirror side=1 logical extent number=0 disk=DATA_0003 path=/dev/asm-disk7
Mirror I/O done from ASM disk /dev/asm-disk7

SQL> select * from v$database_block_corruption;

     FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTIO
---------- ---------- ---------- ------------------ ---------
         8        100          1            1593392 CHECKSUM

RMAN> recover corruption list;

Starting recover at 25-NOV-09
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=26 device type=DISK
searching flashback logs for block images
finished flashback log search, restored 0 blocks

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 11/25/2009 20:17:29
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 8 found to restore
RMAN-06023: no backup or copy of datafile 8 found to restore

oracle 11g 与分区和存储相关的增强功能

本文永久链接地址: https://www.askmac.cn/archives/oracle-11g-par…on-enhancement.html

Oracle 分区

注:REF 分区支持对子表进行修剪和智能化分区联接。虽然性能方面的改善似乎是最明显的,但也不要忽略其它方面的改进。分区必须考虑性能、可管理性和可用性等所有业务相关领域。

 

分区增强功能

 

  • 间隔分区
  • 系统分区
  • 组合分区增强功能
  • 基于虚拟列的分区
  • 引用分区

分区是一种管理大型数据库的重要工具。分区使 DBA 可以采用“分而治之”的方法管理数据库表(尤其是那些不断增长的表)。经过分区的表允许数据库在保持性能一致的同时,进行扩展以适应超大型的数据集,而不会对管理或硬件资源产生不当的影响。

分区可以加快对 Oracle DB 中数据的访问速度。不管数据库有 10 GB 还是 10 TB 的数据,分区都可以使数据的访问速度提高几个数量级。

随着 Oracle Database 11g 的推出,DBA 将会发现一系列有用的分区增强功能。这些增强功能包括:

  • 增加了间隔分区
  • 增加了系统分区
  • 增强了组合分区
  • 增加了基于虚拟列的分区
  • 增加了引用分区

 

间隔分区

  • 间隔分区是范围分区的一种扩展
  • 当插入的数据超过了所有范围分区时,将创建指定间隔的分区。
  • 必须至少创建一个范围分区。
  • 间隔分区可以自动创建范围分区。

在引入间隔分区之前,DBA 需要显式定义每个分区的值范围。问题在于,为每个分区显式定义的界限不会随着分区数量的增长而扩展。

间隔分区是范围分区的一种扩展,它会在插入表中的数据超过了所有范围分区时,指示数据库自动创建特定间隔的分区。必须至少指定一个范围分区。范围分区的键值可以确定范围分区的上限值(称为转换点),数据库将为超过该转换点的数据创建间隔分区。

间隔分区可以完全自动地创建范围分区。管理新分区的创建可能是一项重复性很高的繁重任务。对于可预测性地增加涵盖小范围的分区,如添加新的每日分区,这种情况尤其突出。间隔分区可以通过按需创建分区来自动完成此类操作。

使用间隔分区时,需要考虑以下限制条件:

  • 只能指定一个分区键列,并且该键列必须是 NUMBER 或 DATE 类型。
  • 索引表不支持间隔分区。
  • 不能为间隔分区表创建域索引。

 

间隔分区:示例

 

CREATE TABLE SH.SALES_INTERVAL  
PARTITION BY RANGE (time_id) 
INTERVAL (NUMTOYMINTERVAL(1,'month')) STORE IN (tbs1,tbs2,tbs3,tbs4)
(
 PARTITION P1 values less than (TO_DATE('1-1-2002','dd-mm-yyyy')),
 PARTITION P2 values less than (TO_DATE('1-1-2003','dd-mm-yyyy')),
 PARTITION P3 values less than (TO_DATE('1-1-2004','dd-mm-yyyy')))
AS
 SELECT * 
 FROM SH.SALES
 WHERE TIME_ID < TO_DATE('1-1-2004','dd-mm-yyyy');


最初的 CREATE TABLE 语句指定了四个宽度不同的分区。表的这部分采用的是范围分区。该语句还指定了在晚于转换点“1-1-2004”时,将创建宽度为一个月的分区。这些分区是间隔分区。在表中插入一个包含与 2004 年 1 月对应的值的行时,将使用此信息自动创建分区 Pi1。分区 P3 的上限代表一个转换点。P3 与其之前的所有分区(本例中的 P1 和 P2)都在范围段中,而 P3 之后的所有分区则在间隔段中。INTERVAL 子句的唯一参数是一个间隔类型常量。目前,只能指定一个分区键列,
该键列必须是 DATA 或 NUMBER 类型。

可以使用 INTERVAL 子句的可选子句 STORE IN 来指定一个或多个表空间,数据库会以循环方式将间隔分区数据存储到指定的表空间中。

移动转换点:示例

 

图形展示了一个典型的信息生命周期管理 (ILM) 方案,在该方案中,自动创建了一年的分区之后,将合并这些已创建的分区(示例中的 SYS_Py 和 SYS_Pz)以移动转换点。然后,可以将产生的分区移到一个不同的存储中供 ILM 使用。

该示例假定您创建了一个表 ORDERS_INTERVAL,该表有一个初始范围分区 PREVIOUS,其中存放着 2007 年之前的订单。定义的间隔为一个月。然后,在 2007 年和 2008 年中插入了一些订单,并且假定创建了四个分区。这些分区如图中所示,它们是根据一些系统规则自动命名的。

接下来,您决定使用幻灯片中所示的 ALTER TABLE 语句合并 2007 年的最后两个分区。您必须合并两个相邻的分区。请注意新的扩展分区语法,使用该语法可以在不知道分区名称的情况下指定分区。该语法使用的表达式必须表示相关分区的可能值。此语法适用于必须引用分区的所有情况,而不管引用的是范围分区、列表分区、间隔分区还是散列分区。它支持所有操作,如删除、合并、拆分等。

执行了 MERGE 操作后,就可以看到转换点发生了移动了。图形的底部显示了现在包含三个分区的新范围段。

注:可以更改间隔分区表的间隔,现有的间隔不受影响。

 

系统分区

系统分区:

  • 为选定的表启用应用程序控制的分区
  • 具有分区的优点,但分区和数据的放置由应用程序控制
  • 不像其它分区方法那样采用分区键
  • 不支持传统意义上的分区修剪

使用系统分区可以对任意表进行应用程序控制的分区。在开发自己的分区域索引时,这种方法很有用。数据库提供的功能只是将表细分为无意义的分区。分区的其它所有方面都由应用程序控制。系统分区具备分区的常见优势(可扩展性、可用性和可管理性),但分区和实际数据的放置由应用程序控制。

系统分区与其它方法之间最基本的差别是系统分区没有任何分区键。因此,不能将行隐式分配或映射到特定的分区。相反,用户要在插入行时使用扩展分区语法来指定行要映射到的分区。

因为系统分区表没有分区键,所以系统分区表没有分区表通常所具备的性能优势。具体地说,就是不支持传统的分区修剪、智能化分区联接等功能。分区修剪是通过访问与在基表中访问的分区相同的系统分区表中的分区完成的。

系统分区表具有均匀分区的可管理性优势。例如,可创建一个嵌套表作为系统分区表,该表与基表有相同的分区数。域索引的备份可以由与基表有相同分区数的系统分区表来进行。

 

系统分区:示例

CREATE TABLE systab (c1 integer, c2 integer) 
PARTITION BY SYSTEM
(
	PARTITION p1 TABLESPACE tbs_1,
	PARTITION p2 TABLESPACE tbs_2,
	PARTITION p3 TABLESPACE tbs_3,
	PARTITION p4 TABLESPACE tbs_4
);


INSERT INTO systab PARTITION (p1) VALUES (4,5); 

INSERT INTO systab PARTITION (p2) VALUES (150,2); 

alter table systab merge partitions p1,p2 into partition p1;


语法将创建一个包含四个分区的表。每个分区可以有不同的物理属性。INSERT 和 MERGE 语句必须使用扩展分区语法来确定行应插入的特定分区。例如,可以将值 (4,5) 插入到示例中指定的四个分区中的任何一个分区。

删除和更新不需要使用扩展分区语法。但是,由于没有分区修剪功能,所以,如果省略扩展分区语法,则将扫描整个表以执行操作。此示例也突出了不存在行到任何分区的隐式映射这一事实。

 

系统分区:准则

系统分区表支持以下操作:

  • 分区维护操作和其它 DDL 操作
  • 创建本地索引
  • 创建本地位图化索引
  • 创建全局索引
  • 所有 DML 操作
  • 使用扩展分区语法的 INSERT SELECT

 

INSERT INTO <table_name> PARTITION(<partition-name>) <subquery>

 

系统分区表支持以下操作:

  • 分区维护操作和其它 DDL(请参见下面的例外)
  • 创建本地索引
  • 创建本地位图化索引
  • 创建全局索引
  • 所有 DML 操作
  • 使用扩展分区语法的 INSERT SELECT

由于系统分区的特殊要求,它不支持以下操作:

  • 不支持需要分区键的唯一本地索引
  • 不支持没有分区方法的 CREATE TABLE AS SELECT。无法将行分配到分区,而应先创建表,然后将行插入到各个分区。
  • SPLIT PARTITION 操作

 

基于虚拟列的分区

  • 虚拟列值是通过计算函数或表达式得到的。
  • 可以在 CREATE ALTER 表操作中定义虚拟列。

CREATE TABLE employees   (employee_id   number(6) not null, total_compensation as (salary *( 1+commission_pct))

  • 虚拟列值实际上并未存储在磁盘上的表行中,而是根据需要进行计算。
  • 像其它表列类型一样,可以对虚拟列进行索引,可以在查询、DML DDL 语句中使用它们。
  • 可在虚拟列上对表和索引进行分区,甚至可以收集它们的统计信息。

如果某个表的列值是通过计算函数或表达式得到的,则这些列就称为虚拟列。可以在 CREATE 或 ALTER 表操作过程中指定这些列。虚拟列与其它实际表列共享相同的 SQL 名称空间,并与对其进行描述的基础表达式的数据类型相一致。可像其它表列一样在查询中使用这些列,因此可在 SQL 语句中提供简单、优美且一致的访问表达式机制。

虚拟列的值实际上并未存储在磁盘上的表行中,而是根据需要进行计算。描述虚拟列的函数或表达式应是明确且无掺杂的,即相同的输入值集应返回相同的输出值。

可以像使用任何其它表列一样使用虚拟列。可对虚拟列进行索引,可在查询、DML 和 DDL 语句中使用它们。可在虚拟列上对表和索引进行分区,甚至可以收集它们的统计信息。

可使用虚拟列分区对表的虚拟列上定义的键列进行分区。对逻辑分区对象的业务要求经常与现有列不一一对应。随着 Oracle Database 11g 的推出,分区功能得到了增强,可以在虚拟列上定义分区策略,因而可以更加全面地匹配业务要求。

 

基于虚拟列的分区:示例

 

 CREATE TABLE employees 
  (employee_id 	number(6) not null, first_name varchar2(30),  
   last_name	varchar2(40) not null, email	varchar2(25), 
   phone_number	 varchar2(20), hire_date 	date not null, 
   job_id 	varchar2(10) not null, salary	number(8,2), 
   commission_pct number(2,2), manager_id 	number(6), 
   department_id number(4),
   total_compensation as (salary *( 1+commission_pct))
   )
    PARTITION BY RANGE (total_compensation)
     ( 
       PARTITION p1 VALUES LESS THAN (50000),
       PARTITION p2 VALUES LESS THAN (100000),
       PARTITION p3 VALUES LESS THAN (150000),
       PARTITION p4 VALUES LESS THAN (MAXVALUE)
     );

 

EMPLOYEES 表是使用标准的 CREATE TABLE 语法创建的。total_compensation 列是一个虚拟列,其值的计算方式为:将 salary 的值与 commission_pct 加 1 之后的值相乘。下一个语句将 total_compensation(虚拟列)声明为 EMPLOYEES 表的分区键。

如果分区键上的谓词属于以下类型之一,则将对虚拟列分区键执行分区修剪:

  • 等式或 Like
  • 列表
  • 范围
  • 扩展分区名称

如果两个表之间存在联接操作,则优化程序将确定智能化分区联接(完全或部分)的适用时间,决定是否使用智能化分区联接,并在决定使用时正确注释该联接。这既适用于串行情况也适用于并行情况。

为了确定完全智能化分区联接,优化程序将依赖于对两个对象的均匀分区的定义;此定义包括表据以分区的虚拟表达式的等同性。

 

引用分区

 

  • 现在,可以根据表的引用约束条件中引用的此表的分区方法对表进行分区。
  • 分区键是通过现有的父/子关系解析的。
  • 分区键是由活动的主键和外键约束条件强制实施的。
  • 包含父/子关系的表可以通过从父表继承分区键进行均匀分区,而无需复制键列。
  • 分区是自动维护的。

通过引用分区,可以根据表的引用约束条件中引用的此表的分区方案,对表进行分区。
分区键是通过现有的父/子关系解析的,并由活动的主键和外键约束条件强制实施。这种方式的优势在于:包含父/子关系的表可以通过从父表继承分区键来进行逻辑均匀分区,
而无需复制键列。逻辑相关性也会自动级联分区维护操作,从而使应用程序的开发变得更简单、更不容易出错。

 

引用分区:优点

您可以看到使用引用分区的优点。左侧的图形显示了有两个表 ORDERS 和 ORDER_ITEMS 时的情况,它们按 ORDER_DATE 列进行均匀分区。在这种情况下,两个表都需要定义 ORDER_DATE 列。但是,在 ORDER_ITEMS 表中定义 ORDER_DATE 是多余的,因为在两个表之间存在主键/外键关系。

右侧的图形显示了使用引用分区时的情况。在这种情况下,不再需要在 ORDER_ITEMS 表中定义 ORDER_DATE 列。ORDER_ITEMS 表的分区键会从现有的主键/外键关系中进行自动继承。

在用于修剪和智能化分区联接时,引用分区具有以下优势:可以使用不同的查询谓词,
智能化分区联接仍然有效,例如,按 ORDER_DATE 进行分区,并对 ORDER_ID 进行搜索。在以前的版本中,只有分区和谓词相同时智能化联接才有效。

注:这种分区方法对嵌套表分区很有用。

 

引用分区:示例

 CREATE TABLE orders
  ( order_id     NUMBER(12) , order_date   DATE,    order_mode   VARCHAR2(8), customer_id  NUMBER(6),    order_status NUMBER(2)  , order_total  NUMBER(8,2),    sales_rep_id NUMBER(6)  , promotion_id NUMBER(6),    CONSTRAINT   orders_pk PRIMARY KEY(order_id)
  )
 PARTITION BY RANGE(order_date)
 (PARTITION Q105 VALUES LESS THAN (TO_DATE('1-4-2005','DD-MM-YYYY')),
  PARTITION Q205 VALUES LESS THAN (TO_DATE('1-7-2005','DD-MM-YYYY')),
  PARTITION Q305 VALUES LESS THAN (TO_DATE('1-10-2005','DD-MM-YYYY')),
  PARTITION Q405 VALUES LESS THAN (TO_DATE('1-1-2006','DD-MM-YYYY')));

CREATE TABLE order_items
 ( order_id     NUMBER(12) NOT NULL, line_item_id NUMBER(3) NOT NULL,
   product_id   NUMBER(6) NOT NULL,  unit_price   NUMBER(8,2),
   quantity     NUMBER(8),
   CONSTRAINT   order_items_fk
             FOREIGN KEY(order_id) REFERENCES orders(order_id)
) PARTITION BY REFERENCE(order_items_fk);


  • ORDERS:按 order_date 分区的范围分区表。该表在创建时包含四个分区 Q105、Q205、Q305 和 Q405。
  • ORDER_ITEMS:引用分区子表:

-该表在创建时包含四个分区 Q105、Q205、Q305 和 Q405,每个分区均包含与各自父分区中的 ORDERS 对应的行。

-如果提供了分区描述符,则描述的分区数量必须与引用表中的分区或子分区的数量完全相同。

-如果父表是组合分区表,则对于父表的每个子分区该表都有一个分区。

-不能为引用分区表的分区指定分区界限。除非与继承的名称存在冲突,否则可以命名引用分区表的分区。在这种情况下,系统将为分区生成一个名称。

-如果未显式指定表空间,则引用分区表的分区将与父表的对应分区并列排列。与其它分区表一样,可以指定对象级的默认属性和覆盖对象级默认值的分区描述符。

-不能禁用引用分区表的外键约束条件。

-不允许添加或删除引用分区表的分区。但是,在父表上执行分区维护操作将自动级联到子表。

 

组合分区增强功能

 

  • 范围顶级

范围-范围

  • 列表顶级

列表-列表

列表-散列

列表-范围

  • 间隔顶级

间隔-范围

间隔-列表

间隔-散列

 

Oracle Database 11g 之前的版本仅支持范围-列表和范围-散列组合分区方法。在此新版本中,列表分区可以是组合分区表的顶级分区方法,为用户提供列表-列表、列表-散列、
列表-范围和范围-范围组合方法。随着间隔分区功能的推出,现在还支持间隔-范围、
间隔-列表和间隔-散列组合分区方法。

范围-范围分区

范围-范围组合分区可以在两个维上进行逻辑范围分区,例如,按 order_date 的范围
分区和按 shipping_date 的范围子分区。

列表-范围分区

列表-范围组合分区可以按指定的列表分区策略进行逻辑范围子分区,例如,
按 country_id 的列表分区和按 order_date 的范围子分区。

列表-散列分区

列表-散列组合分区可以对列表分区对象进行散列子分区,例如,启用智能化分区联接。

列表-列表分区

列表-列表组合分区可以在两个维上进行逻辑列表分区,例如,按 country_id 的列表
分区和按 sales_channel 的列表子分区。

 

 

范围-范围分区:示例

 

 

CREATE TABLE sales (    prod_id NUMBER(6) NOT NULL, cust_id NUMBER NOT NULL,    time_id DATE NOT NULL, channel_id char(1) NOT NULL,    promo_id NUMBER (6) NOT NULL,    quantity_sold NUMBER(3) NOT NULL,    amount_sold NUMBER(10,2) NOT NULL )
 PARTITION BY RANGE (time_id)
 SUBPARTITION BY RANGE (cust_id)
 SUBPARTITION TEMPLATE
   (  SUBPARTITION sp1 VALUES LESS THAN (50000),      SUBPARTITION sp2 VALUES LESS THAN (100000),      SUBPARTITION sp3 VALUES LESS THAN (150000),      SUBPARTITION sp4 VALUES LESS THAN (MAXVALUE) )
 (
  PARTITION VALUES LESS THAN (TO_DATE('1-4-2007','DD-MM-YYYY')),
  PARTITION VALUES LESS THAN (TO_DATE('1-7-2007','DD-MM-YYYY')),
  PARTITION VALUES LESS THAN (TO_DATE('1-8-2007','DD-MM-YYYY')),
  PARTITION VALUES LESS THAN (TO_DATE('1-1-2008','DD-MM-YYYY'))
 );

范围-范围组合分区可以在两个维上进行逻辑范围分区。幻灯片中的示例创建了 SALES 表,并按 time_id 进行了范围分区。使用子分区模板对 SALES 表按范围进行了子分区,并使用 cust_id 作为子分区键。

由于使用了模板,所有分区都有相同的子分区数,并且具有模板所定义的相同界限。如果未指定模板,则将以 MAXVALUE 值(范围)或 DEFAULT 值(列表)创建一个默认分区
界限。

虽然该示例显示的是范围-范围方法,但其它新的组合分区方法也使用相似的语法和语句结构。所有组合分区方法都完全支持对涉及子分区键谓词的查询使用现有的分区修剪方法。

 

表压缩:概览

 

  • Oracle Database 11g 扩展了 OLTP 数据的压缩。

支持常规的 DML 操作
INSERTUPDATEDELETE

  • 新算法显著降低了写入开销。

批量压缩可确保大多数 OLTP 事务处理不会受到影响。

  • 对读取无影响

由于减少了 I/O 次数并提高了内存效率,因此读取性能可能会有实际上的提高。

 

Oracle DB 是数据库压缩技术方面的先行者,在 Oracle9i 中就引入了针对批量装载操作的表压缩功能。使用此功能可以在使用直接装载或 Create Table As Select (CTAS) 等操作执行批量装载时压缩数据。但在以前,一些常规数据操纵操作(如 INSERT、UPDATE 和 DELETE)却不能使用压缩功能。Oracle Database 11g 对压缩技术进行了扩展,也可以支持这些操作。因此,Oracle Database 11g 中的压缩功能可用于各种工作量,不管是联机事务处理 (OLTP) 还是数据仓库。

必须指出的是,Oracle database 11g 中引入的表压缩功能的增强并不只是增量更改。为了确保新的压缩技术对更新只造成微乎其微的影响,已经进行了大量的工作,因为在 OLTP 环境中压缩导致的任何明显的写入时间增加都是不可接受的。因此,Oracle Database 11g 中的压缩技术非常高效,可以使空间消耗减少 50-75%。执行压缩操作时,不但写入性能不会降低,而且读取性能或查询速度都会有提高。这是因为,与必须等待解压缩数据的桌面压缩技术不同,Oracle 技术直接读取压缩的数据(减少了所需的提取次数),不需要执行任何解压缩操作。

注:压缩技术对应用程序是完全透明的。也就是说,可以将此技术用于任何自有的或打包的应用程序(如 SAP、Siebel、EBS 等)。

 

表压缩的概念

显示了压缩表中的数据块的演化过程,应按从左到右的顺序阅读。开始的时候,该数据块是空的,可以插入数据。开始在此块中插入数据时,数据以未压缩的格式存储(就像在未压缩的表中一样)。但是,只要到达了该块的 PCTFREE,数据将被自动压缩,以减少其原来占据的空间。这样一来,可以在相同的块中插入新的未压缩数据,直到再一次到达 PCTFREE。此时会再一次触发压缩以减少块中的占用空间。

注:压缩可以消除删除操作造成的空隙,最大化块中的连续空闲空间。

 

 

使用表压缩

  • 数据库兼容级别需要在 11.1 或更高
  • 新的语法扩展了 COMPRESS 关键字:

COMPRESS [FOR {ALL | DIRECT_LOAD} OPERATIONS]

FOR DIRECT_LOAD 是默认值:引用以前版本中的批量装载操作

FOR ALL OPERATIONS:OLTP + 直接装载

  • 对新表启用压缩:
  • CREATE TABLE t1 COMPRESS FOR ALL OPERATIONS;

  • 对现有的表启用压缩:
  • ALTER TABLE t2 COMPRESS FOR ALL OPERATIONS;

对现有的行不触发压缩

 

要使用新的压缩算法,必须使用 COMPRESS FOR ALL OPERATIONS 子句标记表。可以在创建表时或在创建表之后执行此操作。幻灯片中的示例演示了此操作。

如果使用 COMPRESS 子句但没有指定任何 FOR 选项,或者使用 COMPRESS FOR DIRECT_LOAD OPERATIONS 子句,则将退回到以前版本中提供的旧压缩机制。

也可以在分区级别或表空间级别启用压缩。例如,可以使用 CREATE TABLESPACE 命令的 DEFAULT 存储子句,根据需要指定 COMPRESS FOR 子句。

注:可以使用 DBA_TABLES 和 DBA_TAB_PARTITIONS 等视图中的 COMPRESS 列和 COMPRESS_FOR 列查看表的压缩标志。

 

SQL 访问指导:概览

如何定义适当的访问结构以优化 SQL 查询一直是 Oracle DBA 关心的问题。因此,为了解决该问题,相关人员已经写了大量的论文和脚本,还开发了一些高端工具。此外,随着分区和实体化视图技术的发展,确定访问结构也变得更加复杂。
作为 Oracle Database 10g 和 11g 中的可管理性增强功能,引入了 SQL 访问指导来解决这个非常关键的需求。

SQL 访问指导可以推荐要创建、删除或保留的索引、实体化视图、实体化视图日志或分区,从而确定并帮助解决与执行 SQL 语句相关的性能问题。可以从 Database Control 或者从命令行使用 PL/SQL 过程来运行 SQL 访问指导。

SQL 访问指导将输入实际工作量,或者根据方案导出一个假想工作量。然后,它会推荐速度较快的执行路径的访问结构。SQL 访问指导具有以下优点:

  • 不需要拥有专业知识
  • 根据基于成本的优化程序中实际存在的规则做决定
  • 与优化程序以及 Oracle DB 增强功能同步
  • 是涵盖 SQl 访问方法所有方面的单个指导
  • 提供用户友好的简单 GUI 向导
  • 生成可用于实施建议案的脚本

 

SQL 访问指导:使用模型

 

SQL 访问指导将输入一个从多个来源派生出来的工作量:

  • SQL 高速缓存,采用 V$SQL 的当前内容
  • 假想工作量,根据维模型生成一个可能工作量。在初次设计系统时,这个选项比较有用
  • SQL 优化集,来自工作量资料档案库

SQL 访问指导还提供强大的工作量过滤功能,可用于确定优化目标。例如,用户可以指定 SQL 访问指导只观察工作量中 30 个资源最密集的语句(根据优化程序开销确定)。对于指定的工作量,SQL 访问指导随后会执行以下操作:

  • 同时考虑索引解决方案、实体化视图解决方案、分区解决方案或者全部三个解决方案的组合
  • 考虑存储的创建和维护成本
  • 不为部分工作量生成删除建议案
  • 优化实体化视图以最大化查询重写使用率和快速刷新
  • 建议用于快速刷新的实体化视图日志
  • 建议对表、索引和实体化视图进行分区
  • 将类似的索引组合为单个索引
  • 生成支持多个工作量查询的建议案

 

可能的建议案

建议案 全面 有限
对表或实体化视图添加新的(已分区)索引。  
删除未使用的索引。
通过更改索引类型修改现有索引。
通过在末尾添加列修改现有的索引。
添加新的(已分区)实体化视图。
删除未使用的实体化视图(日志)。
添加新的实体化视图日志。
修改现有的实体化视图日志以添加新列或子句。
对现有的未分区表或索引进行分区。

SQL 访问指导会仔细考虑建议案的整体影响,并仅使用已知的工作量和提供的信息生成建议案。可以使用两种工作量分析方法:

  • 全面:SQL 访问指导通过这种方法解决优化分区、实体化视图、索引和实体化视图日志的所有方面。SQL 访问指导假定工作量包含一个完整的有代表性的应用程序 SQL 语句集。
  • 有限:与全面的工作量方法不同,有限的工作量方法假定工作量仅包含有问题的 SQL 语句。因此,将寻求提高一部分应用程序环境性能的建议。

如果选择了全面的工作量分析,则 SQL 访问指导将生成一个较好的全局优化调整集,但所需分析时间会比较长。如表中所示,选择的工作量方法可决定 SQL 访问指导生成的建议案类型。

注:分区建议案仅对至少包含 10,000 行的表以及在 NUMBER 或 DATE 类型的列上有一些谓词或联接的工作量有效。只能针对这些类型的列生成分区建议。此外,只能为单列间隔分区和散列分区生成分区建议。间隔分区建议案可作为范围语法输出,但间隔是默认值。执行散列分区只是为了利用智能化分区联接。

 

SQL 访问指导会话:初始选项

 

 

 

 

 

将介绍一个典型的 SQL 访问指导会话。可以通过数据库主页上的“Advisor Central(指导中心)”链接访问 SQL 访问指导向导,也可以通过单个预警页或性能页进行访问,这些页可能包含用于简化性能问题解决过程的链接。SQL 访问指导向导包括多个步骤,可在执行这些步骤的过程中提供要优化的 SQL 语句,以及要使用的访问方法类型。

使用“SQL Access Advisor: Initial Options(SQL 访问指导:初始选项)”页可以选择在启动向导前用来植入默认选项的模板或任务。可以单击“Continue(继续)”启动向导,或者单击“Cancel(取消)”返回到“Advisor Central(指导中心)”页。

注:在生成建议案的过程中,SQL 访问向导可能会中断,从而允许您复查结果。

有关使用 SQL 访问指导的常规信息,请参阅《Oracle Data Warehousing Guide》“SQL Access Advisor”一课中的“Overview of the SQL Access Advisor”部分。

 

如果在“Initial Options(初始选项)”页上选择了“Inherit Options from a Task or Template(从任务或模板继承选项)”选项,则可以选择一个现有的任务或模板以继承 SQL 访问指导的选项。默认情况下,将使用 SQLACCESS_EMTASK 模板。

通过选择相应的对象并单击“View Options(查看选项)”,可以查看任务或模板定义的各种选项。

 

SQL 访问指导:工作量来源

可以从三个不同的来源中选择工作量来源:

  • Current and Recent SQL Activity当前和最近的 SQL 活动):此来源对应于仍高速缓存在 SGA 中的 SQL 语句。
  • Use an existing SQL Tuning Set(使用现有的 SQL 优化集):也可以创建并使用存放语句的 SQL 优化集。
  • Hypothetical Workload(假想的工作量):此选项将提供允许指导搜索维表并生成工作量的方案。此来源在初始设计方案时很有用。

使用“Filter Options(过滤选项)”部分可以进一步过滤工作量来源。过滤选项有:

  • Resource Consumption(资源消耗):按优化程序成本、缓冲区获取数、CPU 时间、磁盘读取数、占用时间、执行数排序的语句数量。
  • Users(用户)
  • Tables(表)
  • SQL Text(SQL 文本)
  • Module IDs(模块 ID)
  • Actions(操作)

 

SQL 访问指导:建议案选项

 

使用“Recommendations Options(建议案选项)”页可以选择是否限制 SQL 访问指导基于单个访问方法提出建议案。可以选择 SQL 访问指导要推荐的结构的类型。如果没有选择三个可能值中的任何一个,则 SQL 访问指导将评估现有的结构,而不尝试推荐新结构。

可以使用“Advisor Mode(指导模式)”部分,以两种模式之一运行指导。这些模式会
影响建议案的质量和处理所需的时间。在“Comprehensive Mode(综合模式)”中,SQL 访问指导将搜索候选的大型池,以便得到最高质量的建议案。在“Limited Mode(限制模式)”中,SQL 访问指导将快速执行,通过仅处理最高成本的语句来限制候选建议案。

 

SQL 访问指导:建议案选项

使用“Recommendations Options(建议案选项)”页可以选择是否限制 SQL 访问指导基于单个访问方法提出建议案。可以选择 SQL 访问指导要推荐的结构的类型。如果没有选择三个可能值中的任何一个,则 SQL 访问指导将评估现有的结构,而不尝试推荐新结构。

可以使用“Advisor Mode(指导模式)”部分,以两种模式之一运行指导。这些模式会
影响建议案的质量和处理所需的时间。在“Comprehensive Mode(综合模式)”中,SQL 访问指导将搜索候选的大型池,以便得到最高质量的建议案。在“Limited Mode(限制模式)”中,SQL 访问指导将快速执行,通过仅处理最高成本的语句来限制候选建议案。

 

可以选择“Advanced Options(高级选项)”以显示或隐藏选项,这些选项可用于设置空间限制、优化选项和默认存储位置。使用“Workload Categorization(工作量类别)”部分可以设置“Workload Volatility(工作量不稳定性)”和“Workload Scope(工作量范围)”选项。对于工作量不稳定性,可以选择关注只读操作,也可以考虑生成建议案时被引用对象的不稳定性。对于工作量范围,可以选择“Partial Workload(部分工作量)”,其中不包括要删除未使用访问结构的建议案;或者选择“Complete Workload(全部工
作量)”,其中包括要删除未使用访问结构的建议案。

使用“Space Restrictions(空间限制)”部分可指定硬性空间限制,强制指导仅使用不超过指定限制的总空间要求生成建议案。使用“Tuning Options(优化选项)”部分可指定用于定制指导生成的建议案的选项。使用“Prioritize Tuning of SQL Statements by(确定优化 SQL 语句优先级的依据)”下拉列表,可以按“Optimizer Cost(优化程序成本)”、“Buffer Gets(缓冲区获取数)”、“CPU Time(CPU 时间)”、“Disk Reads(磁盘读取数)”、“Elapsed Time(占用时间)”和“Execution Count(执行计数)”划分优
先级。使用“Default Storage Locations(默认存储位置)”部分可以覆盖为方案和表空间位置定义的默认值。默认情况下,索引放置在所引用表的方案和表空间中。实体化视图放置在相应用户的方案和表空间中,该用户将执行为实体化视图建议案提供信息的一个查询。

 

注:Oracle 强烈建议您为实体化视图指定默认方案和表空间。

 

SQL 访问指导:调度和复查

您随后可以通过指定调度程序的各种参数,调度并提交新的分析。本幻灯片的屏幕快照中显示了可能的选项。

 

SQL 访问指导:结果

 

 

通过“Advisor Central(指导中心)”页,可以检索用于分析的任务详细资料。通过选择“Advisor Central(指导中心)”页上“Results(结果)”部分中的任务名称,可以访问“Results for Task(任务结果)”的“Summary(概要)”页;可在此页上看到 SQL 访问指导查找结果的概览。该页中显示了图表和统计信息,为建议案提供了整体工作量性能和改善查询执行时间方面的可能性。使用该页可以显示语句计数和建议案操作计数。

 

要查看 SQL 访问指导任务结果的其它方面,可选择该页上其它三个选项卡之一:“Recommendations(建议案)”、“SQL Statements(SQL 语句)”或“Details(详细
资料)”。

在“Recommendation(建议案)”页上,可以细化到各个建议案。对于其中的每个建议案,可以查看“Select Recommendations for Implementation(选择要实施的建议案)”表中的重要信息。然后,可以选择一个或多个建议案,并安排实施。

如果单击特定建议案的 ID,则将进入“Recommendation(建议案)”页,该页显示了指定建议案的所有操作,可以根据需要修改语句的表空间名称。完成了任何更改后,单击“OK(确定)”将应用更改。通过该页可以查看一个操作的完整文本,方法是选择指定操作的“Action(操作)”字段中的链接。单击“Show SQL(显示 SQL)”可以查看建议案中所有操作的 SQL。

 

可以使用简单的 SQL DDL 语句在生产系统中执行大多数建议案。在这些情况下,SQL 指导会生成可执行的 SQL 语句。在有些情况下(例如,重新分区现有的已分区表或现有的从属索引),简单的 SQL 是不够的。此时,SQL 指导将生成调用外部程序包的脚本
(如 DBMS_REDEFINITION),使用户可以实施建议的更改。

在幻灯片的示例中,SQL 访问指导建议按 CUST_CREDIT_LIMIT 列对 SH.CUSTOMERS 表进行分区。该建议案使用 INTERVAL 分区方案,并将第一个值范围定义为小于 1600。间隔分区是基于数值范围或日期时间间隔的分区。间隔分区是范围分区的一种扩展,它会在插入表中的数据超过了所有范围分区时,指示数据库自动创建特定间隔的分区。

 

“SQL Statements(SQL 语句)”页显示了一个图表和一个对应的表,其中列出了按成本改善程度由高到低初始排序的 SQL 语句。最上面的 SQL 语句通过实施关联建议案得到了最大程度的改善。

 

“Details(详细资料)”页显示了创建任务时所用的工作量和任务选项。此页还提供了在任务执行过程中记录的所有日记条目。

 

SQL 访问指导:PL/SQL 过程流程

 

 

图形显示了 DBMS_ADVISOR 程序包中 SQL 访问指导过程的典型操作流程。有关其中每个过程的完整说明,请参阅《Oracle Database PL/SQL Packages and Types Reference》指南。

  • 步骤 1创建并管理任务和数据。此步骤将使用一个 SQL 访问指导任务。
  • 步骤 2准备任务以进行各种操作。此步骤将使用 SQL 访问指导参数。
  • 步骤 3:准备并分析数据。此步骤将使用 SQL 优化集和 SQL 访问指导任务。使用 Oracle Database 11g R1,除了文本之外,GET_TASK_REPORT 还可以使用 HTML 或 XML 返回报告。

注:DBMS_ADVISOR.QUICK_TUNE 过程是一种快捷方式,可以执行分析单个 SQL 语句所必需的所有操作。该操作将创建一个所有参数都为默认值的任务,工作量仅由指定的语句组成。最后将执行任务,并将结果保存到资料档案库中。也可以指示该过程实施最终建议案。

 

SQL 访问指导:PL/SQL 示例

BEGIN
 dbms_advisor.create_task(dbms_advisor.sqlaccess_advisor,'MYTASK'); 
END;  



BEGIN
dbms_advisor.set_task_parameter('MYTASK','ANALYSIS_SCOPE','ALL'); dbms_advisor.set_task_parameter('MYTASK','MODE','COMPREHENSIVE');   
END;  



BEGIN

 dbms_advisor.add_sts_ref('MYTASK','SH','MYSTS');
 dbms_advisor.execute_task('MYTASK');

 dbms_output.put_line(dbms_advisor.get_task_script('MYTASK'));  
END;  

 

与前一张幻灯片中所示的顺序相配合,此幻灯片中的示例显示了使用 PL/SQL 代码的一个可能的 SQL 访问指导优化会话。

第一个 PL/SQL 块创建了一个新的优化任务 MYTASK。此任务使用 SQL 访问指导。

第二个 PL/SQL 块设置了 MYTASK 任务的 SQL 访问指导参数。在该示例中您将 ANALYSIS_SCOPE 设置为 ALL,表示将为索引、实体化视图和分区生成建议案。然后,将 MODE 设置为 COMPREHENSIVE,以包括与将来任务关联的 SQL 优化集中的所有 SQL 语句。

第三个 PL/SQL 块将一个工作量与 MYTASK 任务关联起来。此处使用了一个现有的 SQL 优化集 MYSTS。现在,可以执行优化任务了。此任务执行完成后,可以生成对应的建议案脚本,如幻灯片中第三个示例所示。

注:有关 SQL 访问指导参数的完整列表(大约有 50 个),请参阅《Oracle Database PL/SQL Packages and Types Reference》指南。

 

 

一次Exadata上的ORA-600[kjbmprlst:shadow]故障分析

 

这是一套Exadata 上的11.2.0.1   四节点RAC 系统,从今年初开始频繁地因为LMS后台进程出现内部错误ORA-600[kjbmprlst:shadow]而导致实例意外终止, 虽然是4节点RAC 保证了其高可用性, 但是仍因为 实例经常意外终止 导致应用程序交易失败。

实际我在7月份已经分析过该问题了, 详见<Oracle RAC内部错误:ORA-00600[kjbmprlst:shadow]一例>一文 , kjbmprlst:shadow内部函数用以管理kjbm shadow锁(/libserver10.a/kjbm.o )信息,存在某个已关闭的lock没有及时message给master node的代码漏洞。 实际上当时我已经给出了禁用DRM 可能可以避免该ORA-600[kjbmprlst:shadow] 的看法 ,但是 翻阅MOS 上所有现有的ORA-600[kjbmprlst:shadow] case均没有提及disable DRM可以是一种workaround的途径, 提交SR 也没有得到Oracle GCS关于该看法的 肯定回答, 此外还考虑到 核心的产品环境 使用11.2.0.1 这个bug 较多的版本确实不合适, 升级到 11.2.0.2 已修复该Bug 10121589 的bundle Patch 也算是一种不错的方案 ,所以也就没有深究下去。

之后就一直在做升级Exadata到11.2.0.2 的一些准备工作, 但是用户最后考虑到升级Exadata的步骤过于复杂, 很多步骤是不可回退的, 而且在国内升级的案例目前也不多, 推翻了 升级的方案, 于是有了下面的这一段故障分析

 

故障特征

 

如上面所说的这是一套Exadata上的4节点 11.2.0.1 RAC , 应用程序是 Oracle 自己的Billing and Revenue Management (BRM) 。从今年初开始多次出现ORA-600[kjbmprlst:shadow]内部错误, 引发该内部错误的是RAC 关键后台进程 LMS (  global cache server process) ,结果是导致实例意外终止。

 

该ORA-600[kjbmprlst:shadow]在10月份频发的发生(几乎一个礼拜2次),故障发生还存在以下2个特征:

  1. 主要集中在凌晨03:00 以后的20分钟内发生
  2. 1、2、4节点都陆续发生过故障 , 唯有 3号节点从未发生过 ( 这个后面会介绍)

 

初步分析

 

通过应用方拿到了某次故障发生当天每一个小时的AWR报告, 这次故障发生在凌晨 03:05 的 1号节点上, 于是开始分析当时的 1号实例的性能负载。

分析AWR 报告的一种方法就是 通过对比多个时间段的报告 来了解性能变化 ,当然前提是知道问题发生的时段, 这里我们来对比2个时段的信息,这三个时段分别是:

1. 问题发生前的几分钟, 因为1号实例上 3点以后的AWR 报告缺失,所以这里使用的是 02:00 ~ 03:00 的AWR
2. 问题发生前的1小时 , 01:00~02:00 的AWR

 

首先观测DB TIME:

Snap Id Snap Time Sessions Cursors/Session
Begin Snap: 14225 12-Oct-11 02:00:05 284 152.2
End Snap: 14226 12-Oct-11 02:59:59 288 150.1
Elapsed: 59.91 (mins)
DB Time: 809.98 (mins)

 

Snap Id Snap Time Sessions Cursors/Session
Begin Snap: 14224 12-Oct-11 01:00:10 284 152.3
End Snap: 14225 12-Oct-11 02:00:05 284 152.2
Elapsed: 59.91 (mins)
DB Time: 257.62 (mins)

 

AWR中的DB TIME可以一定程度上反映数据库实例的繁忙程度。这里 01:00 到 02:00 时间段的AAS= 257/60 = 4.28,而问题发生的时间段的 AAS = 809 / 60 = 13 , 说明实例的工作负载明显上升了。

 

再来看主要等待事件:

Event Waits Time(s) Avg wait (ms) % DB time Wait Class
enq: TX – row lock contention 10,072 16,079 1596 33.08 Application
log file sync 166,546 10,579 64 21.77 Commit
gc buffer busy acquire 55,828 8,017 144 16.50 Cluster
gc buffer busy release 21,203 5,904 278 12.15 Cluster
gc current block busy 29,196 3,362 115 6.92 Cluster

 

Event Waits Time(s) Avg wait (ms) % DB time Wait Class
log file sync 258,415 4,875 19 31.54 Commit
gc buffer busy acquire 44,471 3,349 75 21.66 Cluster
DB CPU 1,880 12.16
gc current block busy 42,722 1,748 41 11.31 Cluster
gc buffer busy release 10,730 1,127 105 7.29 Cluster

 

问题发生时段的主要等待事件是 enq: TX – row lock contention 这说明存在大量的行锁争用,此外gc buffer busy acquire/release 和 gc current block busy 全局缓存争用等待时长也明显较 之前的 01:00- 02:00 多了数倍,这说明问题发生时段 节点间对全局缓存资源的争用进一步被加剧了。01:00 – 02:00 时段的 enq: TX – row lock contention 不是前5的等待事件,但实际每秒处理的事务数更多为71.8个(问题发生时段为每秒46.3个事务),这说明造成大量行所争用的的原因不是事务变多, 而是应用程序特性造成的。

 

引起频繁 enq: TX – row lock contention等待事件 和 全局缓存资源争用 的最主要SQL语句均是1usg75g3cx4n6:

 

Cluster Wait Time (s) Executions %Total Elapsed Time(s) %Clu %CPU %IO SQL Id SQL Module SQL Text
4,047.30 20,470 22.75 17,790.11 21.01 0.04 0.00 1usg75g3cx4n6 update

 

SQL “1usg75g3cx4n6” 是一条Update更新语句,在此不列出。

 

问题发生时段该语句 1 号实例上运行了20470次,平均每次运行耗时 0.87s , cluster wait time 占该SQL总执行时间的22.75% ,而在01:00 – 02:00 期间该语句共运行了32845 次,平均每次运行耗时 0.02s , cluster wait time 占该SQL总执行时间的 67.44 %。

以上信息说明1号实例在问题发生时段 由SQL语句1usg75g3cx4n6 因为enq: TX – row lock contention(主要因素) 和 gc 全局缓存争用 (次要因素)相互作用引起了巨大的负载。引起enq: TX – row lock contention行锁争用的主要原因是 并发的DML更新相关的行数据。

 

深入分析

除了在问题发生时段数据库负载加剧,出现大量的行锁和全局缓存争用外,问题时段还出现了大规模的动态资源管理操作DRM( Dynamic Resource Management)。

引入DRM的目的是尽可能减少RAC 中CPU和 消息通信的消耗,DRM的资源管理决定依据相关对象的全局缓存操作历史, 该特性会定期自动找出集群中频繁访问某个缓存对象的节点实例,并将该缓存对象re-master到该实例上以优化RAC性能。  DRM 由 LMON、LMD 和 LMS 进程协同完成, LMS负责传输实际的 gcs resouce和 lock 锁信息 , 11g中受到_gc_policy_time隐藏参数的影响,默认最短每10分钟可能被触发。当设置_gc_policy_time=0 ,则object affinity 和 11g 中引入的read mostly policies新特性均将被禁用。

 

AWR报告中1号实例问题时段的 DRM 统计:

 

Name Total per Remaster Op Begin Snap End Snap
remaster ops 2 1.00
remastered objects 2 1.00
replayed locks received 215,517 107,758.50
replayed locks sent 339,349 169,674.50
resources cleaned 0 0.00
remaster time (s) 7.4 3.70
quiesce time (s) 4.3 2.13
freeze time (s) 0.1 0.04
cleanup time (s) 0.4 0.21
replay time (s) 1.0 0.48
fixwrite time (s) 0.9 0.47
sync time (s) 0.8 0.38
affinity objects 525 525

 

以下为01:00- 02:00 时段的DRM 统计:

Name Total per Remaster Op Begin Snap End Snap
remaster ops 5 1.00
remastered objects 8 1.60
replayed locks received 110,902 22,180.40
replayed locks sent 68,890 13,778.00
resources cleaned 0 0.00
remaster time (s) 12.9 2.57
quiesce time (s) 1.4 0.28
freeze time (s) 0.2 0.03
cleanup time (s) 0.9 0.17
replay time (s) 0.5 0.10
fixwrite time (s) 1.9 0.38
sync time (s) 8.0 1.60
affinity objects 526 525

 

可以看到在问题发生时段 DRM 发送(sent)了更多的replayed locks锁资源 ,这里的replay是指将本地锁信息传送到新的master 实例(REPLAY – Transfer of the local lock information to the new master.) , 而负责发送这些replayed locks锁资源的 正是LMS 进程。

如上文所述1、2、4节点均出现过该ORA-600[kjbmprlst:shadow]故障,但是唯有3号节点从没有出现过该问题, 打开3号节点在问题发生时段(03:00-04:00) 的AWR报告后就有重大的发现:

 

Elapsed Time (s) Executions Elapsed Time per Exec (s) %Total %CPU %IO SQL Id SQL Module SQL Text
3,590.52 0 17.30 34.71 63.63 59v4zh1ac3v2a DBMS_SCHEDULER DECLARE job BINARY_INTEGER := …
3,589.83 0 17.29 51.69 37.98 b6usrg82hwsa3 DBMS_SCHEDULER call dbms_stats.gather_databas…
2,173.79 1 2,173.79 10.47 62.16 28.75 b20w3p880j2gs DBMS_SCHEDULER /* SQL Analyze(1) */ select /*…

 

可以发现3号节点当时正在运行”call dbms_stats.gather_database_stats_job_proc ( )”  11g中自动收集统计信息的作业,该作业运行了较长时间(一个小时内尚未完成), 我们知道10g以后引入了默认的自动收集统计信息的作业,在11g中得到了加强, 这一作业会自动收集自上一次收集以来更新超过总数据量10%的 对象的统计信息, 因为该核心产品数据库是大型的OLTP应用,在03:00之前已经发生了大量的数据更改,所以这导致gather_database_stats_job_proc 要收集许多大对象上的统计信息,而这会引发该3号实例频繁Request之前在 1、2号实例中被更新的全局缓存资源,频繁地访问影响了DRM的decision, 导致大量的object 被 re-master 到 3号节点上。

 

Name Total per Remaster Op Begin Snap End Snap
remaster ops 14 1.00
remastered objects 25 1.79
replayed locks received 1,088,009 77,714.93
replayed locks sent 202,112 14,436.57
resources cleaned 0 0.00
remaster time (s) 30.8 2.20
quiesce time (s) 8.5 0.60
freeze time (s) 0.4 0.03
cleanup time (s) 3.3 0.24
replay time (s) 6.4 0.46
fixwrite time (s) 7.7 0.55
sync time (s) 4.5 0.32
affinity objects 4,294,967,289 4,294,967,289

 

可以看到3号实例接收了大量的replayed lock (replayed locks received) ,而发送的lock则很少。而实际发送(sent) 给 3号实例这些锁信息 资源的 正是 1号实例上的LMS进程。

翻阅alert.log 和视图 我发现每一次的gather_database_stats_job_proc均在凌晨3点的 3号实例发生, 因此每一次故障发生时3号实例只要接收这些replayed locks   资源即可,其LMS进程 仅发送少量的 replayed locks , 所以造成了上面所说的3号实例从不发生该ORA-600[kjbmprlst:shadow]故障 , 这一古怪的现象。

 

我们再来阅读上发生ORA-600[kjbmprlst:shadow]故障的LMS进程的trace文件中的部分内容:

*** 2011-10-12 02:25:22.770
DRM(22812) win(8) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol
DRM(22813) win(1) lms 1 finished replaying gcs resources

*** 2011-10-12 03:05:29.717
 lms 1 finished fixing gcs write protocol
DRM(22813) win(2) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol

*** 2011-10-12 03:05:30.312
DRM(22813) win(3) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol
DRM(22813) win(4) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol
DRM(22813) win(5) lms 1 finished replaying gcs resources

*** 2011-10-12 03:05:31.280
 lms 1 finished fixing gcs write protocol
DRM(22813) win(6) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol
DRM(22813) win(7) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol

*** 2011-10-12 03:05:32.269
DRM(22813) win(8) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol
DRM(22814) win(1) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol
DRM(22814) win(2) lms 1 finished replaying gcs resources

*** 2011-10-12 03:05:33.479
 lms 1 finished fixing gcs write protocol
DRM(22814) win(3) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol
DRM(22814) win(4) lms 1 finished replaying gcs resources

*** 2011-10-12 03:05:34.333
 lms 1 finished fixing gcs write protocol
DRM(22814) win(5) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol
DRM(22814) win(6) lms 1 finished replaying gcs resources
 lms 1 finished fixing gcs write protocol

*** 2011-10-12 03:05:35.315
DRM(22814) win(7) lms 1 finished replaying gcs resources
Incident 1035732 created, dump file:
/maclean1_lms1_20075_i1035732.trc
ORA-00600: internal error code, arguments: [kjbmprlst:shadow], [], [], [], [], [], [], [], [], [], [], []

2011-10-12 03:05:36.811503 : kjbmprlst: internal error on replaying 0x618cd.371 from 3
2011-10-12 03:05:36.811541 : kjbmbassert [0x618cd.371]
2011-10-12 03:05:36.811559 : kjbmsassert(0x618cd.371)(2)
2011-10-12 03:05:36.811636 : kjbmsassert(0x618cd.371)(3)
2011-10-12 03:05:36.811667 : kjbmsassert(0x618cd.371)(4)
kjmpbmsg fatal error on 39
MSG [39:KJX_B_REPLAY] .Yq inc=64 len=136 sender=(3,3) seq=0
     fg=ip stat=KJUSERSTAT_DONE spnum=14 flg=x24
    flow ctrl: ver=60 flag=169 len=136 tkts=0 seq=0 wrp=0
               sndr=3 dest=1 rcvr=2
   FUSION MSG 0x2b178baa5120,39 from 3 spnum 14 ver[64,22813] ln 136 sq[3,8]
          REPLAY 1 [0x618cd.371, 574166.0] c[0x59f904e08,-17597] [0x1,xc69]
          grant 1 convert 0 role x0
          pi [0x0.0x0] flags 0x0 state 0x100
          disk scn 0x0.0 writereq scn 0x0.0 rreqid x0
          msgRM# 22813 bkt# 99097 drmbkt# 99097
      pkey 574166.0 undo 0 stat 5 masters[32768, 3->32768] reminc 64 RM# 22813
 flg x6 type x0 afftime x9776dffe
 nreplays by lms 0 = 0 
 nreplays by lms 1 = 0 
     hv 9 [stat 0x0, 1->1, wm 32768, RMno 0, reminc 34, dom 0]
     kjga st 0x4, step 0.36.0, cinc 64, rmno 22813, flags 0x20
     lb 98304, hb 114687, myb 99097, drmb 99097, apifrz 1
   FUSION MSG DUMP END
MSG [65521:PBATCH] inc=64 len=8376 sender=3 seq=279807301 fg=q
    flow ctrl: ver=1 flag=37 len=8376 tkts=0 seq=279807301 wrp=1
               sndr=3 dest=1 rcvr=2
MSG [39:KJX_B_REPLAY] .Y'z inc=64 len=136 sender=(3,3) seq=0
     fg=ip stat=KJUSERSTAT_DONE spnum=14 flg=x24
   FUSION MSG 0x2b178baa31c8,39 from 3 spnum 14 ver[64,22813] ln 136 sq[3,8]
          REPLAY 1 [0x527f5.27a, 574166.0] c[0xa2f7eddc0,2158] [0x1,xf33]
          grant 1 convert 0 role x0
          pi [0x0.0x0] flags 0x0 state 0x100
          disk scn 0x0.0 writereq scn 0x0.0 rreqid x0
          msgRM# 22813 bkt# 99582 drmbkt# 99582
      pkey 574166.0 undo 0 stat 5 masters[32768, 3->32768] reminc 64 RM# 22813
 flg x6 type x0 afftime x9776dffe
 nreplays by lms 0 = 0 
 nreplays by lms 1 = 0 
     hv 33 [stat 0x0, 1->1, wm 32768, RMno 0, reminc 34, dom 0]
     kjga st 0x4, step 0.36.0, cinc 64, rmno 22813, flags 0x20
     lb 98304, hb 114687, myb 99582, drmb 99582, apifrz 1
   FUSION MSG DUMP END

.........................

    ------------process 0xcf22a6d40--------------------
    proc version      : 0
    Local node        : 0
    pid               : 20075
    lkp_node          : 0
    svr_mode          : 0
    proc state        : KJP_NORMAL
    Last drm hb acked : 114687
    flags             : x80
    current lock op    : (nil)
    Total accesses    : 11763805
    Imm.  accesses    : 11763774
    Locks on ASTQ     : 0
    Locks Pending AST : 0
    Granted locks     : 0
    AST_Q: 
    PENDING_Q: 
    GRANTED_Q: 
    KJM HIST LMS1: 
      20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 
      20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 
      20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 
      20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 
      20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 
      20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 20:39:0 1:0 
      13:65521:0 20:39:0 20:39:0 20:39:0 
    START DEFER MSG QUEUE 0 ON LMS1 flg x87:

MSG [61:KJX_SYNC_RCVCHANNEL] inc=64 len=424 sender=(3,3) seq=98262147
     fg=iq stat=KJUSERSTAT_DONE spnum=11 flg=x1
     SYNC_RCVCHANNEL 0xca303f2f0 from 3 spnum 11 ver[64,196610]
     receiver 0 last sent seq 0.98262028
     receiver 1 last sent seq 1.545148943
     receiver 2 last sent seq 1.279807365
MSG [25:KJX_FTDONE] inc=64 len=64 sender=(3,3) seq=109225856
     fg=s stat=KJUSERSTAT_ATTACHFAILED spnum=11 flg=x0
MSG [61:KJX_SYNC_RCVCHANNEL] inc=64 len=424 sender=(3,3) seq=98262146
     fg=iq stat=KJUSERSTAT_DONE spnum=11 flg=x1
     SYNC_RCVCHANNEL 0xca405e758 from 3 spnum 11 ver[64,196610]
     receiver 0 last sent seq 0.98262028
     receiver 1 last sent seq 1.545148943
     receiver 2 last sent seq 1.279807365
MSG [25:KJX_FTDONE] inc=64 len=64 sender=(3,3) seq=6400108
     fg=s stat= spnum=11 flg=x20
    END DEFER MSG QUEUE 0 DUMP ON LMS1
     SEQUENCES: 
    [sidx 0]  0:0.0  1:711171046.0  2:279807300.1  3:43212975.0
     DEFER MSG QUEUE 1 ON LMS1 IS EMPTY
     SEQUENCES: 
    [sidx 1]  0:0.0  1:711171047.0  2:279807292.1  3:43212974.0
     DEFER MSG QUEUE 2 ON LMS1 IS EMPTY
     SEQUENCES: 
    [sidx 2]  0:0.0  1:711171047.0  2:279807300.1  3:43212975.0


可以看到在实际出发ORA-600[kjbmprlst:shadow]之前,LMS后台进程确实在进行频繁地DRM操作。

我们不难看出出发ORA-600[kjbmprlst:shadow]的原因是:数据库较高的性能负载, 1号实例上SQL 语句引发的大量行锁争用 和 3号节点上的 gather_database_stats_job_proc 自动统计信息作业 同时存在 , 导致1号实例上的LMS进程频发地执行DRM操作 , 最终在较高的工作负载情况下触发了管理kjbm shadow锁的代码bug 。

经过分析发现2、4号实例发生该ORA-600[kjbmprlst:shadow]故障与1号节点的情形相似,整个RAC中唯有3号节点例外,因为总是由它来执行gather_database_stats_job_proc, 导致它总是成为DRM的受益者 , 而其他3个节点成为受害者。

但是注意 可能你要问 那不就是简单的由自动统计作业引发的故障吗? 用得着分析这么多吗, 直接关掉该作业 或者换个时段就可以了。

回答:实际上如果仅仅是gather_database_stats_job_proc的话是不足以引发该故障的, 一方面由于节点之间的所跑得应用程序都是一样的,也没有采取分区或者分schema , 这导致节点之间的全局缓存资源争用加剧 , 另一方面 因为每个Buffer Cache都较大, 均存放了大量的全局缓存资源, 且数据的更新十分频繁 , 这导致gather_database_stats_job_proc作业开始执行后 大量的全局资源涌向3号实例 ,同时也触发了DRM的决定, 以至于1、2、4号节点上的LMS 在短期内有极大的工作压力 , 最终导致了 bug 被触发。仅仅禁用该gather_database_stats_job_proc 自动信息搜集作业 ,或者修改该作业的运行时间 都不足以彻底规避该ORA-600[kjbmprlst:shadow]故障, 因为只要是LMS后台进程处于较高的工作负载情况下都仍有可能触发bug。

 

虽然以上分析了一大堆但是我对解决该ORA-600[kjbmprlst:shadow]故障的看法没有丝毫改变, 而且更坚定了。Disable DRM 禁用DRM特性可以从根本上改变LMS进程的行为方式,彻底杜绝该ORA-600[kjbmprlst:shadow]故障发生的可能性。

但我仍需要一些佐证!

 

资料信息

 

翻阅MOS 一个Note 映入我的眼帘,<Bug 12834027 – ORA-600 [kjbmprlst:shadow] / ORA-600 [kjbrasr:pkey] with RAC read mostly locking [ID 12834027.8]> 这个Note 我在上一次分析这个问题的时候已经阅读过了, 当时该Note的描述该问题会在11.2.0.1 上发生,不提供任何workaround 方法 ,唯一的解决途径是打上11.2.0.2 + Bp 的补丁。

但是我发现这个Note 在最近的 21-OCT-2011 被修改了,内容如下:

Bug 12834027  ORA-600 [kjbmprlst:shadow] / ORA-600 [kjbrasr:pkey] with RAC read mostly locking
 This note gives a brief overview of bug 12834027.
 The content was last updated on: 21-OCT-2011
 Click here for details of each of the sections below.
Affects:

    Product (Component)	Oracle Server (Rdbms)
    Range of versions believed to be affected 	Versions BELOW 12.1
    Versions confirmed as being affected 	

        11.2.0.2 

    Platforms affected	Generic (all / most platforms affected)

Fixed:

    This issue is fixed in	

        12.1 (Future Release) 

Symptoms:

Related To:

    Internal Error May Occur (ORA-600)
    ORA-600 [kjbmprlst:shadow]
    ORA-600 [kjbrasr:pkey] 

    RAC (Real Application Clusters) / OPS
    _gc_read_mostly_locking 

Description

    ORA-600 [kjbmprlst:shadow] / ORA-600 [kjbrasr:pkey] can occur with RAC
    read mostly locking.

    Workaround
      Disable DRM
     or
      Disable read-mostly object locking
      eg: Run with "_gc_read_mostly_locking"=FALSE

 

 

这一次翻到这个Note 是在10月28日 ,而这个Note是在10月21日更新的, 不得不说这个更新来的很及时, 提供了2种 workaround 的方式 , 包括彻底禁用DRM ,和之前所说的禁用_gc_read_mostly_locking 特性,相关的bug note 说明了 另一个Exadata case的经过:

 

Hdr: 12834027 N/A RDBMS 11.2.0.2.0 RAC PRODID-5 PORTID-226 12730844
Abstract: ORA-600 [KJBMPRLST:SHADOW] & [KJBRASR:PKEY] IN A READ MOSTLY & SKIP LOCK ENV

*** 08/04/11 04:22 am ***

PROBLEM:
--------
3 nodes got crashed and restarted in exadata cluster.

DIAGNOSTIC ANALYSIS:
--------------------
8 node Exadata RAC instance. Below instances got terminated and it rejoined
cluster around 11:46 Today (01-Aug).

Instance2 (gmfcdwp2) got ORA-600 [kjbmprlst:shadow] at 11:46 AM and
instance got terminated by LMS1 process.
LMS1 (ospid: 14922): terminating the instance due to error 484

instance got terminated by LMS1 process
LMS1 (ospid: 28176): terminating the instance due to error 484

instance got terminated by LMS1 process

which was seen in instance 4 and 8.

 

这个case和我们的惊人的相似, 也是几个Exadata上特定的instance number 会出现ORA-600 [kjbmprlst:shadow]。

另一方面需要评估禁用DRM 对于整体性能的影响,其实这一点我已经在<Important parameters For Oracle BRM Application in 11gR2>中介绍了, Oracle 官方推荐为 BRM 应用程序 禁用 DRM 特性 (真绕口) , 而因为这套系统使用的是默认的Exadata 出场的实例参数设置,所以。。。

 

解决方案

1. 禁用DRM 特性,可以彻底避免LMS进程因为DRM操作而引发bug , 具体做法是设置隐藏参数_gc_policy_time为0。

影响评估:

DRM 特性可以一定程度上优化数据库性能, 但是对于没有分区或分schema 的应用程序而言 DRM并不会带来好处。  Oracle 官方推荐在BRM应用程序 上 要禁用DRM特性, 见Metalink 文档<Questions About BRM Support For Oracle DB 11GR2 And Exadata [ID 1319678.1]>:

“_gc_policy_time=0 to disable DRM.” 修改该_gc_policy_time参数 需要重启实例

 

2. 部分禁用DRM 特性 , 设置 _gc_read_mostly_locking= False。 设置 _gc_read_mostly_locking= False可以避免replayed lock 大量传输 ,极大程度上减少LMS触发bug的可能性。  修改该参数同样需要重启实例

 

案例总结

写了这么久有点累了, 也有点不知所云。 可能会再写一篇 介绍11g 中新加入的Read-mostly locking DRM 新特性,本来想在这篇里一并介绍但是发现篇幅有点长了。

有时候我们解决一个问题只需要某个恰当的方案就足够了, 这个方案可以来源于Metalink  、Google 或者朋友, 我们并不知道这种做法、解决方式实际这么生效 , 但是总归或多或少 它生效了。 但是这不代表 真正意义上理解这个故障或者问题了, 譬如 我花了大约 3-4个小时的时间来分析这个问题, 虽然得到的 结论几乎和我在7月份的那一次是一样的 ,但是透过 分析的过程 我还是获益良多 , 这是唯有自己分析方能产生的结果。

同学们, 享受这分析过程带来的 乐趣吧!

11.2 中Oracle Cluster Registry(OCR)可选的存储设备

在11.2中ocr和votedisk 可以存放在ASM中了,该版本中Oracle Cluster Registry(OCR)可选的存储设备包括:

 

2011-10-29 00:13:18.828: [  OCROSD][1087046128]utstoragetypecommon:
Oracle Cluster Registry does not support the storage type configured.
OCR can be configured on: ASM, OCFS, OCFS2, NFS, Block Device, Character Device, VxFS
2011-10-29 00:13:18.829: [  OCROSD][1087046128]utopen:6m'': OCR location # [0] [/g01/ocrlocal]
configured is not a valid storage type. Return code [37].
2011-10-29 00:13:18.829: [  OCROSD][1087046128]utopen:7: failed to open any OCR file/disk,
errno=11, os err string=Resource temporarily unavailable
2011-10-29 00:13:18.829: [  OCRRAW][1087046128]proprinit: Could not open raw device
2011-10-29 00:13:18.829: [ default][1087046128]a_init:7!: Backend init unsuccessful : [26]
2011-10-29 00:13:19.831: [  OCROSD][1087046128]utstoragetypecommon:
Oracle Cluster Registry does not support the storage type configured.
OCR can be configured on: ASM, OCFS, OCFS2, NFS, Block Device, Character Device, VxFS

 

ASM, OCFS, OCFS2, NFS, Block Device, Character Device, VxFS都可以用来存放ocr文件。 虽然NFS是一种可用的选项,但是实际不推荐在产品环境使用网络文件系统, Mos Note<Mount Options for Oracle files when used with NAS devices [ID 359515.1]>介绍了mount NFS时的一些注意事项。

11.2.0.3 实例启动现在提供Large Pages Information大内存页信息了

刚才发现在目前最新的11.2.0.3版本中实例instance startup时alert.log 中会提供Large Pages Information 大内存页的信息了:

 

Starting ORACLE instance (normal)
****************** Large Pages Information *****************

Total Shared Global Region in Large Pages = 0 KB (0%)

Large Pages used by this instance: 0 (0 KB)
Large Pages unused system wide = 0 (0 KB) (alloc incr 16 MB)
Large Pages configured system wide = 0 (0 KB)
Large Page size = 2048 KB

RECOMMENDATION:
  Total Shared Global Region size is 1202 MB. For optimal performance,
  prior to the next instance restart increase the number
  of unused Large Pages by atleast 601 2048 KB Large Pages (1202 MB)
  system wide to get 100% of the Shared
  Global Region allocated with Large pages
***********************************************************

Starting up:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options.
ORACLE_HOME = /s01/orabase/product/11.2.0/dbhome_3
System name:Linux
Node name:vrh2.oracle.com
Release:2.6.18-274.el5
Version:#1 SMP Mon Jul 25 13:17:49 EDT 2011
Machine:x86_64
Using parameter settings in server-side spfile /s01/orabase/product/11.2.0/dbhome_3/dbs/spfileEMREP.ora

 

该Large Pages Information还附有配置Large Page的RECOMMENDATION设置,当SGA_Target=1202MB时,推荐配置601个2048K页。
注意Large Page不能和11g AMM 自动内存管理一起使用,否则AMM将失去其意义。

securefile allocation chunks

11g中对于LOB对象引入了securefile特性,相对应的对于securefile的统计信息也被大量加入,例如对于旧的oldfile LOB大对象的CHUNK分配是没有具体的STATISTICS来统计的(到11.2.0.3都没有这样的STATISTICS来统计传统LOB的CHUNK分配、回收等等操作),而对于SECUREFILE则有很详尽的STATISTICS:

 

 

  1* select name,value from v$sysstat where upper(name) like '%CHUNK%' or upper(NAME) LIKE '%SECUREFILE%'
SQL> /

NAME                                                    VALUE
-------------------------------------------------- ----------
segment chunks allocation from disepnser                    0
segment total chunk allocation                              0
securefile allocation bytes                                 0
securefile allocation chunks                                0
securefile direct read bytes                                0
securefile direct write bytes                               0
securefile direct read ops                                  0
securefile direct write ops                                 0
securefile inode read time                                  0
securefile inode write time                                 0
securefile inode ioreap time                                0
securefile bytes non-transformed                            0
securefile number of non-transformed flushes                0
securefile bytes encrypted                                  0
securefile bytes cleartext                                  0
securefile compressed bytes                                 0
securefile uncompressed bytes                               0
securefile bytes deduplicated                               0
securefile create dedup set                                 0
securefile destroy dedup set                                0
securefile add dedupd lob to set                            0
securefile rmv from dedup set                               0
securefile reject deduplication                             0
securefile dedup prefix hash match                          0
securefile number of flushes                                0
securefile dedup flush too low                              0
securefile dedup callback oper final                        0
securefile dedup hash collision                             0
securefile dedup fits inline                                0
securefile dedup wapp cache miss                            0

30 rows selected.

SQL> CREATE TABLE t1 ( a CLOB)
  2      LOB(a) STORE AS SECUREFILE  (cache);
CREATE TABLE t1 ( a CLOB)
*
ERROR at line 1:
ORA-43853: SECUREFILE lobs cannot be used in non-ASSM tablespace "SYSTEM"

SQL> create table t1 ( a clob)  lob(a) store  as securefile(cache) tablespace users;

Table created.

SQL> insert into t1 values(rpad('d',99999,'Z'));

1 row created.

SQL> commit;

Commit complete.

SQL> select name,value from v$sysstat where upper(name) like '%CHUNK%' or upper(NAME) LIKE '%SECUREFILE%';

NAME                                                    VALUE
-------------------------------------------------- ----------
segment chunks allocation from disepnser                    1
segment total chunk allocation                             34
securefile allocation bytes                              8192
securefile allocation chunks                                1
securefile direct read bytes                                0
securefile direct write bytes                               0
securefile direct read ops                                  0
securefile direct write ops                                 0
securefile inode read time                                  0
securefile inode write time                                 0
securefile inode ioreap time                                0
securefile bytes non-transformed                         8000
securefile number of non-transformed flushes                1
securefile bytes encrypted                                  0
securefile bytes cleartext                                  0
securefile compressed bytes                                 0
securefile uncompressed bytes                               0
securefile bytes deduplicated                               0
securefile create dedup set                                 0
securefile destroy dedup set                                0
securefile add dedupd lob to set                            0
securefile rmv from dedup set                               0
securefile reject deduplication                             0
securefile dedup prefix hash match                          0
securefile number of flushes                                0
securefile dedup flush too low                              0
securefile dedup callback oper final                        0
securefile dedup hash collision                             0
securefile dedup fits inline                                0
securefile dedup wapp cache miss                            0

30 rows selected.





SQL>  create table t2 ( a clob) tablespace users;

Table created.

SQL>  insert into t2 values(rpad('d',99999,'Z'));

1 row created.

SQL> commit;

Commit complete.

SQL> set linesize 200 pagesize 2000
SQL> col name for a50
SQL> select name,value from v$sysstat where upper(name) like '%CHUNK%' or upper(NAME) LIKE '%SECUREFILE%';

NAME                                                    VALUE
-------------------------------------------------- ----------
segment chunks allocation from disepnser                    1
segment total chunk allocation                             34
securefile allocation bytes                              8192
securefile allocation chunks                                1
securefile direct read bytes                                0
securefile direct write bytes                               0
securefile direct read ops                                  0
securefile direct write ops                                 0
securefile inode read time                                  0
securefile inode write time                                 0
securefile inode ioreap time                                0
securefile bytes non-transformed                         8000
securefile number of non-transformed flushes                1
securefile bytes encrypted                                  0
securefile bytes cleartext                                  0
securefile compressed bytes                                 0
securefile uncompressed bytes                               0
securefile bytes deduplicated                               0
securefile create dedup set                                 0
securefile destroy dedup set                                0
securefile add dedupd lob to set                            0
securefile rmv from dedup set                               0
securefile reject deduplication                             0
securefile dedup prefix hash match                          0
securefile number of flushes                                0
securefile dedup flush too low                              0
securefile dedup callback oper final                        0
securefile dedup hash collision                             0
securefile dedup fits inline                                0
securefile dedup wapp cache miss                            0


如以上演示 传统的oldfile的LOB大对象不会导致securefile allocation chunks的变化, securefile 拥有更详细的STATISTICS统计,这让深入分析优化成为可能,也是securefile 的一个优势。

expdp+compression性能测试

以下在11.2.0.3上,2 cores+ext3文件系统, 导出schema下10G数据,使用compression+ parallel=2 ,耗时大越10分钟, 生成的dump文件总共4.7GB大小

 

 

[oracle@mlab1 ~]$ expdp  dumpfile=HDUMP:bcm%U.dmp filesize=2048M compression=all schemas=bcm parallel=2 logfile=HDUMP:bcm.log 

Export: Release 11.2.0.3.0 - Production on Wed Sep 26 11:56:19 2012

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Username: / as sysdba

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
Starting "SYS"."SYS_EXPORT_SCHEMA_01":  /******** AS SYSDBA dumpfile=HDUMP:bcm%U.dmp filesize=2048M compression=all schemas=bcm parallel=2 logfile=HDUMP:bcm.log 
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 10.82 GB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
. . exported "BCM"."C_CUSTOMER"                          1.194 GB 3000000 rows
. . exported "BCM"."C_STOCK"                             2.311 GB 10000000 rows
. . exported "BCM"."C_ORDER_LINE"                        809.8 MB 30004095 rows
. . exported "BCM"."E_TRADE"                             81.05 MB 4419000 rows
. . exported "BCM"."E_SETTLEMENT"                        19.90 MB 4590000 rows
. . exported "BCM"."E_CASH_TRANSACTION"                  32.58 MB 4383000 rows
. . exported "BCM"."E_DAILY_MARKET"                      33.43 MB 3861000 rows
. . exported "BCM"."C_HISTORY"                           56.62 MB 3000115 rows
. . exported "BCM"."E_TRADE_HISTORY"                     6.042 MB 4481000 rows
. . exported "BCM"."C_ORDER"                             15.22 MB 3000128 rows
. . exported "BCM"."E_WATCH_ITEM"                        17.15 MB 4414000 rows
. . exported "BCM"."E_FINANCIAL"                         40.82 MB 1000000 rows
. . exported "BCM"."E_ACCOUNT_PERMISSION"                9.659 MB  710000 rows
. . exported "BCM"."E_NEWS_ITEM"                         1.133 MB  100000 rows
. . exported "BCM"."E_CUSTOMER"                          3.526 MB  100000 rows
. . exported "BCM"."E_ADDRESS"                           1.731 MB  150000 rows
. . exported "BCM"."E_COMPANY"                           826.3 KB   50000 rows
. . exported "BCM"."C_DISTRICT"                          67.51 KB    1000 rows
. . exported "BCM"."C_ITEM"                              5.609 MB  100000 rows
. . exported "BCM"."E_CUSTOMER_ACCOUNT"                  6.697 MB  500000 rows
. . exported "BCM"."C_WAREHOUSE"                         12.47 KB     100 rows
. . exported "BCM"."E_BROKER"                            9.898 KB    1000 rows
. . exported "BCM"."E_CHARGE"                            4.968 KB      15 rows
. . exported "BCM"."E_COMMISSION_RATE"                   5.937 KB     240 rows
. . exported "BCM"."E_COMPANY_COMPETITOR"                703.2 KB  150000 rows
. . exported "BCM"."C_NEW_ORDER"                         744.1 KB  900088 rows
. . exported "BCM"."E_EXCHANGE"                          5.468 KB       4 rows
. . exported "BCM"."E_INDUSTRY"                          6.460 KB     102 rows
. . exported "BCM"."E_CUSTOMER_TAXRATE"                  413.0 KB  200000 rows
. . exported "BCM"."E_NEWS_XREF"                         471.7 KB  100000 rows
. . exported "BCM"."E_LAST_TRADE"                        485.3 KB   68500 rows
. . exported "BCM"."E_SECTOR"                            5.039 KB      12 rows
. . exported "BCM"."E_STATUS_TYPE"                       4.867 KB       5 rows
. . exported "BCM"."E_TAXRATE"                           8.703 KB     320 rows
. . exported "BCM"."E_TRADE_TYPE"                        5.062 KB       5 rows
. . exported "BCM"."E_SECURITY"                          2.177 MB   68500 rows
. . exported "BCM"."E_WATCH_LIST"                        252.6 KB  100000 rows
. . exported "BCM"."E_HOLDING"                               0 KB       0 rows
. . exported "BCM"."E_HOLDING_HISTORY"                       0 KB       0 rows
. . exported "BCM"."E_HOLDING_SUMMARY"                       0 KB       0 rows
. . exported "BCM"."E_TRADE_REQUEST"                         0 KB       0 rows
. . exported "BCM"."E_ZIP_CODE"                          103.3 KB   14741 rows
Master table "SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYS.SYS_EXPORT_SCHEMA_01 is:
  /home/oracle/dump/bcm01.dmp
  /home/oracle/dump/bcm02.dmp
  /home/oracle/dump/bcm03.dmp
  /home/oracle/dump/bcm04.dmp
Job "SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at 12:05:03

[oracle@mlab1 ~]$ cd /home/oracle/dump/
[oracle@mlab1 dump]$ ls -lh
total 4.7G
-rw-r----- 1 oracle asmadmin 2.0G Sep 26 12:03 bcm01.dmp
-rw-r----- 1 oracle asmadmin 2.0G Sep 26 12:04 bcm02.dmp
-rw-r----- 1 oracle asmadmin 521M Sep 26 12:05 bcm03.dmp
-rw-r----- 1 oracle asmadmin 121M Sep 26 12:05 bcm04.dmp
-rw-r--r-- 1 oracle asmadmin 4.9K Sep 26 12:05 bcm.log

由于以上dump文件已被压缩过,所以后续的bzip2或者gz压缩几乎没有意义,而且耗时超长且压缩比极低:

快速升级Oracle 11.2.0.2 RAC到11.2.0.3

11.2.0.3 补丁集在美国时间9月23日发布了,关于11.2.0.3 发布的更多信息可以参考<Oracle 11gR2发布11.2.0.3 Patchset补丁集-又一重量级更新>一文。

这里我们来快速浏览由11.2.0.2 RAC升级到11.2.0.3的过程:

在正式升级GI/CRS之前需要先打上”Patch 12539000: 11203:ASM UPGRADE FAILED ON FIRST NODE WITH ORA-03113″

我们仅需要针对GI/CRS打上补丁,无需在RDBMS/DB上实施。该Patch可以滚动升级Rolling upgrade, 简易的实施流程如下:

 

1. 在所有节点上安装最新的opatch工具,该步骤不需要停止任何服务

[root@vrh1 ~]# su - grid
[grid@vrh1 ~]$ cd $CRS_HOME
[grid@vrh1 grid]$ mv OPatch OPatch_old

[grid@vrh1 grid]$ unzip /tmp/p6880880_112000_Linux-x86-64.zip -d $CRS_HOME

[grid@vrh1 grid]$ opatch
Invoking OPatch 11.2.0.1.3

Oracle Interim Patch Installer version 11.2.0.1.3
Copyright (c) 2010, Oracle Corporation.  All rights reserved.

2. 解压之前下载的 p12539000_112020_Linux-x86-64.zip 的补丁包,!!注意不要解压在/tmp目录下!!

[grid@vrh1 ~]$ mkdir /g01/patch

[grid@vrh1 ~]$ cd /g01/patch

[grid@vrh1 patch]$ unzip /tmp/p12539000_112020_Linux-x86-64.zip

Archive:  /tmp/p12539000_112020_Linux-x86-64.zip
   creating: 12539000/
   creating: 12539000/files/
   creating: 12539000/files/lib/
   creating: 12539000/files/lib/libserver11.a/
  inflating: 12539000/files/lib/libserver11.a/ksxp.o  
   creating: 12539000/etc/
   creating: 12539000/etc/config/
  inflating: 12539000/etc/config/inventory.xml  
  inflating: 12539000/etc/config/actions.xml  
  inflating: 12539000/etc/config/deploy.xml  
   creating: 12539000/etc/xml/
  inflating: 12539000/etc/xml/GenericActions.xml  
  inflating: 12539000/etc/xml/ShiphomeDirectoryStructure.xml 

3. 以root用户执行# opatch auto <UNZIPPED_PATCH_LOCATION> 命令

[root@vrh1 ~]# /g01/11.2.0/grid/OPatch/opatch auto /g01/patch -oh $CRS_HOME

Executing /usr/bin/perl /g01/11.2.0/grid/OPatch/crs/patch112.pl -patchdir /g01 -patchn patch -oh
/g01/11.2.0/grid -paramfile /g01/11.2.0/grid/crs/install/crsconfig_params
2011-09-24 22:34:41: Parsing the host name
2011-09-24 22:34:41: Checking for super user privileges
2011-09-24 22:34:41: User has super user privileges
Using configuration parameter file: /g01/11.2.0/grid/crs/install/crsconfig_params
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'vrh1'
CRS-2673: Attempting to stop 'ora.crsd' on 'vrh1'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'vrh1'
CRS-2673: Attempting to stop 'ora.FRA.dg' on 'vrh1'
................................
Backing up files affected by the patch 'NApply' for restore. This might take a while...

Applying patch 12539000...

ApplySession applying interim patch '12539000' to OH '/g01/11.2.0/grid'
Backing up files affected by the patch '12539000' for rollback. This might take a while...

Patching component oracle.rdbms, 11.2.0.2.0...
Updating archive file "/g01/11.2.0/grid/lib/libserver11.a"  with "lib/libserver11.a/ksxp.o"
ApplySession adding interim patch '12539000' to inventory

Verifying the update...
Inventory check OK: Patch ID 12539000 is registered in Oracle Home inventory with proper meta-data.
Files check OK: Files from Patch ID 12539000 are present in Oracle Home.
Running make for target ioracle

The local system has been patched and can be restarted.

UtilSession: N-Apply done.

OPatch succeeded.
CRS-4123: Oracle High Availability Services has been started.

4. 在所有节点上重复以上步骤,并确认补丁状态

[root@vrh1 ~]# su - grid

[grid@vrh1 ~]$ opatch lsinventory
Interim patches (1) :

Patch  12539000     : applied on Sat Sep 24 22:36:35 CST 2011
Unique Patch ID:  13976979
   Created on 28 Jul 2011, 12:37:42 hrs PST8PDT
   Bugs fixed:
     12539000

 

如果没有安装以上12539000补丁,在使用OUI升级GI/CRS时会出现以下 Warning:

 

11.2.0.3_12539000_bug

 

升级11.2.0.2 GI/CRS到11.2.0.3

1.解压软件包,第三个zip包为grid软件

[grid@vrh1 tmp]$ unzip p10404530_112030_Linux-x86-64_3of7.zip

2. 以GI拥有者用户启动GI/CRS的OUI安装界面,并选择Out of Place的安装目录

(grid)$ unset ORACLE_HOME ORACLE_BASE ORACLE_SID
(grid)$ export DISPLAY=:0
(grid)$ cd  /tmp/grid
(grid)$ ./runInstaller
Starting Oracle Universal Installer…

upgrade_11.2.0.3_GI_1

 

upgrade_11.2.0.3_GI_2

 

upgrade_11.2.0.3_GI_3

 

upgrade_11.2.0.3_GI_4

 

upgrade_11.2.0.3_GI_5

 

upgrade_11.2.0.3_GI_6

 

upgrade_11.2.0.3_GI_8

 

upgrade_11.2.0.3_GI_9

 

upgrade_11.2.0.3_GI_10

 

upgrade_11.2.0.3_GI_11

 

3. 依次在所有节点上以root用户运行rootupgrade.sh升级脚本

 

su - root 

First Node [root@vrh1 ~]# /g01/11.2.0.3/grid/rootupgrade.sh

Performing root user operation for Oracle 11g 

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /g01/11.2.0.3/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /g01/11.2.0.3/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation

ASM upgrade has started on first node.

CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'vrh1'
CRS-2673: Attempting to stop 'ora.crsd' on 'vrh1'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'vrh1'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'vrh1'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'vrh1'
CRS-2673: Attempting to stop 'ora.oc4j' on 'vrh1'
CRS-2673: Attempting to stop 'ora.FRA.dg' on 'vrh1'
CRS-2673: Attempting to stop 'ora.MACLEAN.dg' on 'vrh1'
CRS-2673: Attempting to stop 'ora.registry.acfs' on 'vrh1'
CRS-2673: Attempting to stop 'ora.SYSTEMDG.dg' on 'vrh1'
CRS-2673: Attempting to stop 'ora.cvu' on 'vrh1'
CRS-2677: Stop of 'ora.cvu' on 'vrh1' succeeded
CRS-2672: Attempting to start 'ora.cvu' on 'vrh2'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'vrh1'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.vrh1.vip' on 'vrh1'
CRS-2677: Stop of 'ora.scan1.vip' on 'vrh1' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'vrh2'
CRS-2677: Stop of 'ora.vrh1.vip' on 'vrh1' succeeded
CRS-2672: Attempting to start 'ora.vrh1.vip' on 'vrh2'
CRS-2677: Stop of 'ora.registry.acfs' on 'vrh1' succeeded
CRS-2676: Start of 'ora.scan1.vip' on 'vrh2' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'vrh2'
CRS-2676: Start of 'ora.cvu' on 'vrh2' succeeded
CRS-2676: Start of 'ora.vrh1.vip' on 'vrh2' succeeded
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'vrh2' succeeded
CRS-2677: Stop of 'ora.MACLEAN.dg' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.FRA.dg' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.oc4j' on 'vrh1' succeeded
CRS-2672: Attempting to start 'ora.oc4j' on 'vrh2'
CRS-2676: Start of 'ora.oc4j' on 'vrh2' succeeded
CRS-2677: Stop of 'ora.SYSTEMDG.dg' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'vrh1'
CRS-2677: Stop of 'ora.asm' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'vrh1'
CRS-2677: Stop of 'ora.ons' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'vrh1'
CRS-2677: Stop of 'ora.net1.network' on 'vrh1' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'vrh1' has completed
CRS-2677: Stop of 'ora.crsd' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.ctssd' on 'vrh1'
CRS-2673: Attempting to stop 'ora.evmd' on 'vrh1'
CRS-2673: Attempting to stop 'ora.asm' on 'vrh1'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'vrh1'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'vrh1'
CRS-2677: Stop of 'ora.asm' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'vrh1'
CRS-2677: Stop of 'ora.evmd' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'vrh1'
CRS-2677: Stop of 'ora.cssd' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.diskmon' on 'vrh1'
CRS-2673: Attempting to stop 'ora.gipcd' on 'vrh1'
CRS-2677: Stop of 'ora.gipcd' on 'vrh1' succeeded
CRS-2673: Attempting to stop 'ora.gpnpd' on 'vrh1'
CRS-2677: Stop of 'ora.gpnpd' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.drivers.acfs' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.diskmon' on 'vrh1' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'vrh1' has completed
CRS-4133: Oracle High Availability Services has been stopped.
OLR initialization - successful
Replacing Clusterware entries in inittab
clscfg: EXISTING configuration version 5 detected.
clscfg: version 5 is 11g Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Last Node 

[root@vrh2 ~]# /g01/11.2.0.3/grid/rootupgrade.sh

Performing root user operation for Oracle 11g 

The following environment variables are set as:
    ORACLE_OWNER= grid
    ORACLE_HOME=  /g01/11.2.0.3/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /g01/11.2.0.3/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'vrh2'
CRS-2673: Attempting to stop 'ora.crsd' on 'vrh2'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'vrh2'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'vrh2'
CRS-2673: Attempting to stop 'ora.registry.acfs' on 'vrh2'
CRS-2673: Attempting to stop 'ora.SYSTEMDG.dg' on 'vrh2'
CRS-2673: Attempting to stop 'ora.oc4j' on 'vrh2'
CRS-2673: Attempting to stop 'ora.cvu' on 'vrh2'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'vrh2'
CRS-2677: Stop of 'ora.cvu' on 'vrh2' succeeded
CRS-2672: Attempting to start 'ora.cvu' on 'vrh1'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.vrh2.vip' on 'vrh2'
CRS-2677: Stop of 'ora.vrh2.vip' on 'vrh2' succeeded
CRS-2672: Attempting to start 'ora.vrh2.vip' on 'vrh1'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'vrh2'
CRS-2677: Stop of 'ora.scan1.vip' on 'vrh2' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'vrh1'
CRS-2676: Start of 'ora.cvu' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.registry.acfs' on 'vrh2' succeeded
CRS-2676: Start of 'ora.vrh2.vip' on 'vrh1' succeeded
CRS-2676: Start of 'ora.scan1.vip' on 'vrh1' succeeded
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'vrh1'
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.oc4j' on 'vrh2' succeeded
CRS-2672: Attempting to start 'ora.oc4j' on 'vrh1'
CRS-2676: Start of 'ora.oc4j' on 'vrh1' succeeded
CRS-2677: Stop of 'ora.SYSTEMDG.dg' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'vrh2'
CRS-2677: Stop of 'ora.asm' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'vrh2'
CRS-2677: Stop of 'ora.ons' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'vrh2'
CRS-2677: Stop of 'ora.net1.network' on 'vrh2' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'vrh2' has completed
CRS-2677: Stop of 'ora.crsd' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'vrh2'
CRS-2673: Attempting to stop 'ora.ctssd' on 'vrh2'
CRS-2673: Attempting to stop 'ora.evmd' on 'vrh2'
CRS-2673: Attempting to stop 'ora.asm' on 'vrh2'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'vrh2'
CRS-2677: Stop of 'ora.asm' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'vrh2'
CRS-2677: Stop of 'ora.evmd' on 'vrh2' succeeded
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'vrh2' succeeded
CRS-2677: Stop of 'ora.mdnsd' on 'vrh2' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'vrh2'
CRS-2677: Stop of 'ora.cssd' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.diskmon' on 'vrh2'
CRS-2673: Attempting to stop 'ora.gipcd' on 'vrh2'
CRS-2677: Stop of 'ora.gipcd' on 'vrh2' succeeded
CRS-2673: Attempting to stop 'ora.gpnpd' on 'vrh2'
CRS-2677: Stop of 'ora.diskmon' on 'vrh2' succeeded
CRS-2677: Stop of 'ora.drivers.acfs' on 'vrh2' succeeded
CRS-2677: Stop of 'ora.gpnpd' on 'vrh2' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'vrh2' has completed
CRS-4133: Oracle High Availability Services has been stopped.
OLR initialization - successful
Replacing Clusterware entries in inittab
clscfg: EXISTING configuration version 5 detected.
clscfg: version 5 is 11g Release 2.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Started to upgrade the Oracle Clusterware. This operation may take a few minutes.
Started to upgrade the CSS.
Started to upgrade the CRS.
The CRS was successfully upgraded.
Oracle Clusterware operating version was successfully set to 11.2.0.3.0

ASM upgrade has finished on last node.

PRKO-2116 : OC4J is already enabled
Configure Oracle Grid Infrastructure for a Cluster ... succeeded

 

4. 确认GI/CRS成功升级到11.2.0.3 :

 

[grid@vrh2 ~]$ crsctl query crs activeversion
Oracle Clusterware active version on the cluster is [11.2.0.3.0]

 

 

升级11.2.0.2 RDBMS/DB到 11.2.0.3

 

1. 解压RDBMS/DB 相关的第1-2个 zip包:

 

[root@vrh1 ~]# su - oracle
[oracle@vrh1 tmp]$ mkdir /s01/patch
[oracle@vrh1 tmp]$ cd /s01/patch

[oracle@vrh1 patch]$ unzip /tmp/p10404530_112030_Linux-x86-64_1of7.zip
[oracle@vrh1 patch]$ unzip /tmp/p10404530_112030_Linux-x86-64_2of7.zip

 

2.
因为11.2.0.2的Patchset以后都是out of place的,所以我们可以不用像在11gr2以前那样必须在原有安装低版本软件的基础上才能升级软件,而可以选择在别的位置完全新安装。

注意该步骤不需要停止数据库实例,可以在前期工作中完成。

以DB/RDBMS数据库软件的拥有者身份(oracle用户)启动方才解压目录下的oui安装界面:
su – oracle

(oracle)$ unset ORACLE_HOME ORACLE_BASE ORACLE_SID
(oracle)$ export DISPLAY=:0
(oracle)$ cd $PATCHHOME
(oracle)$ ./runInstaller

 

upgrade_11.2.0.3_DB_1

 

upgrade_11.2.0.3_DB_2

 

upgrade_11.2.0.3_DB_3

 

upgrade_11.2.0.3_DB_4

 

upgrade_11.2.0.3_DB_5

 

upgrade_11.2.0.3_DB_6

 

upgrade_11.2.0.3_DB_7

 

upgrade_11.2.0.3_DB_8

 

依次在所有节点上执行root.sh脚本

/s01/orabase/product/11.2.0/dbhome_3/root.sh

 

3. 使用DBUA静默模式升级RAC数据库的数据字典

 

su - oracle
[oracle@vrh1 ~]$ export ORACLE_HOME=/s01/orabase/product/11.2.0/dbhome_3

/*  这里的SID指定数据库名 */

[oracle@vrh1 ~]$ $ORACLE_HOME/bin/dbua -silent -sid VPROD

Log files for the upgrade operation are located at: /s01/orabase/cfgtoollogs/dbua/VPROD/upgrade2
Performing Pre Upgrade
1% complete
7% complete
Upgrading Oracle Server
9% complete
10% complete
12% complete
13% complete
15% complete
16% complete
18% complete
20% complete
21% complete
23% complete
24% complete
26% complete
27% complete
29% complete
30% complete
32% complete
33% complete
35% complete
36% complete
Upgrading Real Application Clusters
38% complete
Upgrading Oracle Workspace Manager
40% complete
41% complete
43% complete
44% complete
Performing Post Upgrade
46% complete
84% complete
85% complete
86% complete
92% complete
Generating Summary
Database upgrade has been completed successfully, and the database is ready to use.
100% complete
Check the log file "/s01/orabase/cfgtoollogs/dbua/logs/silent1.log" for upgrade details.

4.更新所有节点上.bash_profile 中的ORACLE_HOME等变量

 

5.执行过DBUA升级工具的节点上的orapw$SID密码文件已被更新,将该文件传播到其他节点上

 

6.确认数据字典升级成功,并重启所有实例

SQL> col comp_name for a40
SQL> col version for a20
SQL> set linesize 140 pagesize 1200
SQL> select comp_name,version from dba_server_registry;

COMP_NAME                                VERSION
---------------------------------------- --------------------
Oracle Workspace Manager                 11.2.0.3.0
Oracle Database Catalog Views            11.2.0.3.0
Oracle Database Packages and Types       11.2.0.3.0
Oracle Real Application Clusters         11.2.0.3.0

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------
www.askmac.cn & www.askmac.cn

[oracle@vrh1 dbs]$ opatch lsinventory
Invoking OPatch 11.2.0.1.7

Oracle Interim Patch Installer version 11.2.0.1.7
Copyright (c) 2011, Oracle Corporation.  All rights reserved.

Oracle Home       : /s01/orabase/product/11.2.0/dbhome_3
Central Inventory : /g01/oraInventory
   from           : /etc/oraInst.loc
OPatch version    : 11.2.0.1.7
OUI version       : 11.2.0.3.0
Log file location : /s01/orabase/product/11.2.0/dbhome_3/cfgtoollogs/opatch/opatch2011-09-25_00-18-57AM.log

Lsinventory Output file location : /s01/orabase/product/11.2.0/dbhome_3/cfgtoollogs/opatch
/lsinv/lsinventory2011-09-25_00-18-57AM.txt

--------------------------------------------------------------------------------
Installed Top-level Products (1): 

Oracle Database 11g                                                  11.2.0.3.0
There are 1 products installed in this Oracle Home.

There are no Interim patches installed in this Oracle Home.

Rac system comprising of multiple nodes
  Local node = vrh1
  Remote node = vrh2

[oracle@vrh1 dbs]$ sqlplus  / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Sun Sep 25 00:19:14 2011

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> shutdown immediate;

SQL> startup ;
ORACLE instance started.

Total System Global Area 1252663296 bytes
Fixed Size                  2227944 bytes
Variable Size             402653464 bytes
Database Buffers          838860800 bytes
Redo Buffers                8921088 bytes
Database mounted.
Database opened.

 

11.2.0.3上optimizer_features_enable造成的一些变化

 

我们知道几乎每个Patchset都会引入Oracle Optimizer优化器的一些微妙变化,升级到11.2.0.3后默认的optimizer_features_enable(OFE)为11.2.0.3,我们来了解一下这与11.2.0.2时有哪些区别:

SQL> col PARAMETER for a30
SQL> col "11.2.0.3" for a20
SQL> col  "11.2.0.2" for a20
SQL> col DESCRIB for a50
SQL> set linesize 200 

SQL> select V11203.NAME    Parameter,
  2         V11203.VALUE   "11.2.0.3",
  3         V11202.VALUE   "11.2.0.2",
  4         V11203.describ
  5    from ofe_11203 V11203, ofe_11202 V11202
  6   where V11203.NAME = V11202.NAME
  7     and V11203.VALUE != V11202.VALUE;

PARAMETER                      11.2.0.3             11.2.0.2             DESCRIB
------------------------------ -------------------- -------------------- --------------------------------------------------
_fastpin_enable                241174785            404585473            enable reference count based fast pins
_db_flash_cache_keep_limit     241098320            404509008            Flash cache keep buffer upper limit in percentage
optimizer_features_enable      11.2.0.3             11.2.0.2             optimizer plan compatibility parameter
_optimizer_undo_cost_change    11.2.0.3             11.2.0.2             optimizer undo cost change

Oracle 11gR2发布11.2.0.3 Patchset补丁集-又一重量级更新

Oracle 11gR2的Patchset 2 即11.2.0.3在美国时间9月23日发布了(23-SEP-2011),此次的发布包括Linux 86和 Linux x86-64 2种操作系统平台。 11.2.0.3 补丁集的Patch id为10404530,该补丁集包括7个zip包,总容量达到了5 GB (慢慢下载吧!)。

 

11.2.0.3_patchset

 

Table 1 Installation Types and Associated Zip Files

Installation Type Zip File
Oracle Database (includes Oracle Database and Oracle RAC)Note: you must download both zip files to install Oracle Database. p10404530_112030_platform_1of7.zip

p10404530_112030_platform_2of7.zip

Oracle Grid Infrastructure (includes Oracle ASM, Oracle Clusterware, and Oracle Restart) p10404530_112030_platform_3of7.zip
Oracle Database Client p10404530_112030_platform_4of7.zip
Oracle Gateways p10404530_112030_platform_5of7.zip
Oracle Examples p10404530_112030_platform_6of7.zip
Deinstall p10404530_112030_platform_7of7.zip


在11.2.0.3中Oracle引入了更多的新特性,主要增强了ACFS(关于ACFS的一些最新信息)和LogMiner, 这些特性包括:

 

Oracle Database 11g Release 2 (11.2.0.3) New Features

  • Oracle ACFS Snapshot Enhancements
  • Oracle ACFS Security and Encryption Features
  • Support for ACFS Replication and Tagging on Windows
  • Oracle LogMiner Support for Binary XML
  • SQL Apply Support for Binary XML
  • Oracle LogMiner Support for Object Relational Model
  • SQL Apply Support for Object Relational Model
  • Deprecation of Obsolete Oracle XML DB Functions and Packages
  • Oracle Warehouse Builder Support for Partition DML
  • Enhanced Partitioning Support in Oracle Warehouse Builder
  • Oracle Warehouse Builder External Table Data Pump Support
  • Oracle Warehouse Builder External Table Preprocessor Support
  • Compressed Table and Partition Support in Oracle Warehouse Builder
  • Support for PL/SQL Native Compilation

 

更多关于11.2.0.3 新特性的信息可以参考<Oracle Database 11g Release 2 (11.2.0.3) New Features>

 

 

 

Current Oracle Database Release Schedule

Click on the version number in the heading to get to the download page for that patch set.

 

Platform 10.1.0.5 10.2.0.44 10.2.0.53 11.1.0.71 11.2.0.12 11.2.0.2 11.2.0.3
Linux x86 30-JAN-2006 22-FEB-2008 30-APR-2010 18-SEP-2008 1-SEP-2009 13-SEP-2010 23-SEP-2011
Linux x86-64 24-FEB-2006 17-MAR-2008 30-APR-2010 18-SEP-2008 1-SEP-2009 13-SEP-2010 23-SEP-2011
Linux Itanium 30-APR-2006 24-SEP-2008 17-MAR-2011 Platform desupported
(see Doc ID 1130325.1)
Platform desupported
(see Doc ID 1130325.1)
Platform desupported
(see Doc ID 1130325.1)
Platform desupported
(see Doc ID 1130325.1 )
IBM Linux on POWER Not planned 9-JAN-2009
Patching for previous
release ended 9-Apr-09
17-MAR-2011 Not planned Not planned Not planned
(see Doc ID 1310584.1)
Not planned
(see Doc ID 1310584.1 )
IBM Linux on System z 26-AUG-2006 16-DEC-2008
Patching for previous
release ended 16-Mar-09
3-JAN-2011 Not planned Not planned 30-MAR-2011 Q4CY2011
HP-UX PA-RISC (64-bit)
See footnote 8 below regarding future support for this platform
05-FEB-2006 02-JUN-2008 15-DEC-2010 11-Nov-2008 20-MAY-2010 15-MAR-2011 Q1CY2012
HP-UX Itanium 07-JUN-2006 30-APR-2008 3-JUN-2010 06-OCT-2008 22-DEC-2009 19-OCT-2010 Oct 2011
Oracle Solaris SPARC (64-bit) 05-FEB-2006 30-APR-2008 19-MAY-2010 06-OCT-2008 6-Nov-2009 24-SEP-2010 Oct 2011
Oracle Solaris x86-64 (64-bit) Not planned 13-NOV-2008 19-MAY-2010 Not planned 25-Nov-2009 24-SEP-2010 Oct 2011
IBM AIX on POWER Systems 05-FEB-2006 15-MAY-2008 3-JUN-2010 06-OCT-2008 22-DEC-2009 19-OCT-2010 Oct 2011
Microsoft Windows (32-bit) 13-FEB-2006 17-MAR-2008 19-JUL-2010 10-OCT-2008 5-APR-2010 15-DEC-2010 Q4CY2011
Microsoft Windows x64 (64-bit) Not planned 16-MAY-2008 27-JUL-2010 13-NOV-2008 2-APR-2010 15-DEC-2010 Q4CY2011
Microsoft Windows Itanium (64-bit) 30-JAN-2006 2-FEB-2009
Patching for previous
release ended 2-May-09
12-MAY-2011 Not planned
(see Doc ID 1307745.1)
Not planned
(see Doc ID 1307745.1)
Not planned
(see Doc ID 1307745.1)
Not planned
(see Doc ID 1307745.1 )
Apple Mac OS X (PowerPC) 08-JAN-2007 Platform Obsolete Platform Obsolete Platform Obsolete Platform Obsolete Platform Obsolete Platform Obsolete
Apple Mac OS X (Intel) Not planned 10-April-2009
Single Instance only
Sched TBA Not planned Sched TBA Sched TBA Q1CY2012 (Instant Client Only)
HP Tru64 UNIX 18-OCT-2006
20-FEB-2009
Patching for previous
release ended 20-May-09

21-Apr-2011 Platform Obsolete Platform Obsolete Platform Obsolete Platform Obsolete
Oracle Solaris x86 (32-bit) 18-JUN-2006 14-Nov-2008
Last patch set for this
platform
Platform Obsolete Platform Obsolete Platform Obsolete Platform Obsolete Platform Obsolete
HP OpenVMS Alpha 15-FEB-2008 15-Dec-2008
Q2CY2012updated
Platform Obsolete Platform Obsolete Platform Obsolete Platform Obsolete
HP OpenVMS Itanium Not planned 15-Dec-2008 Q2CY2012updated
Not planned
(see Doc ID 1307745.1)
Not planned
(see Doc ID 1307745.1)
Not Planned
(see Doc ID 1307745.1)
Not Planned
(see Doc ID 1307745.1 )
IBM z/OS on System z 06-MAR-2006 Not planned Q2CY2012 Unsupported
Platform
(see Doc ID 461234.1)
Unsupported
Platform
(see Doc ID 461234.1)
Unsupported
Platform
(see Doc ID 461234.1)
Unsupported
Platform
(see Doc ID 461234.1 )
Platform 10.1.0.5 10.2.0.44 10.2.0.53 11.1.0.71 11.2.0.12 11.2.0.2 11.2.0.3

 

Legend:

Sched TBA = Schedule To Be Announced

DD-MMM-YYYY: Available, date shown is when the patch set was made available on My Oracle Support/MetaLink

1H or 2H CYyyyy: Date falls within the 1st half (six months) or 2nd half of Calendar Year. For example 1H CY2009 means “some time within the first six months of 2009”.

Qn CYyyyy: Date falls within the nth Quarter (3 month period) of the Calendar Year specified. For example Q2 CY 2009 means “sometime within the second quarter of 2009, ie between April and June 2009”.

Unsupported platform – means that no further Database releases will be ported to this platform

Patching for previous release ends: explained in next section.

 

MOS Note <Release Schedule of Current Database Releases [ID 742060.1]>指出AIX、Sparc Solaris等平台的11.2.0.3 会在2011年的10月(OCT 2011)份发布,极有可能是OOW 2011大会期间。

 

11.2.0.3 patchset中引入的值得注意的警告和修复:

Notable fixes included in 11.2.0.3

This section lists fixes / enhancements in 11.2.0.3 which may cause a notable change in behaviour.

9832338 ORA-600 [15160] / ORA-7445 [kkogfp] from CONNECT BY and OUTER JOIN (+)
Note:1354793.1I Oracle Text Lexer Feature Changes introduced in 11.2.0.3

Alerted and Notable issues fixed in 11.2.0.3

8331063* Corrupt Undo. ORA-600 [2015] during rollback in undo block for COMPRESS table with SUPPLEMENTAL LOGGING. This bug is alerted in Note 1191474.1
10205230* ORA-600 / corruption possible during shutdown in RAC. This bug is alerted in Note:1318986.1
12431716* Mutex waits may cause higher CPU usage in 11.2.0.2.2 PSU / GI PSU. This bug is alerted in Note:1321817.1
9637033+ Block Corruption in compressed table with more than 255 columns
9724970+ Block Corruption with PDML UPDATE. ORA_600 [4511] OERI[kdblkcheckerror] by block check
9735237+ Dump [under kxspoac] / ORA-1722 as SQL uses child with mismatched BIND metadata
9965278+ Assorted dumps and errors with function based indexes or virtual columns present
10113224+ Index coalesce may generate invalid redo if blocks in the buffer cache are invalid/corrupted
10209232+ ORA-1578 / ORA-600 [3020] Corruption. Misplaced Blocks and Lost Write in ASM
10269193+ Wrong results with outer join and CASE expression optimization (CASE need not to be present)
11666959+ ORA-7445 / LPX-200 / wrong results etc.. from new XML parser
11799496+ ORA-600 [kcbzpbuf_1] block corruption in buffer cache for 32k block size / ORA-7445 [kdb4cpss] by cache protect
11814891+ ORA-600 [7999] [9] [1] [<lob block rdba>] / ORA-1555 double allocated LOB block

 

更多bug信息可以参考:https://www.askmac.cn/archives/11-2-0-3-patch-set-list-of-bug-fixes-by-problem-type.html

 

11.2.0.3 patchset补丁集已发现的一些bug(Known bug):

NB Bug Fixed Description
12976376 12.1.0.0 High VERSION_COUNT for SQL with binds, including recursive dictionary SQL
12596444 12.1.0.0 Cursor not shared with CURSOR_SHARING if SQL has a CASE expression or set operation (UNION)
10157392 12.1.0.0 High version counts for SQL with binds (BIND_MISMATCH)
11930680 High VERSION_COUNT due to AUTH_CHECK_MISMATCH / INSUFF_PRIVS with secure view merging
NB Bug Fixed Description
12596444 12.1.0.0 Cursor not shared with CURSOR_SHARING if SQL has a CASE expression or set operation (UNION)
12534597 12.1.0.0 Bind Peeking is disabled for remote queries
NB Bug Fixed Description
11063191 12.1.0.0 ora-4031 with hint /*+ cursor_sharing_exact */ – excessive “kkssp^nn” memory
NB Bug Fixed Description
12594032 12.1.0.0 Call Memory corruption / ORA-600 [17114] with CDC
12579446 12.1.0.0 SGA corruption / ORA-600 / dumps using XA with database links
NB Bug Fixed Description
12747437 12.1.0.0 ORA-600 [ktspfmdb:objdchk_kcbnew_3] after purging single consumer queue table
NB Bug Fixed Description
12976376 12.1.0.0 High VERSION_COUNT for SQL with binds, including recursive dictionary SQL
10204505 12.1.0.0 SGA autotune can cause row cache misses, library cache reloads and parsing
9530750 12.1.0.0 High waits for ‘library cache: mutex X’ for cursor Build lock
NB Bug Fixed Description
10195109 12.1.0.0 ORA-4030 during datapump metadata export
9791589 12.1.0.0 Data Pump export hang / uses excessive memory with many “WITH GRANT OPTION” grants – superceded
NB Bug Fixed Description
10154951 12.1.0.0 Dump (evaopn3) from select with view, NVL, and function based index

 

目前 11.2.0.3 Patchset的known issues已知问题信息尚不完善,本post会对11.2.0.3补丁集的信息做持续追踪。

沪ICP备14014813号-2

沪公网安备 31010802001379号