一道面试题引出的系列数据库性能,数据安全问题及解决方案 Posted by eygle at 2018-08-27 【内容摘要】请问以下SQL有什么可能的逻辑问题、语法问题、性能问题,可以怎样进行索引优化、逻辑优化以提升性能?
揭秘Oracle 11.2.0.4前版本DB Link必须在2019年4月前升级 Posted by eygle at 2018-03-15 【内容摘要】Oracle 引入了一个:Auto-RollOver 的特性,也就是说Oracle 为不同 SCN 的增长率设定了时间,自动过期,随着时间推移,用户会不知不觉的过度到新的 SCN 算法上来。
Oracle中如何获取给定SQL的SQL_ID - dbms_sqltune_util0 Posted by eygle at 2017-08-07 【内容摘要】在 Oracle 数据库中,如何得到给定SQL的 SQL_ID ? 这是曾经被广泛讨论的一个问题。现在,在Oracle 11g中,Oracle 给出了一个系统包,通过 dbms_sqltune_util0 可以简便的计算出给定SQL的SQL_ID。
如何转储数据文件和Buffer Cache中的数据块 Posted by eygle at 2017-04-07 【内容摘要】在《Oracle性能优化与诊断案例精选》一书中有一个测试案例,读者提出异议,我做了一个更详细的测试供读者参考。书中内容并无问题,但是过程省略了一些细节,导致读者的困惑,作为主编,我要表示歉意。
ORA-600 2252 错误与SCN的一致性 Posted by eygle at 2012-05-23 【内容摘要】当数据库系统的时间被调整,回到历史状态时,数据库可能出现ORA-600 2252错误。
这个错误指,数据库的SCN被认为是错误和不合理的,Oracle内部控制每秒产生的SCN数量小于 16K 个,然后以1988年1月1日,0点0分0秒开始,可以计算出一个SCN可能的合理最大值。
Oracle安全 - SCN的可能最大值与耗尽问题 Posted by eygle at 2012-05-17 【内容摘要】在2012年第一季度的CPU补丁中,包含了一个关于SCN修正的重要变更,这个补丁提示,在异常情况下,Oracle的SCN可能出现异常增长,使得数据库的一切事务停止,由于SCN不能后退,所以数据库必须重建,才能够重用。
关于Freelists和Freelist Groups的研究 Posted by eygle at 2011-11-24 【内容摘要】如果为了避免freelists争用,而增加freelist group,确实可以减少Buffer Busy Waits事件,也会减少所有类别的block上的等待(从V$WAITSTAT视图中可以得知),但是却会增加HW Enqueu的等待事件。
因为一个进程使用了一个freelist group之后,即使其它的freelist group中有大量的空闲空间(比如一个进程刚刚删除了大量的数据,从而在自己的TFL上腾出了很多空闲块),这个进程也不会去检索。所以如果这个进程正好需要insert大量数据,那么就很可能会提升HWM,也就会放置HW enqueue,那么如果还有其它的进程也需要insert数据,就不可避免地经历HW enqueue等待。正是由于多个freelist group使提升HWM的几率变大,所以也就会导致HW Enqueu等待事件的增多
Oracle KKS 层-Kernel Kompile Shared (cursors) Posted by eygle at 2011-06-01 【内容摘要】在很多错误信息或提示中,总能看到KKS的身影,可是没有文档表明其具体含义。
我在这里整理收集一下能够读到的文档信息:
KKS层的代码管理是 kks.c 文件,其含义为Kernel Kompile Shared (cursors).
DBA手记:共享池的改进与ORA-04031的变化 Posted by eygle at 2011-02-28 【内容摘要】我们知道,从Oracle 9i开始,Shared Pool可以被分割为多个子缓冲池(SubPool)进行管理,以提高并发性,减少竞争。
Shared Pool的每个SubPool可以被看作是一个Mini Shared Pool,拥有自己独立的Free List、内存结构以及LRU List。同时Oracle提供多个Latch对各个子缓冲池进行管理,从而避免单个Latch的竞争(Shared Pool Reserved Area同样进行分割管理)。SubPool最多可以有7个,Shared Pool Latch也从原来的一个增加到现在的7个。如果系统有4个或4个以上的CPU,并且SHARED_POOL_SIZE大于250MB,Oracle可以把Shared Pool分割为多个子缓冲池(SubPool)进行管理,在Oracle 9i中,每个SubPool至少为128MB。
DBA手记:Cache-Low RBA与On-Disk RBA的恢复 Posted by eygle at 2011-02-24 【内容摘要】在最近(2010年9月6日)的一次培训中,有位朋友问起上节案例,该如何证明和验证Oracle介于Cache-Low RBA和On-Disk RBA之间的恢复过程?我们可以通过如下的过程来做一些观察和证明。
首先执行一个建表的CTAS操作,这个操作是为了多生成一些脏块(Dirty Buffer),然后紧接着执行两次控制文件转储,两次转储是为了确认对比一下控制文件的检查点没有变化,然后紧接着执行强制关闭数据库(Abort方式),再启动数据库
DBID的获取 与 控制文件中有什么? Posted by eygle at 2010-06-29 【内容摘要】我以前写过一个文章,如何获得DBID,这个问题今天仍然有人问题,其实不管控制文件的名称里是否包含了DBID,但是,只要有了控制文件,就可以从其中获得 DBID,可以直接用二进制工具打开,读取固定的位,也可以恢复出了控制文件,通过其Mount数据库,再来查询V$视图。
ORA-00600 kcratr1_lostwrt之解决与原理分析 Posted by eygle at 2010-05-10 【内容摘要】客户的一个数据库因为断电遇到了ORA-600 kcratr1_lostwrt错误,数据库无法启动。
错误信息类似:
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kcratr1_lostwrt], [], [], [], [], [], [], []
Current SQL statement for this session:
alter database open
这个错误不难解决,但是其具体成因有点意思
kcbgtcr 错误小记 Posted by eygle at 2010-03-04 【内容摘要】kcbgtcr 是Oracle数据库最重要的函数之一,其含义为:Kernal Cache Buffer GeT Cosistents Read,也就是数据库的一致性读操作,后面的代码有很多种,代表在不同的层面上出现问题。
Metalink 的 Note 415773.1 - Diagnostics and Solutions for kcbgtcr() Related Internal Errors记录了与此相关的很多问题。
SMON: recover undo segment与事务恢复 Posted by eygle at 2010-02-23 【内容摘要】在一些系统异常之后,尤其是一场Down机之后,数据库里可能会看到类似如下的提示信息:
SMON: about to recover undo segment 23
SMON: mark undo segment 23 as available
这些信息意味着,数据库需要这些回滚段的信息去恢复一些未完成事务,多数情况下,这些事务都能够得到恢复,但是如果不幸,在异常宕机时丢失了部分 Write操作,则可能无法完成恢复,出现灾难。
Cache-low rba 与 on-disk rba - 恢复笔记 Posted by eygle at 2010-02-12 【内容摘要】我们都知道在恢复过程中,Cache-Low RBA和On-Disk RBA主导了恢复过程,Oracle的恢复从上一次成功的写出开始,也就是以Cache-Low RBA为起点,恢复至日志的最后成功记录,也就是以On-Disk RBA为终点。
工具: ass109.awk 分析 Oracle 的跟踪文件 Posted by eygle at 2009-11-19 【内容摘要】以前分析Oracle的跟踪文件,主要靠手工阅读,最近发现ass109.awk文件是个不错的工具,在网上找到了一个,附在这里: ass109.rar
Oracle EXP/IMP与临时对象的管理方式 Posted by eygle at 2009-04-22 【内容摘要】今天做了一整天的数据导入工作,有一点点收获就是,清晰的看到了导入时临时对象的生成。
这是一个Oracle9iR2的环境,在漫长的导入过程中,系统中可以看到大量这样的临时对象,在对象创建完成之后,对象的临时属性被更改为固定.
Oracle HowTo:判断一个死事务的恢复进度 Posted by eygle at 2007-09-11 【内容摘要】由于死事务已经无法通过v$transaction来观察,所以必须通过内部表来进行判断。
这个内部表是x$ktuxe,该表会记录Dead事务的恢复进度
关于Shared Pool探索的补充之一 Posted by eygle at 2007-09-07 【内容摘要】在x$ksmsp.ksmchcls的分类中,还有两外几个分类,这几个分类是R-free/R-freea/R-perm
v$sql视图buffer_gets统计溢出为负数的现象 Posted by eygle at 2007-08-22 【内容摘要】但是最终Oracle不认为这是一个Bug,因为即使底层表x$kglob的相关值定义从KQFCINT() 变更位 KQFCUIN()。也只不过将这个限制扩大了一倍而已,这个限制早晚还会被达到。
Oracle ASSM三级位图块结构 Posted by eygle at 2007-07-04 【内容摘要】我认为BMB的结构应该是均衡的,同时段头的PAGETABLE SEGMENT HEADER同时充当了第0个3级位图块的角色。
Oracle10g的current_scn是如何计算的? Posted by eygle at 2007-06-21 【内容摘要】也就是说你不查询就不知道current_scn的值,你查询它就变化,是不是有点向薛定谔的猫的那种感觉?
关于Oracle归档进程的运行机制 Posted by eygle at 2007-06-11 【内容摘要】真理是需要不断摸索才能发现的。
关于Oracle归档进程的运行机制 Posted by eygle at 2007-06-06 【内容摘要】归档进程的数量是受初始化参数log_archive_max_processes控制,初始的,这个参数设置为2,Oracle启动两个归档进程
Oracle中独一无二的Cache对象 Posted by eygle at 2007-04-19 【内容摘要】这个root dba指向了1.417对象,而1.417对象的上一个对象正是bootstrap$,Oracle通过1.417找到了bootstrap$对象就可以启动了数据库。
LGWR与AIX上的进程优先级 Posted by eygle at 2007-03-31 【内容摘要】最显著的等待是LOG FILE SYNC,最终发现问题出在LGWR进程,由于该进程活动过于频繁,该进程在系统上的nice值被调至68,AIX上缺省进程nice值为60,nice值越高表示优先级越低。
Oracle与Linux/Unix下的时间处理 Posted by eygle at 2007-03-11 【内容摘要】在Linux/Unix上,Oracle在很多地方都从系统取得时间。
ORA-00701 warmstarting对象的另类解决方法 Posted by eygle at 2007-02-15 【内容摘要】38003事件的作用是:CBO Disable column stats for the dictionary objects in recursive SQL
也就是说可以将部分对象从启动的bootstrap$需要里剥离出来,从而可以被在线rebuild.
系统对象IDL_UB1$表的含义及作用 Posted by eygle at 2007-01-17 【内容摘要】在ITPUB上有朋友遇到SYSTEM表空间快速扩展的问题,经过如下代码查询,可以找出系统表空间中占用空间最多的Top9对象
DB link与检查点(checkpoint)和SCN Posted by eygle at 2006-11-08 【内容摘要】这种机制其实是为了满足分布式事务(Distributed Transaction)的需要,只不过这里通过db link被触发。
UTL_INADDR包获取ip地址的内部原理 Posted by eygle at 2006-10-26 【内容摘要】首先获取域名解析服务器,在根据host.conf文件确定解析顺序,因为缺省hosts文件优先,又继续读取/etc/hosts文件。
如果hosts文件存在解析关系,则返回信息;如果不存在,则继续问询DNS服务器,获得解析地址,如果不能解析,则会出错:
sql.bsq与数据库的创建 Posted by eygle at 2006-08-23 【内容摘要】如果我们使用脚本创建数据库,那么最先运行的是一个叫做CreateDB.sql的脚本。
这个脚本发出CREATE DATABASE的命令,具体类似如下的例子:
备份的控制文件和新的数据文件 Posted by eygle at 2006-08-11 【内容摘要】我们可以想象,如果控制文件是从备份中恢复的,那么数据库在open过程中又将如何呢?
关于控制文件与数据文件头信息的说明 Posted by eygle at 2006-08-11 【内容摘要】在上一讲中,我们说过:当我们使用file_hdrs事件来转储数据文件头信息时,Oracle会转储两部分信息,一部分来自控制文件,一部分来自数据文件,在数据库启动过程中,这两部分信息要用来进行启动验证。
EVENT: FILE_HDRS 的信息来源 Posted by eygle at 2006-08-10 【内容摘要】我们知道,可以通过一个内部事件来转储数据文件头信息,这个常用的命令是.....
Oracle9iR2 NF:压缩表技术 Posted by eygle at 2006-06-26 【内容摘要】从Oracle9iR2开始,Oracle推出了压缩表技术(table compression),用于压缩数据表中的重复数据,以节省存储空间,压缩技术倾向于在数据仓库中使用。
时间再次停止运行 Posted by eygle at 2006-06-16 【内容摘要】今天下班时,同事说,一个数据库上的Job进程不能启动,我登陆上去查看,果然,时间再次停止运行: SQL> select * from v$timer; HSECS----------4294967295 SQL> / HSECS----------4294967295 此前曾经遭遇这个Bug,当主机持续运行497 days 2 hrs 28 mins 时,数据库系统时间将会停止. Bug出现: $ uptime6:27pm...
Oracle热备期间的过量Redo生成控制 Posted by eygle at 2006-05-31 【内容摘要】我们都知道为了防止热备期间的分裂块问题,Oracle在热备过程中会对修改块进行全块的Redo记录. 偶然发现居然还存在一个隐含参数可以控制这个行为: SQL> SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ2 FROM SYS.x$ksppi x, SYS.x$ksppcv y3 WHERE x.inst_id = USERENV ('Instance')4...
使用10203事件跟踪Oracle块清除 Posted by eygle at 2006-04-20 【内容摘要】Oracle的10203事件可以用来跟踪数据库的块清除(cleanout)操作,从事件列表中,我们可以知道该时间的含义为:block cleanout 。 该事件需要在系统级设置,重启数据库后生效: SQL> alter system set event="10203 trace name context forever" scope=spfile; System altered. SQL> shutdown immediate;Database closed.Database...
_disable_logging如何禁用日志 Posted by eygle at 2006-04-14 【内容摘要】在非归档模式下(归档模式会导致日志损坏),使用_disable_logging可以禁止日志的生成,从而可以提高某些特殊操作(如批量加载或Benchmark测试等)的性能. 我们可以来看一下这个禁止是如何完成的. 启动2个Session,一个用于管理,一个用于测试. 1.Session 1 ,使用SYS用户连接数据库,当前_disable_logging未设置,数据库处于正常状态 $ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Fri Apr 14...
_disable_logging对于性能的影响 Posted by eygle at 2006-04-14 【内容摘要】设置了_disable_logging参数,可以禁用日志的生成,从而提高某些测试的性能. 以下测试,纯属测试目的,其他内容请参考本站其他文章: http://www.eygle.com/archives/2006/04/more_about_disable_logging.html 禁用日志情况下: SQL> connect / as sysdbaConnected.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started. Total...
隐含参数_disable_logging的几点说明 Posted by eygle at 2006-04-14 【内容摘要】在很久以前,曾经介绍过Oracle的一个内部隐含参数_disable_logging,看到有朋友论述这个参数,今天忍不住做一点补充说明. 1.当然,隐含有风险,设置请谨慎. 2.最初在9.2.0.6 Solaris版本上,设置该参数会触发Bug:3868748 使得数据库无法启动. 从警告日志中,通常可以获得的错误提示是: ORA-07445: exception encountered: core dump [kcrfwcint()+1625] [SIGFPE] [Integer divide by zero] [0x828739D] [] []...
关于自动PGA管理的进一步探讨 Posted by eygle at 2006-04-09 【内容摘要】伴随自动PGA调整新特性的引入Oracle随之引入了一系列新的视图,V$PGASTAT就是其中的一个....
临时文件file#和db_files的关系 Posted by eygle at 2006-03-28 【内容摘要】 在v$tempfile与v$sort_usage之关系解析一文中,我们注意到对于临时文件的绝对文件号(AFN),Oracle的分配规则和常规数据文件并不相同.
v$tempfile与v$sort_usage之关系解析 Posted by eygle at 2006-03-25 【内容摘要】在前面的V$TEMPSEG_USAGE与Oracle排序中我谈到V$TEMPSEG_USAGE和V$SORT_USAGE同源,其中的SEGFILE#代表的是绝对文件号(AFN).
LOB对象与临时段 Posted by eygle at 2006-03-25 【内容摘要】如果程序中使用了临时的LOB类型变量,Oracle会分配临时空间,如果并发很高,初始区很大,那么数据库可能产生严重的TEMP表空间的不足问题
V$TEMPSEG_USAGE与Oracle排序 Posted by eygle at 2006-03-24 【内容摘要】刚才Kamus说起V$TEMPSEG_USAGE这个视图,看着很眼生,我说没注意过,然后动手查一下这个东西究竟来自何方.
查询dba_objects视图,发现原来这是一个同义词。
转储日志文件头 获得日志信息 Posted by eygle at 2006-03-17 【内容摘要】我们可以通过如下命令Dump日志文件头,获得关于Redo Log File的一些重要信息:
Oracle7.3.4 Checkpoint行为研究 Posted by eygle at 2006-02-20 【内容摘要】在不同的版本中,Oracle的检查点策略一直在不断的调整优化,而从Oracle7之后,Oracle不在文档中透漏更多的信息给我们.
DBWR enhancements In Oracle10g Posted by eygle at 2006-02-07 【内容摘要】为了避免DBWR不必要的唤醒及过于活跃,从Oracle10g开始,Oracle对DBWR的SCAN间隔进行了调整.
为何而心跳-Oracle Heartbeat研究之二 Posted by eygle at 2006-01-27 【内容摘要】这说明Heartbeat并非在数据库Open状态下才会更新,也说明HeartBeat是用来维持实例的Mount状态检测.
Oracle7.3.4数据库已经启动 Posted by eygle at 2006-01-26 【内容摘要】今天调整了一下,手工建立了一个数据库,顺利启动了Oracle7的数据库
谁能帮忙提供Oracle7 For NT的版本 Posted by eygle at 2006-01-25 【内容摘要】哪位朋友还有Oracle7.3 For Nt版本的数据库,能否帮忙提供一个,急需该版本进行一些测试.
Oracle的X$表系列介绍之-X$KCCCP Posted by eygle at 2006-01-24 【内容摘要】X$KCCCP--[K]ernel [C]ache [C]ontrolfile management [c]heckpoint [p]rogress
为何而心跳-Oracle Heartbeat研究 Posted by eygle at 2006-01-19 【内容摘要】在Oracle中有一个事件叫Heartbeat,这个词在很多地方被提及,并且有着不同的含义(比如RAC中),我们这里要讨论的是CKPT的Heartbeat机制。
Oracle HowTo:如何更改数据库的SCN? Posted by eygle at 2006-01-17 【内容摘要】很多时候,我们需要调整数据库系统的SCN值,有的是为了恢复的需要,如为了解决ORA-600 2662错误.
How Big SCN can be? Posted by eygle at 2006-01-16 【内容摘要】oracle 内部使用了一个4G范围的数据来表示01/01/1988 00:00:00 ~ 08/18/2121 06:28:15 这段时间.它的算法简单,说来就是每个月都是用的31天来表示时间,每增加1秒,这个数值就增加1.
what is SMON_SCN_TIME ? Posted by eygle at 2005-12-27 【内容摘要】SMON_SCN_TIME是Oracle数据库的系统表,用以进行辅助恢复等功能。
在Oracle9iR2中,SMON_SCN_TIME每5分钟被更新一次。
Oracle HowTo:如何强制刷新Buffer Cache Posted by eygle at 2005-12-22 【内容摘要】很多时候,为了排除Cache对于测试的影响,我们常常需要手动刷新Buffer Cache,以促使Oracle重新执行物理访问。
Oracle Diag:如何处理ORA-600 2662错误 Posted by eygle at 2005-12-20 【内容摘要】在ORA-00600 2262错误解决一文中,我曾经提到过,很多时候使用隐含参数_ALLOW_RESETLOGS_CORRUPTION后resetlogs打开数据库,我们可能会由于SCN不一致而遭遇到ORA-00600 2662号错误,这里给出一个完整的例子及解决过程。
db_file_multiblock_read_count and Oracle IO size Posted by eygle at 2005-12-14 【内容摘要】db_file_multiblock_read_count的设置要受OS最大IO能力影响,也就是说,如果你系统的硬件IO能力有限,即使设置再大的db_file_multiblock_read_count也是没有用的
案例:Move系统表DEPENDENCY$导致索引失效的数据库故障 Posted by eygle at 2005-11-18 【内容摘要】今天看到有一个朋友因为Move了一个系统表DEPENDENCY$,在没有Rebuild索引的情况下,重起数据库,结果收到ORA-01502错误,数据库无法启动
Linux上shmmax参数的设置及含义 Posted by eygle at 2005-11-17 【内容摘要】shmmax内核参数定义单个共享内存段的最大值,如果该参数设置小于Oracle SGA设置,那么SGA就会被分配多个共享内存段。这在繁忙的系统中可能成为性能负担,带来系统问题。
ORA-00600 2662错误解决 Posted by eygle at 2005-10-24 【内容摘要】使用隐含参数_ALLOW_RESETLOGS_CORRUPTION后resetlogs打开数据库后,我们说很多时候你会遇到ORA-00600 2662号错误
了解raw trace文件的各项内容 Posted by eygle at 2005-10-23 【内容摘要】我们知道有几种方法可以得到一个SQL语句执行时后台的trace文件,一个是用SQL_TRACE,一个是用DBMS_SUPPORT包或者DBMS_SYSTEM包,还有一种就是直接使用10046 event。
Oracle Hidden Parameter:_allow_resetlogs_corruption Posted by eygle at 2005-10-19 【内容摘要】提示:Oracle的隐含参数只应该在测试环境或者在Oracle Support的支持下使用。 在使用_disable_logging进一步的测试中,试图通过switch logfile进行日志切换,结果重起居然报出日志文件损坏。 SQL> startup ORACLE instance started. Total System Global Area 97588504 bytes Fixed Size 451864 bytes Variable...
Oracle Hidden Parameter:_disable_logging Posted by eygle at 2005-10-19 【内容摘要】提示:Oracle的隐含参数只应该在测试环境或者在Oracle Support的支持下使用。
从Oracle的系统表中,我们知道Oracle存在一个隐含参数_disable_logging可以用于禁用日志生成,这个参数显然只能用于测试目的(可以极大提高Benchmark测试的性能),禁止日志生成必然导致事务的不可恢复性。
What's mean Oracle PE lock from v$lock? Posted by eygle at 2005-10-19 【内容摘要】今天同事维护一个数据库,说观察到大量的PE锁竞争: 14:44:34 SQL> select * from v$Lock; ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK -------- -------- ----------...
关于proof阵营和voodoo阵营的论战 Posted by eygle at 2005-09-21 【内容摘要】所谓的proof阵营,这是我自己起的名字,包含我们所尊敬的Tom,JL等大师。 所谓的voodoo阵营,这是根据Howard J. Rogers发表的Voodoo Tuning一文而来,eygle在Howard J. Rogers创造的新词组:Voodoo Tuning中也谈过一些看法,包括我们所熟知的(此处未用尊敬一词,个人立场已经很是鲜明,惭愧惭愧)Don,Mike等专家。 之所以又提到这个由来已久的论战,是因为今天收到dba-oracle的邮件,提到Mike Ault有新作describing the current Oracle myths and traps发表,但是邮件上给你URL居然不对,ft......于是就直接上dba-oracle找了一下,如果没有更新的文章的话,那么应该是这篇 Oracle Myths Revisited,同时又注意到Mike Ault还有另外一篇...
How to repair corruption block use BBED? Posted by eygle at 2005-09-12 【内容摘要】前面我已经介绍了如何使用BBED模拟坏块,本文简要介绍如何使用BBED修复损坏的BLOCK。 1.备份数据文件 要想恢复损坏的文件,需要存在一个良好文件,本文简单冷备份一下文件. [oracle@jumper conner]$ cp users01.dbf users01.dbf.bak 2.修改BBED参数文件 加入备份文件 [oracle@jumper conner]$ vi filelist.txt 1 /opt/oracle/oradata/conner/system01.dbf 440401920 2 /opt/oracle/oradata/conner/undotbs01.dbf 104857600...
Jonathan Lewis: Can we have a sensible debate ? Posted by eygle at 2005-04-21 【内容摘要】看来Don Burleson从来都没打算停止狡辩,最近Don又提出了一个 “Empirical” vs. “Research” DBAs的论题,邀请Jonathan Lewis等人参与,feel free to join the discussion,我已经不止一次见Don搬出这句话来。 中间一段非常有意思: Jonathan说一开始Don就提出: Remember the rule here that everyone...
Control SCN of Undo Segments Posted by eygle at 2005-04-21 【内容摘要】在回滚段头有一个重要的数据结构称为:Control SCN.
这个SCN是最近一个被重用的事务槽的SCN(重用是按事务的先后顺序重用的)。如果Control SCN比查询的Snapshot SCN新,那么Oracle不会试图去构造前镜像,而是马上返回ORA-01555错误,因为这个UNDO信息肯定已经被覆盖了。
Oracle10g的ASH及历史信息记录 Posted by eygle at 2005-03-18 【内容摘要】性能调整和问题诊断是任何数据库管理人员必须面临的最大挑战和必须完成的重要管理任务。基于管理上的简化和易用性的努力,Oracle推出了Autometic Database Diagnostic Monitor (ADDM) ,通过ADDM,Oracle试图使数据库的维护工作变得更简单更容易
使用ERRORSTACK进行错误跟踪及诊断 Posted by eygle at 2005-03-16 【内容摘要】诊断事件可以在Session级设置,也可以在系统级设置,通常如果要诊断全局错误,最好在系统级设置....
Oracle10g的UNDO_RETENTION自动化管理增强 Posted by eygle at 2005-03-15 【内容摘要】在AUM模式下,我们知道UNDO_RETENTION参数用以控制事务提交以后undo信息保留的时间。该参数以秒为单位,9iR1初始值为900秒,在Oracle9iR2增加为10800秒。但是这是一个NO Guaranteed的限制。
关于redo copy latch的说明 Posted by eygle at 2005-02-11 【内容摘要】一个进程产生redo时首先需要获得redo copy latch,获得了该latch以后才能把redo拷贝到Log Buffer中。
redo copy latch表明进程正在把redo拷贝入log buffer中,在此过程中,LGWR应该等待直到进程拷贝完成才能把目标Log buffer Block写入磁盘。
Log Block Size Posted by eygle at 2005-02-10 【内容摘要】LGWR以block为单位把redo写入磁盘,redo block size是Oracle源代码中固定的,与操作系统相关。 通常的操作系统都是以512 bytes为单位,如:Solaris, AIX, Windows NT/2000, Linux 等 这个Log size可以从Oracle的内部视图中获得: SQL> select max(lebsz) from x$kccle; MAX(LEBSZ) ---------- 512...
Oracle的X$表系列介绍之-X$KSMSP Posted by eygle at 2005-01-25 【内容摘要】X$KSMSP的名称含义为: [K]ernal [S]torage [M]emory Management [S]GA Hea[P]
Oracle的X$表系列介绍之-X$KSLLCLASS Posted by eygle at 2005-01-16 【内容摘要】X$KSLLCLASS--[K]ernel [S]ervice [L]ock [L]atches [CLASS] 从Oracle9iR2开始,Oracle允许对Latch进行分类,不同的分类可以用于不同的_SPIN_COUNT值。 这就避免了之前版本,一旦修改_SPIN_COUNT参数就会影响所有Latch的问题。从而可以在一定程度上控制该参数对于CPU的过量耗用。...
如何获得当前数据库的SCN值 Posted by eygle at 2004-12-16 【内容摘要】SCN(System Change Number) ,也就是通常我们所说的系统改变号,是数据库中非常重要的一个数据结构。
Oracle诊断事件列表 Posted by eygle at 2004-12-10 【内容摘要】经常有人问,Oracle有哪些诊断事件,各是什么含义,怎样使用?
这些问题问得太多太多,Oracle没有过多的说明,实际上也不需要太多的说明。
我们可以通过以下代码查询得到Oracle的诊断事件及说明,通过这些,我想就足够了。列举在这里给自己参考。
在Oracle9i中,如何监视索引并清除监视信息 Posted by eygle at 2004-12-04 【内容摘要】对于DML操作来说,索引对于数据库是一个性能负担.如果索引没有被有效的使用,那么其存在性就值得从新考虑.
从Oracle9i开始,Oracle允许你监视索引的使用
Oracle X$ table 参考手册 Posted by eygle at 2004-11-17 【内容摘要】Oracle X$ table 参考手册,来自Metalink....
关于shared pool的深入探讨(一) Posted by eygle at 2004-10-31 【内容摘要】关于shared pool的设置一直是一个争议较多的内容,很多文章上说,shared pool设置过大会带来额外的管理上的负担,从而在某些条件下会导致性能的下降.
那么这个管理上的负担指的是什么内容呢?
关于shared pool的深入探讨(二) Posted by eygle at 2004-10-31 【内容摘要】由此我们可以看出,如果数据库系统中存在大量的硬解析,不停请求分配free的shred pool内存
除了必须的shared pool latch等竞争外,还不可避免的会导致shared pool中产生更多的内存碎片
(当然,在内存回收时,你可能看到chunk数量减少的情况)
关于shared pool的深入探讨(四) Posted by eygle at 2004-10-31 【内容摘要】Oracle使用两种数据结构来进行shared pool的并发控制:lock 和 pin,Lock比pin具有更高的级别.
Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定.
锁定主要有三种模式: Null,share,Exclusive.
关于shared pool的深入探讨(五) Posted by eygle at 2004-10-31 【内容摘要】Oracle使用两种数据结构来进行shared pool的并发控制:lock 和 pin.
Lock比pin具有更高的级别.
Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定.
关于shared pool的深入探讨(六)-高Latch竞争案例 Posted by eygle at 2004-10-31 【内容摘要】我们注意到,在当前数据库中竞争最严重的两个latch是shared pool和library cache.
显然这极有可能是SQL的过度解析造成的.
Undo Internal的研究 Posted by eygle at 2004-09-19 【内容摘要】本文就Undo的内部结构作初步探讨,我们通过实验来看一下回滚段的内部结构.
数据块转储及RDBA的转换 Posted by eygle at 2004-08-31 【内容摘要】很多时候我们在进行进一步研究时需要转储(dump)Oracle的数据块,以研究其内容,Oracle提供了很好的方式,我们通过以下例子简单说明一下...
Nologging到底何时才能生效? Posted by eygle at 2004-07-13 【内容摘要】我们知道,Nologging只在很少情况下生效,通常,DML操作总是要生成redo的
关于Nologging和append,一直存在很多误解,经过一系列研究,终于发现了Nologging的真相....
Oracle中临时表产生过量Redo的说明 Posted by eygle at 2004-07-03 【内容摘要】我们知道临时表在DML操作中可以减少redo的生成,从而在保存中间结果集时可以带来较大的性能提高
Oracle中Kill session的研究 Posted by eygle at 2004-06-25 【内容摘要】我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程....
关于checkpoint cnt和checkpoint scn Posted by eygle at 2004-06-22 【内容摘要】Checkpoint cnt用于保证在正常操作中使用的数据文件是当前版本
在恢复时防止恢复数据文件的错误版本.Checkpoint cnt是一直递增的,即使表空间处于热备份模式.
关于数据文件头信息记录 Posted by eygle at 2004-06-17 【内容摘要】这个测试的起因是一些朋友讨论,Oracle在恢复时从何处获得日志文件名信息.
因为如果在重建控制文件的过程中,控制文件中的信息显然已经被清空了.
关于ASSM HWM的研究 Posted by eygle at 2004-06-15 【内容摘要】HWM移动遵循:
每次移动32个blocks,但是HWM包含未格式化的block,每次格式化16个block或者16 –metadata blocks