一、单进程的B-Tree索引的分裂 1. 创建测试表 SQL> create table alex_tab (id number, name varchar2(100)); 表已创建。 SQL> alter table alex_tab add constraint pk_alex_tab primary key (id) using index; 表已更改。 SQL> create sequen […]

一、log file sync等待的原因 1. commit等待太久 (1)用户commit:v$sesstat视图的统计数据; (2)DDL操作:递归事务提交; (3)数据字典的递归DML操作。 2. rollback等待太久 (1)用户回滚:用户提交ROLLBACK命令 (2)事务回滚:内部回滚、空间的分配(ASSM问题)、事务中断、kill session。 二、commit与log fil […]

1. 问题背景: 一个Oracle数据库从HP-UX平台迁移到Solaris平台,由于数据库高并发写入的压力较大,导致LGWR进程写redo log过慢,需要分析研究一下优化方案。 HP-UX:redo log卷开启Direct IO; Solaris:redo log卷开启Direct IO,系统和数据库均开始AIO。 2. 对比一下HP-UX与Solaris平台的LGWR写入性能。 (1)测试 […]

1. 目标表NTL,经过分析后,数据发生行迁移的比例为17%,表和索引的如下表: —————————————————————————————————– | 原始 | 索引重建后 | —————————————— […]

1、统计分析脚本: 在数据库创建函数REAL_SIZE,用以分析统计归档源表的实际大小,即除去HWM下空洞后的真实大小,函数创建脚本如下: CREATE OR REPLACE FUNCTION REAL_SIZE(P_SEGNAME IN VARCHAR2, P_OWNER IN VARCHAR2 DEFAULT USER, P_TYPE IN VARCHAR2 DEFAULT ‘TABLE’) […]

一、Cursor: pin S问题介绍 1、问题背景 数据库主机CPU严重的冲了一下100%,瞬间又回落,导致DB响应变慢,大量应用连接timeout。在AWR报告中,看到较高的Cursor: Pin S等待,这是一个由于频繁执行SQL共享解析时产生的竞争。 这通常是由于某些SQL以超高频繁的频率执行导致的,当然也可能与系统的CPU能力不足有关。 2、解决原理 Mutex机制在Oracle 10g […]

一、高并发操作对B-Tree索引的影响 1. 创建测试表 — Create table drop table alex_t06 purge; create table alex_t06 (col1 number, name varchar2(100)); drop sequence alex_t06_seq_col1; create sequence alex_t06_seq_col1 minv […]

1. 创建测试表 — Create table drop table alex_t05 purge; create table alex_t05 (col1 number, name varchar2(100)); drop sequence alex_t05_seq_col1; create sequence alex_t05_seq_col1 minvalue 1 maxvalue 9999 […]

1. 创建测试表和两个复合索引,idx_alex_t04_ab前导列区分度低,idx_alex_t04_cd前导列区分度高。 — Create table drop table alex_t04 purge; create table alex_t04 (id number, a number, b number, c number, d number, name varchar2(100)); […]

设计两个方案,表结构、数据量、数据分布、索引情况、统计信息等都一样,只有数据入库的顺序不一样,如下: 方案一说明:插入测试表的数据顺序为“111…111222…222333…333…” 方案二说明:插入测试表的数据顺序为“123…123…123…123…” 方案一: 1. 创建测试表 — Create […]

切换到手机版