ora-04031错误解决方法及详细分析(转载)
对于大多数应用来说,共享池的大小对于Oracle 性能来说都是很重要的。共享池中保存数据字典高速缓冲和完全解析或编译的的PL/SQL 块和SQL 语句。 当我们在共享池中试图分配大片的连续内存失败的时候,Oracle首先刷新池中当前没使用的所有对象,使空闲内存块合并。如果仍然没有足够大单个的大块内存满足请求,就会产生ORA-04031 错误。 [@more@] 对于大多数应用来说,共享池的大小对于Oracle 性能来说都是很重要的。共享池中保存数据字典高速缓冲和完全解析或编译的的PL/SQL 块和SQL 语句。 当我们在共享池中试图分配大片
oracle性能调整 (二)
Oracle 数据库广泛应用在社会的各个领域,特别是在Client/Server模式的应用,但是应用开发者往往碰到整个系统的性能随着数据量的增大显著下降的问题,为了解决这个问题,从以下几个方面:数据库服务器、网络I/O、应用程序等对整个系统加以调整,充分发挥Oracle的效能,提高整个系统的性能。[@more@]Oracle 数据库广泛应用在社会的各个领域,特别是在Client/Server模式的应用,但是应用开发者往往碰到整个系统的性能随着数据量的增大显著下降的问题,为了解决这个问题,从以下几个方面:数据库服务器、网络I/O、应用程序等对整个系统加以调
ORACLE诊断事件
一、Event的通常格式及分类 1、 通常格式如下: EVENT="<事件名称><动作><跟踪项目><范围限定>" 2、 Event分类 诊断事件大体上可以分为四类: a. 转储类事件:它们主要用于转储Oracle的一些结构,例如转储一下控制文件、数据文件头等内容。 b. 捕捉类事件:它们用于捕捉一些Error事件的发生,例如捕捉一下ORA-04031发生时一些Rdbms信息,以判断是Bug还是其它原因引起的这方面的问题。 c. 改变执行途径类事件:它们用于改主一些Oracle内部代码的执行途径,例如设置1026
Latch free等待事件(四)
尽量减每个块中的记录数。首先需要dump一些数据块来分析现在每个块中的记录数。Dump出来的跟踪文件中,nrow就是块中的记录总数。然后exp表,再truncate表,在表中插入你想要在每个块中保存的条数的记录,然后使用alter table table_name minimize records_per_block,再truncate表,最后imp回数据即可。 n 可以考虑减少块的大小。从oracle9i开始,数据库可以支持不同的块大小。例如当前块大小为16k,你可以将表及其索引移动块大小为8k的表空间中。这也会对全表扫描造成负面影响。并且,多个块大小也会使得管理更复杂。[@more@]尽量减每个块
Latch free等待事件(三)
Oracle 10g 操作系统solaris Db_cache_size32m64m128m256m512m1024m2048m_ksmg_granule_size4m4m4m4m4m16m16m_db_block_buffers39767952159043180863616127232254464_db_block_hash_buckets8192163843276865536131072262144524288_db_block_hash_latches1024102410241024102410242048Oracle9i 操作系统solaris[@more@]Oracle 10g 操作系统solaris Db_cache_size32m64m128m256m512m1024m2048m_ksmg_granule_size4m4m4m4m4m16m16m_db_block_buffers39767952159043180863616127232254464_db_block_hash_buckets81921638432768655361310722621
Latch free等待事件(二)
Latch产生的原因,诊断以及对策Latch争用通常意味这某个进程持有latch的时间过长。如果latch争用明显,系统性能将显著下降。在高并发的环境中,latch争用经常发生,并且你无法完全消除latch争用。在v$system_event中总会出现latch free等待事件。只有当time_waited相对实例启动以来的总时间比较明显时,你才需要关注latch争用。当latch在系统范围内的等待时间比较显著时,你可以通过v$latch中的sleeps列来发现争用显著的latch:[@more@]Latch产生的原因,诊断以及对策Latch争用通常意味这某个进程持有latch的时间过长。如果latch争用明显,
Latch free等待事件(一)
Latch free等待事件的三个参数:p1-latch的地址;p2-latch编号;p3-请求次数。从oracle10g起,latch free不再包含所有的latch等待,有些latch等待可能表现为单独的等待事件,这个后面有提到一些这样的等待事件,一般情况下我们还是统称为latch free等待事件。在处理latch free等待事件时,需要注意以下几点:[@more@]Latch free等待事件的三个参数:p1-latch的地址;p2-latch编号;p3-请求次数。从oracle10g起,latch free不再包含所有的latch等待,有些latch等待可能表现为单独的等待事件,这个后面有提到一些这样的等待事件,一般
Oracle常见等待事件
Oracle的等待事件是衡量Oracle运行状况的重要依据及指标。等待事件的概念是在Oracle7.0.1.2中引入的,大致有100个等待事件。在Oracle 8.0中这个数目增加到了大约150个,在Oracle8i中大约有200个事件,在Oracle9i中大约有360个等待事件。主要有两种类别的等待事件,即空闲(idle)等待事件和非空闲(non-idle)等待事件。[@more@]Oracle的等待事件是衡量Oracle运行状况的重要依据及指标。等待事件的概念是在Oracle7.0.1.2中引入的,大致有100个等待事件。在Oracle 8.0中这个数目增加到了大约150个,在Oracle8i中大约有200个事件,在Oracle9i中大约
调整缓冲区高速缓存(Buffer Cache)的性能
调整缓冲区高速缓存(Buffer Cache)的性能 Buffer cache由数据块组成。 1. Buffer cache的工作原理 LRU列表:MRU ………………. LRU。(全表扫描FTS放在LRU端。) 缓冲区块的状态:Free、Pinned、Clean、Dirty。 Dirty List或Write List(写列表)。 数据库写进程DBW0将缓冲区高速缓存中的数据写到数据文件中。 [@more@]调整缓冲区高速缓存(Buffer Cache)的性能 Buffer cache由数据块组成。 1. Buffer cache的工作原理 LRU列表:MRU ………………. LRU。(全表扫描FTS放在
Oracle数据类型简介
一、概述 在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。[@more@]一、概述 在ORACLE8中定义了:标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。 二、标量(SCALAR) 合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。 数字,它有三种基本类型--NUMBER、PLS_INTEGER和BINARY_INTENER。NUMBER可以描述整数或实数,而
在sqlplus中操作blob和clob
create directory utllobdir as 'd:'create table blobtest(col1 BLOB);create table clobtest(col1 cLOB);--insert BLOBdeclarea_blob BLOB;bfile_name BFILE := BFILENAME('UTLLOBDIR','teslob.doc');begininsert into blobtest values (empty_blob())returning col1 into a_blob;dbms_lob.fileopen(bfile_name);dbms_lob.loadfromfile(a_blob, bfile_name, dbms_lob.getlength(bfile_name));dbms_lob.fileclose(bfile_name);commit;end;[@more@]create directory utllobdir as 'd:'create table blobtest(col1 BLOB);create table clob
在Oracle数据库10g中跟踪SQL
在具有许多活跃用户的繁忙生产环境中,跟踪SQL会话是费时且十分复杂的,因为在任何使用连接池的多层系统中处理SQL语句可能要涉及多个进程,或者甚至是不同的实例。 利用Oracle数据库10g,Oralce通过一个新的内置软件包DBMS_MONITOR合理化了SQL的跟踪,这个软件包中包含以前无书面记载的跟踪工具(如DBMS_SUPPORT软件包)的功能。现在,您可以轻松地从头到尾--从客户机到中间层再到后端--跟踪任何用户的会话,并且基于特定的客户ID、模块或动作生成跟踪文件。 [@more@]在具有许多活跃用户的繁忙生产环境中,跟踪SQL会话是费时且十分复杂的,
使用SQL_TRACE进行数据库诊断
SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。本文就SQL_TRACE的使用作简单探讨,并通过具体案例对sql_trace的使用进行说明.[@more@]SQL_TRACE是Oracle提供的用于进行SQL跟踪的手段,是强有力的辅助诊断工具.在日常的数据库问题诊断和解决中,SQL_TRACE是非常常用的方法。本文就SQL_TRACE的使用作简单探讨,并通过具体案例对sql_trace的使用进行说明.一、 基础介绍(a) SQL_TRACE说明SQL_TRACE可以作为初始化参数在全局启用,也可以通过命令行方式在
ORACLE柱状图与执行计划
本文从不绑定变量与绑定变量两种情况讨论柱状图的作用。一、不绑定变量的情况:考虑以下数据SQL> select owner,count(1) from th group by owner;OWNER COUNT(1)------------------------------ ----------SUK 1SYS 36216SYSTEM 1其中,在表的OWENR上建立有一个索引[@more@]本文从不绑定变量与绑定变量两种情况讨论柱状图的作用。一、不绑定变量的情况:考虑以下数据SQL> select owner,count(1) from th group by owner;OWNER COUNT(1)------------------------------ ----------SUK 1SYS 36216SYSTEM 1其中,在表的OWENR上建立有一
Oracle 10g(10.1.0.2)中的OPTIMIZER_INDEX_COST_ADJ
Tom Kyte的新书Effective Oracle by Design的第6章 Getting the Most Out of the Cost-Based Optimizer中介绍了参数OPTIMIZER_INDEX_COST_ADJ,并认为可以理解为Oracle执行多块(MultiBlock)I/O(比如全表扫描)的代价与执行单块(Single-block)I/O代价的相对比例。Tom指出,9i下该参数缺省值为100,意即二者拥有相同的代价,若减小,则CBO倾向于使用索引(即单块I/O),反之则倾向于全表扫描(多块I/O)。Tom同样给出了一个不错的例子。在自己的手提上试验了一下,硬盘大小原因,只装了一个Oracle 10g(10.1.0.2),谁知就发现该参数在10
OPTIMIZER_INDEX_COST_ADJ与成本计算
OPTIMIZER_INDEX_COST_ADJ这个初始化参数代表一个百分比,取值范围在1到10000之间.该参数表示索引扫描和全表扫描成本的比较。缺省值100表示索引扫描成本等价转换与全表扫描成本。[@more@]OPTIMIZER_INDEX_COST_ADJ这个初始化参数代表一个百分比,取值范围在1到10000之间.该参数表示索引扫描和全表扫描成本的比较。缺省值100表示索引扫描成本等价转换与全表扫描成本。这些参数对于CBO的执行具有重大影响,其缺省值对于数据库来说通常需要调整。一般来说对于OPTIMIZER_INDEX_CACHING可以设置为90左右对于大多数OLTP系统,OPTIMIZER_INDEX_COST
oracle cache table
The KEEP buffer pool retains the schema object’s data blocks in memory. The RECYCLE buffer pool eliminates data blocks from memory as soon as theyare no longer needed. The DEFAULT buffer pool contains data blocks from schema objects that are notassigned to any buffer pool, as well as schema objects that are explicitlyassigned to the DEFAULT pool.The initialization parameters that configure the KEEP and RECYCLE buffer pools areDB_KEEP_CACHE_SIZE and DB_RECYCLE_CACHE_SIZE.[@more@] The KEEP buf
library cache pin
概述 造成数据库性能下降或挂起的原因很多,”library cache pin”等待是其中之一.当数据库性能严重下降或挂起时,我们通过查询v$session_wait,发现大量的”library cache pin”等待,查询的SQL语句如下: [@more@]概述 造成数据库性能下降或挂起的原因很多,”library cache pin”等待是其中之一.当数据库性能严重下降或挂起时,我们通过查询v$session_wait,发现大量的”library cache pin”等待,查询的SQL语句如下: #su - oracle$svrmgrlsvrmgr>connect internalsvrmgr>select sid,event,p1,p2,p3 from v$session_wait where wait_time=
oracle创建分区表
在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。 以system身份登陆数据库,查看 v$option视图,如果其中Partition为TRUE,则支持分区功能;否则不支持。Partition有基于范围、哈希、综和三种类型。我们用的比较多的是按范围分区的表。[@more@]在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。 以system身份登陆数据库,查看 v$option视图,如果其中Partition为TRUE,则支持分区功能;否则不支持。Partition有基于范围、哈希、综和三种类型。我们用的比较多的是按范围分区的表。
vmstat 命令的应用
# man vmstat 得到帮助 # vmstat 2 10 r-->在运行队列中等待的进程数 b-->在等待io的进程数 w-->可以进入运行队列但被替换的进程 memoy swap-->现时可用的交换内存(k表示) free-->空闲的内存(k表示) pages re--》回收的页面 mf--》非严重错误的页面 pi--》进入页面数(k表示) po--》出页面数(k表示) fr--》空余的页面数(k表示) de--》提前读入的页面中的未命中数 sr--》通过时钟算法扫描的页面 disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号 fault 显示每秒的中断数 in--》设备中断 sy--》