- 博客(47)
- 收藏
- 关注
原创 如何捕捉temp表空间出错的session信息和SQL
我们有时候会遇见这样的烦恼,在特定的时候总有某个大查询导致临时表空间出错。但我们总不能守侯着捕获相关sql以优化或者处理。可以通过events来诊断 ALTER">sys@OCN>ALTER SESSION SET EVENTS 2 1652 trace name errorstack level 1;Session altered.select">sys@OCN>
2004-08-24 17:39:00
5704
1
原创 standby open read only 出错的处理过程
昨天一备份数据库,在open? read? only的过程中出现故障,从而导致在standby上备份失败。alert log 中信息如下:Errors in file /opt/oracle/admin/crmhz/udump/crmhz_ora_13914.trc:ORA-00604: error occurred at recursive SQL level 1ORA-16000:
2004-08-11 22:04:00
5967
1
原创 checkpoint queue 和 write list
在oracle中存在 dirty list(也就是write list)的说法,但是同时又有checkpoint queue 。这两个东西往往让人容易混淆。他们是同一个东西吗?之间关系如何? 在阐述之前,我们先来看一段大师的描述http://www.ixora.com.au/q+a/0103/07160329.htmThat information is not quite right. It i
2004-08-01 15:04:00
6676
2
原创 32bit oracle中SGA_MAX_SIZE 与 单个进程 PGA 的制约关系
阅读本文前请先阅读32bit oracle 扩展SGA原理 >> 在我的测试中,由于我降低了SGA的起点(降低SGA起点和本文章没有实质上的关系,仅仅因为我的测试数据库正好是被降低了sga起点而已),从0x5000000降低到0x42000000,也就是说,当没有降低的时候,SGA的理论极限值是约小于1.75G,我降低起点后,SGA的极限值大约是1.95G。 show">sys@OCN> s
2004-07-27 13:13:00
7169
5
原创 32bit oracle 扩展SGA原理
32bit oracle由于位数限制,使得oracle进程只能访问4g(2的32次方)以下的虚拟内存地址,在很多时候这是一个很让人头疼的问题,因为空着许多内存而不能使用,而默认情况下SGA不能超过1.7g。比如我们的linux下有8g内存,却有部分空着不能用干着急。这个时候我们就要考虑怎样扩展oracle的SGA。那么首先,如何识别32bit的oracle呢?我们可以通过如下查询得到
2004-07-26 13:02:00
7196
10
原创 无聊之通过修改数据字典为表换owner
简单的做了一个测试 1: select user_name,user_id from all_users; 找出用户名和编号 SQL> select * from all_users; USERNAME USER_ID CREATED ------------------------------ ---------- ---------- SYS 0 14-11月-00 SYST
2004-07-12 11:58:00
5645
6
原创 如何查找隐藏参数(x$ksppi and x$ksppsv)
select name ,value ,decode(isdefault, TRUE,Y,N) as "Default" ,decode(ISEM,TRUE,Y,N) as SesMod ,decode(ISYM,IMMEDIATE, I, DEFERRED, D, FALSE, N) as SysMod ,decode(IMOD,M
2004-07-12 11:54:00
4798
原创 如何知道哪些表是FTS
SQL> desc obj$ 名称 空? 类型 ---------------------------------------- -------- --------------------------- OBJ# NOT NULL N
2004-07-12 11:53:00
4352
4
原创 如果在shared_pool中keep cursor(sql)
SQL> desc sys.dbms_shared_pool PROCEDURE ABORTED_REQUEST_THRESHOLD Argument Name Type In/Out Default? ------------------------------ ----------------------- ---
2004-07-12 11:49:00
4537
原创 update对consistent gets的影响
chao_ping: 经过别的session Update之后,select 语句的buffer gets 会变大,这是可以理解的. 因为Oracle需要从别的Block里面得到他需要的Block的之前的映像。 但是,这里的这个参数就好像有点南里理解: SQL> select * from t where object_id=100; OBJECT_ID OWNER
2004-07-12 11:47:00
4934
1
原创 v$waitstat 和 save undo segment header /save undo block
比如等待中也有 SQL> select * from v$waitstat; CLASS COUNT TIME ------------------ ---------- ---------- data block 2 1 sort block 0
2004-07-12 11:36:00
3779
原创 9i rman block recover
http://otn.oracle.com/docs/products/oracle9i/doc_library/901_doc/server.901/a90136/rcmsyn10.htm#79197 Examples Recovering a Group of Corrupt Blocks: Example This example recovers corrupt blocks in t
2004-07-12 11:34:00
4429
原创 关于 cursor_sharing = similar
我们先看看在表没有分析无统计数据情况下的表现 SQL> alter session set cursor_sharing = similar; Session altered. SQL> select name,value from v$sysstat where name like %parse%; NAME
2004-07-12 11:29:00
13300
4
原创 statspack 中 Execute to Parse
Instance Efficiency Percentages (Target 100%) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Buffer Nowait %: 99.82 Redo NoWait %: 100.00 Buffer Hit %:
2004-07-12 11:09:00
8566
原创 关于checkpoint的讨论
http://www.cnoug.org/viewthread.php?tid=21969 贴主: wanghai checkpoint小议什么是checkpoint?checkpoint是一个数据库事件,它将已修改的数据从高速缓存刷新到磁盘,并更新控制文件和数据文件。什么时候发生checkpoint?我们知道了checkpoint会刷新脏数据,但什么时候会发生checkpoint呢?以下
2004-07-12 11:03:00
5839
4
原创 证明truncate发出了可观察的commit命令
一般来说,我们通常认为,truncate 的伪代码是:commit; ---------- 1truncate;commit; ------------ 2那我们有个疑问,commit 1和 truncate 是不可分割的吗?具有原子性吗?那我们来看看下面的演示session 1:SQL> create table t as select * from all_objects where rown
2004-07-09 21:11:00
7697
4
原创 深度分析数据库的热点块问题
热点块的定义 数据库的热点块,从简单了讲,就是极短的时间内对少量数据块进行了过于频繁的访问。定义看起来总是很简单的,但实际在数据库中,我们要去观察或者确定热点块的问题,却不是那么简单了。要深刻地理解数据库是怎么通过一些数据特征来表示热点块的,我们需要了解一些数据库在这方面处理机制的特性。 数据缓冲区的结构 我们都知道,当查询开始的时候,进程首先去数据缓冲区中查找
2004-07-06 12:51:00
14543
11
原创 关于oracle怎么保证读一致性
假设这样一种情况,一个大查询开始FTS查询大表 ,然后另外一个session更新了表末尾的某条数据并提交,更新了N次 ,由于多次事务的DML使得该block上的相关XID和LOCK信息早已荡然无存 ,该记录行上的 XID 已经被设置为 0 了,也就是根本找不着 ITL 信息 ,那这样的情况下,oracle 是怎么找出事务的 before image ? 根据 dump 出来的数据是看
2004-07-05 18:14:00
10602
原创 关于回滚段与事务的一些探讨
http://www.cnoug.org/viewthread.php?tid=645 http://www.itpub.net/showthread.php?threadid=100750
2004-07-05 18:03:00
4101
原创 关于freelist的一些深入的探讨
http://www.cnoug.org/viewthread.php?tid=367&highlight=freelist%2Bbiti_rainy http://www.itpub.net/showthread.php?threadid=90981
2004-07-05 17:59:00
2233
原创 怎样去定位你所未知的对象
前几天看见有人问怎么查找某个view引用了什么表,或者某个表被那些对象引用,偶当时没有注意,今天朋友问到了. 我想是有view表达这种依赖关系的,于是,偶打开 dba studio ,进入 方案---视图---sys,然后快速浏览 dba_* 这样的view,根据经验判断很多view不是所需要的,终于看到一个view : dba_dependencies,英文不大利索,猜测可能是
2004-07-05 17:52:00
2420
3
原创 v$sqlarea,v$sql,v$sqltext的区别和联系
v$sqltext 存储的是完整的SQL,SQL被分割SQL> desc v$sqltextName Null? Type----------------------------------------- -------- ----------------------------ADDRESS RAW(4) ---------HASH_VALUE NUMBER --------- 和 addres
2004-07-05 17:48:00
11842
1
原创 跟事务相关的日志生成量的对比
1: 插入相同数量记录的单条提交和成皮提交之间的对比我们可以看出分别是 25112152 - 8024588 = 17087564 8024588 - 13384 = 8011204对比相差达到9MSQL> show parameters transaction_auditingNAME TYPE VALUE------------------------------------ ------
2004-07-04 16:16:00
2699
原创 基于外部OS验证的数据库用户
采用操作外部系统认证(unix or linux 等 OS) SQL> show parameters os_authent_prefix NAME TYPE VALUE ------------------------------------ ----------- ------------------------ os_authent_prefix string OPS$ SQL> CREAT
2004-07-04 16:13:00
2482
原创 oracle9i 怎样自动捕获DML 语句
SQL> desc t1Name Null? Type---- -------- A NUMBERSQL> desc t_sqlName Null? Type---------------------------USERNAME VARCHAR2(30)CLIENT_IP VARCHAR2(20)SQL_TEXT VARCHAR2(4000)TABLE_NAME VARCHAR2(30)OW
2004-07-04 16:09:00
1838
4
原创 如何查询出完全是数字的某个字符串
SQL> select 1 from dual where ltrim(12385x2,0123456789) is null;未选定行SQL> select 1 from dual where ltrim(123852,0123456789) is null;1----------1SQL>
2004-07-04 16:04:00
1786
6
原创 一道著名的号称微软的试题的oracle解
TABLE如下日期 收入 支出2000/3/1 50 302000/3/2 45 602000/3/5 60 10能否用SELECT語句得出以下結果日期 收入 支出 余額2000/3/1 50 30 202000/3/2 45 60 52000/3/3 0 0 52000/3/4 0 0 52000/3/5 60 10 55这是一个网上广为流传的题目,以前曾经有人说这是微软的试题,这
2004-07-04 15:58:00
2254
3
原创 oracle IO的影响因素
数据库的IO能力,在很多时候会影响到查询的性能,尤其是FTS 的性能,所以对于oracle来说,这会影响到执行计划的选择。数据库中统计的 physical reads和 IO 不是一个概念,数据库中物理读统计的是 blocks ,而操作系统中是 io requests ,一次 request 可能是 128k/256k/1024k 等等数据,当然也可能是几十k 或者更少的,取决于
2004-07-04 15:48:00
2277
1
原创 OPTIMIZER_INDEX_COST_ADJ & RBO
相关的有几个帖子,偶参与了讨论但是不能把别人的文章整理过来,所以给出了连接 http://www.itpub.net/showthread.php?threadid=235922 http://www.eygle.com/sql/OPTIMIZER_INDEX_COST_ADJ.htm
2004-07-04 15:38:00
1247
原创 direct insert下不会产生数据的 UNDO
从理论上来说,对于 direct insert 的 undo (rowid)实在没有存在的必要,因为HWM 在移动的过程中,这些block是不能被其他process使用的,那么,意味着,只要记录下该次direct insert所涉及到的 空间的redo 和 undo ,在失败回滚的时候,只需要把这些空间修改为原来的状态就可以而而不用逐个记录去delete。也就是说不管表是否处于nologg
2004-07-04 15:30:00
2923
原创 oracle内存分配与调整
l 前言 对于oracle的内存的管理,截止到9iR2,都是相当重要的环节,管理不善,将可能给数据库带来严重的性能问题。下面我们将一步一步就内存管理的各个方面进行探讨。 l 概述 oracle的内存可以按照共享和私有的角度分为系统全局区和进程全局区,也就是SGA和PGA(process global area or private global area)。对于SGA区
2004-07-03 01:10:00
28840
7
原创 回滚段探究
l 前言 对于oracle的回滚段的分配与管理,实际上不那么复杂,当然如果我们从原理甚至从oracle internal的角度深究相关问题的话有不是一件容易的事。但对于我们普通开发人员和DBA来说,重要的是在概念上清晰,原理上了解,使用上熟悉。要做到这一点,其实并不是一件困难的事情。问题的根源在于,很少有中文文章就回滚段进行清晰的介绍和整理,而对于oracle document,
2004-07-03 01:07:00
8212
6
原创 update的时候数据库的处理情况
有人问到: 今天听一个IBM的人说数据库在update时是先删除原记录,然后在插入,对此我有些疑问,oracle好像不是这样的,请大家能否阐述一下update的过程,更新主键和不更新主键的处理是否一样?不胜感激。另外,那个IBM的人还说update和insert不是一个数量级的动作,我认为要具体分析,对同数据量的操作,update需要定位,但是慢多少呢? 答: 其他数据库跟orac
2004-07-03 00:56:00
2012
原创 关于 v$waitstat 和 x$bh.class 的关系
x$bh.class 中的分类,依次对应于 v$waitstat 中记录SQL> select * from v$version;BANNER----------------------------------------------------------------Oracle9i Enterprise Edition Release 9.2.0.1.0 - ProductionPL/SQ
2004-07-03 00:50:00
2423
2
原创 关于索引块空间的重用
在oracle document中所说的索引块要等所有数据完全删除后才可重用,这是站在块的重新分配的角度上说的,也就是说,相当于索引块的 pctused=0 ,要完全删除后才回到 freelist(assm不存在freelist而是用bitmap来表示),但其实在索引块的内部,并不是说被删除的空间就不能被重用。所谓重用 的观点应该针对block来说而不应该针对row所在的位置,只要key
2004-07-03 00:45:00
1926
原创 open cursor 是否去获取数据?
cursor open 的时候到底有没有去获取数据是不是fetch的时候才获取数据请看下面实验SQL> conn test/testConnected.SQL> alter session set events 10046 trace name context forever,level 12;Session altered.SQL> declare 2 cursor c is selec
2004-07-03 00:35:00
3671
原创 关于数据库open的深入探究
SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area 131142648 bytesFixed Size 451576 bytesVariable
2004-07-02 16:03:00
2481
1
原创 关于block中数据的存储和重组的探究
前言: 在block内部oracle的数据到底是怎么存储的,通过rowid方式的时候又是怎样的,insert/delete/update发生的时候又是怎样的,想仔细探讨一下 先交代block里面数据的基本结构: SQL> create table tn(a number, b varchar2(1000)); Table created. SQL> insert into tn select ro
2004-07-01 23:06:00
2116
原创 关于 9iR2 的 compress table 的研究
基本功能介绍请看连接 http://otn.oracle.com/oramag/oracle/04-mar/o24tech_data.html 下面开始探讨内部存储细节由于压缩是以block为单位的,因此在批插入的时候若数据本身不超过1 block容量是不会压缩的 (未严格证明,如下面例子,若插入数据100条可存放在block中则不会产生压缩)SQL> create table test1(a
2004-07-01 22:49:00
1340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人