Oracle Freelist和HWM原理探讨及相关性能优化(1)
近期来,FreeList的重要作用逐渐为Oracle DBA所认识,网上也出现一些相关的讨论。本文以FreeList为线索对Oracle的存储管理的原理进行较深入的探讨,涉及Oracle段区块管理的原理,FreeList算法等。而与FreeList密切相关的一个重用特性HWM,与sql性能密切相关,本文也作了原理分析介绍。在原理探讨的基础上,介绍了常用的存储参数分析方法,并对所涉及的存储优化、HWM的优化和Freelist竞争优化作了说明。缩略语:ASSM:auto segement space managementHWM:high water markDBA:data block addressOLTP:online transaction processOPS:ora
oracle tune
1. Course Intraduction 02. Tuning overview 1(1) 调整的先后次序1. Tune the design. -- Application designers2. Tune the application. -- Application developers3. Tune memory. --|4. Tune I/O. |-- DBA5. Tune contention. |6. Tune the operating system. --|(2) 调整的基点和主要的可测量的目标Database hit percentages 命中率是base lineSQL statements access the smallest possible number of Oracle blocks 访问尽可能少的数据块response time, database availability, memory utilization(页面交换)等3. Oracle Alert and
Oracle数据库联机日志文件丢失处理方法(5)
试验五:丢失当前日志组的成员1、SQL>; select * from v$logfile;GROUP# STATUS TYPE---------- ------- -------MEMBER--------------------------------------------------------------------------------3 ONLINE /T3/ORACLE/oradata/ORA9/redo03.log2 ONLINE /T3/ORACLE/oradata/ORA9/redo02.log1 ONLINE /T3/ORACLE/oradata/ORA9/redo01.logGROUP# STATUS TYPE---------- ------- -------MEMBER--------------------------------------------------------------------------------1 ONLINE /T3/ORACLE/oradata/ORA9/redo01a.log2
Oracle数据库联机日志文件丢失处理方法(4)
方法四:修改系统参数方法1、 插入数据SQL>; select * from test;TEL----------1 2 3 4SQL>; insert into test values(5);1 row created.SQL>; commit;Commit complete.SQL>;2、 强行关闭SQL>; shutdown abort ORACLE instance shut down.SQL>;3、 手工模拟删除redo4、 启动dbSQL>; startup ORACLE instance started.Total System Global Area 353862792 bytesFixed Size 730248 bytesVariable Size 285212672 bytesDatabase Buffers 67108864 bytesRedo Buffers 811008 bytes Database mounted.ORA- 00
Oracle数据库联机日志文件丢失处理方法(2)
方法二:用cancel模式恢复数据库 前面的出错提示,步骤都一样,唯独恢复的方法不一样SQL>; startupORACLE instance started.Total System Global Area 353862792 bytesFixed Size 730248 bytesVariable Size 285212672 bytesDatabase Buffers 67108864 bytesRedo Buffers 811008 bytes Database mounted.ORA- 00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'看看丢失了哪些redoSQL> host ls /T3/ORACLE/oradarta/ORA9/redo* /T3/ORACLE/o
Oracle数据库联机日志文件丢失处理方法(3)
实验三:通过重新生成控制文件来恢复redo 前面的都一样,只是处理方法不一样SQL>; startup ORACLE instance started.Total System Global Area 353862792 bytesFixed Size 730248 bytesVariable Size 285212672 bytesDatabase Buffers 67108864 bytesRedo Buffers 811008 bytes Database mounted.ORA- 00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'SQL>; alter database backup controlfile to trace;Database altered.SQL>; shu
Oracle数据库联机日志文件丢失处理方法(1)
试验一:用命令清空日志组方法 1、查看原来表中数据SQL>; conn test/test Connected. SQL>; select * from test;TEL----------1 2 3 2、插入新数据SQL>; insert into test values(4);1 row created.SQL>; commit;Commit complete.SQL>3、 正常关闭数据库4、 利用os command删除所有redo文件5、 启动数据库SQL>; startupORACLE instance started.Total System Global Area 353862792 bytesFixed Size 730248 bytesVariable Size 285212672 bytesDatabase Buffers 67108864 bytesRedo Buffers 811008 bytesDat
Oracle内存结构(二)----Shared Pool的详细信息
The Shared Pool The Shared Pool在SGA中是SIZE较大的一个部分.有很多DBA没搞明白Shared Pool是用来做什么的,不知道怎么定Shared Pool的合适的SIZE.就随意的将它的SIZE搞得很大.有时候可能是不够大,但更多的时候是在浪费内存空间.而且太大的Shared Pool会影响性能. 块(Chunk):要更好的理解Shared Pool,得对X$KSMSP表多做点研究.这个表中的每一个记录行对应的是Shared Pool内存中的一个Chunk(块).SQL> select ksmchcom, ksmchcls, ksmchsiz from x$ksmsp;KSMCHCOM KSMCHCLS KSMCHSIZ---------------- -------- ----------K
Oracle内存结构(一)----SGA的区域信息
SGA(system global area)系统全局区跟一些必须的后台进程合进来称为实例(Instance).说它是全局区是包含了全局变量和数据结构,是系统区是包含了进入整个Oracle Instance的数据结构而不是特定的进程结构.SGA区域:SGA大概包括下面四到五种区域:The fixed areaThe variable areaThe database blocks areaThe log bufferThe instance lock database(for parallel server instances)----OPS&RAC根据内存的大小,我们可以把The fixed area和The log buffer设为很小.The fixed area:SGA 中的The fixed area包含了数千个原子变量,以及如latches和
Oracle内存结构(三)----Process Memory的详细信息
The Process Memory:除了SGA(System Global Area)之外,Oracle进程还使用下面三个全局区:The Process Global Area (PGA)The User Global Area (UGA)The Call Global Area (CGA) 很多人都搞不清楚PGA和UGA两者之间的区别,实际上两者之间的区别跟一个进程和一个会话之间的区别是类似的.尽管说进程和会话之间一般都是一对一的关 系,但实际上比这个更复杂.一个很明显的情况是MTS配置,会话往往会比进程多得多.在这种配置下,每一个进程会有一个PGA,每一个会话会有一个 UGA.PGA所包含的信息跟会话是无任何关联的,而UGA包含的信息是以特定的
redo buffer
~~~~~~~~~~~~~~~~~~~~~~~~ 发生写日志文件的条件~~~~~~~~~~~~~~~~~~~~~~~~1.Commit2.log Buffer is 1/3 full3.Checkpoint4.1 Meg of data in log buffer5.DBWR writes6.3秒钟跟你redo生成的频率,和redo相关的latch相关可以查看latch命中率看是不是分配latch有瓶径redo entries --在log buffer中总的请求次数redo log space requests --在log buffer中的所有请求次数中等待的次数 select (req.value*5000)/entries.value "Ratio" from v$sysstat req, v$sysstat entries where req.name = 'redo log space requests' and entrie
oracle联机热备份的原理(2)
附:有兴趣的可以看看dump的数据块通过下面的查询找一个表对应的数据块SQL>; select file_id,block_id,blocks2 from dba_extents3 where segment_name='EMPLOYEES';FILE_ID BLOCK_ID BLOCKS---------- ---------- ----------5 81 8dump一个块到udump的trc文件SQL>; alter system dump datafile 5 block 81;System altered.在udump目录找到对应的trc文件,找到dump那段Start dump data blocks tsn: 6 file#: 5 minblk 81 maxblk 81buffer tsn: 6 rdba: 0x01400051 (5/81)scn: 0x0000.00086c4d seq: 0x01 flg: 0x04 tail: 0x4b502001后
Oracle 10g大文件表空间
简单介绍Oracle 10g 的存储能力有了显著的增强。这表现在很多方面,下面介绍 10g 新增的表空间类型:大文件 (Bigfile) 表空间。 大文件表空间从某种角度来说提高了 Oracle 在 VLDB 上的管理能力。 只有自动段空间管理的 LMT (Locally Managed Tablespaces ) 支持 BIGFILE 表空间。 大文件表空间只能包含一个文件,但是文件可以达到 4G 个数据块大小。(以下用 BFT 指代 BIGFILE Tablespace。)BFT 可以和以下存储技术结合使用:自动存储管理(ASM) LVM OMF理论上的 BFT 可以达到下面所列的值:数据块大小(单位:K)BFT 最大值(单位:T)2k8T4k1
oracle联机热备份的原理(1)
要求归档模式SQL>; archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 14Next log sequence to archive 16Current log sequence 16-------------先看用户管理的热备份看看下面这个关键的操作,将备份的内容置于backup模式,用户管理的联机热备份必需的操作,不然copy备份的数据文件不能用来恢复,即使用某些放时恢复了也会丢数据SQL>; alter tablespace users begin backup;Tablespace altered.SQL>; list1 select d.file_na
Redo Byte Address (RBA)
Recent entries in the redo thread of an Oracle instance are addressed using a 3-part redo byte address, or RBA. An RBA is comprised of * the log file sequence number (4 bytes) * the log file block number (4 bytes) * the byte offset into the block at which the redo record starts (2 bytes) RBAs are not necessarily unique within their thread, because the log file sequence number may be reset to 1 in all threads if a database is opened with the RESETLOGS option.RBAs are used in the followin
V$SQL_BIND_CAPTURE
As of Oracle 10g, view V$SQL_BIND_CAPTURE is available, which stores the contents of bind variables for the executed SQL statements. On this basis, the bind variable contents specified for an SQL statement can be determined with the following query:SELECT SUBSTR(SBC.NAME, 1, 10) BIND, SUBSTR(SBC.VALUE_STRING, 1, 50) VALUE, COUNT(*) "NUMBER"FROM V$SQL_BIND_CAPTURE SBC, V$SQL SWHERE S.SQL_TEXT LIKE '' AND S.SQL_ID = SBC.SQL_IDGROUP BY NAME, VALUE_STRINGORDER BY 1, 2;The bind variab
Oracle Package返回游标 和 java调用
创建测试oracle包:create or replace package pkg_test astype t_ref is ref cursor;procedure p_test(cur_ref out t_ref);end pkg_test;/create or replace package body pkg_test asprocedure p_test(cur_ref out t_ref) isbeginopen cur_ref for 'select * from test';end p_test;end pkg_test;/下面是jdbc代码的调用。当然如果采用jdbc直接获得Connection下面的代码是没问题的。oracle.jdbc.OracleCallableStatement cs = null;String sqlStr = "{call firstpage.getSeniorHighSchool(?,?,?)}";ResultSet rs = null;try{cs
latch
什么是latch?latch是一种低级别的序列化的内存锁,用于保护SGA中的共享内存结构.(1)确保内核代码序列执行;(2)防止因缓存区崩溃导致的物理块的坏块任何内核代码在执行前,必须获取latch,执行完后释放latch.latch通常通过两种方式来获取:immediate和willing to wait.当进程以immeidate方式请求latch失败时,控制权将转会到进程并产生一次immediate miss;当进程以willing to wait方式请求latch时将以”spinning and sleeping”的循环方式重复请求获取latch,spin一次如果仍然不能得到latch则sleep一定间隔(间隔时间成指数级增长)直至获得 latch或
Oracle Advanced Performance Tuning Scripts
Library Cache Scriptskeeper.sqlMarking objects for keeping in the library cache is vital to library cache and shared pool performance. This script is intended to be run regularly from cron to automate keeping. It follows our "keep everything that moves" philosophy. It keeps all in-use keep-able database objects. It also keeps some often reused cursors early in the life of the instance, while more than 20% of the shared pool body is still reserved in permanent memory. It is smart
Oracle的硬解析和软解析
说到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程: 1、语法检查(syntax check) 检查此sql的拼写是否语法。 2、语义检查(semantic check) 诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。 3、对sql语句进行解析(prase) 利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。 4、执行sql,返回结果(execute and return) 其中,软、硬解