SQL的执行
白老师就是那么牛,再转。最近有网友问我SQL的执行有哪些步骤。实际上SQL执行是一个十分复杂的事情。这里仅介绍SQL提交到SQL引擎后的几个重要的阶段。一个SQL的执行分为分析(PARSE),执行(EXECUTE)和FETCH三个大的阶段。SQL执行的第一步是对语法进行分析,首先根据SQL语句,计算出SQL的HASHVALUE,然后根据HASHVALUE查找LIBRARY CACHE,是否存在这个SQL,如果存在,那么说明语法是经过检查的,不需要进行语法检查。如果不存在,那么要在LIBRARY CACHE中分配内存,这时候会涉及到SHARED POOL,LIBRARY CACHE闩锁。第二步是进行语意的检
一个存储过程编译HANG住的分析
转白老师的文章。客户的一个库编译某个存储过程HANG住。查看了一下,也没锁方面没有什么问题。查看v$session_wait,发现在等待Library cache pin。建议他做一个3级的hanganalyze。结果如下:==============HANG ANALYSIS:==============Open chains found:Chain 1 : : <48/29750/0x3ed60060/7856/PX Deq: Join ACK> -- <141/31823/0x3ed5d680/2291/library cache pin> --被HANG住的SESSIONChain 2 : : <76/16377/0x3ed554b0/6507/No Wait>Chain 3 : : <98/8617/0x3ed65c80/4550/No Wait>Chain 4 : :
说说这几天
周一,装了库,9201 for solaris 然后升级到9208,在runInstaller 的时候报DISPLAY设置问题,后经过finger才知道,DISPLAY要设置成我笔记本的IP,因为我是用xmanager装的。在这个问题上我浪费了很多时间,以后要载入我的故障库。周三遇见4031错误,郁闷的是居然连数据库都登录不进去,这个问题需要深入研究。周四DB hang,学会了开sr,呵呵,并且用E文跟oracle交流。同时学会了在hang时该做的操作(Update for record id(s): 241426350)UPDATE======Hi,Yes, without the diagnostic information it is not possible to find the reason for
【转帖】Oracle Audit 学习快餐
Oracle Audit 学习快餐 Oracle Audit 读书笔记 --请拍砖 1、什么是审计 简单来讲,就是把对数据库的操作记录下来。不管你是否打开数据库的审计功能,以下这些操作系统会强制记录。 l 用管理员权限连接Instance l 启动数据库 l 关闭数据库 2、和审计相关的两个主要参数 Audit_sys_operations 默认为false,当设置为true时,所有(注意是所有!)sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba
获取跟踪文件_eygle
跟踪文件位于user_dump_dest目录中,位置及文件名可以通过以下SQL查询获得select d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name from ( select p.spid from sys.v$mystat m,sys.v$session s,sys.v$process p where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p, ( select t.instance from sys.v$thread t,sys.v$parameter v where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i, ( select value from sys.v$parameter where name =
Oracle SCN机制解析
SCN(System Chang Number)作为oracle中的一个重要机制,在数据恢复、Data Guard、Streams复制、RAC节点间的同步等各个功能中起着重要作用。理解SCN的运作机制,可以帮助你更加深入地了解上述功能。在理解SCN之前,我们先看下oracle事务中的数据变化是如何写入数据文件的: 1、 事务开始;2、 在buffer cache中找到需要的数据块,如果没有找到,则从数据文件中载入buffer cache中;3、 事务修改buffer cache的数据块,该数据被标识为“脏数据”,并被写入log buffer中;4、 事务提交,LGWR进程将log buffer中的“脏数据”写入redo log fi
Bug 4632780 - PMON "failed to acquire latch" during shutdown
今天做实验,遭遇Bug 4632780 shutdown immedaitehang住alert中出现大量PMON "failed to acquire latch" during shutdownctrl+c,不起作用,然后在另外一个窗口中登录[oracle@xh bdump]$ sqlplus '/as sysdba'SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jun 28 10:21:58 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected.SQL> alter system checkpoint;alter system checkpoint*ERROR at line 1:ORA-01012: not logged onSQL> conn sys/password as sysdbaConnected to an idle instance.
eygle_getsql.sql
SELECT /*+ ORDERED */ sql_text FROM v$sqltext a WHERE (a.hash_value, a.address) IN ( SELECT DECODE (sql_hash_value, 0, prev_hash_value, sql_hash_value ), DECODE (sql_hash_value, 0, prev_sql_addr, sql_address) FROM v$session b WHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid = '&
ORACLE性能优化笔记
http://space.itpub.net/html/10/8750110-6864.html[@more@]
使用dbv和RMAN检查数据文件中的坏块
1.使用dbv检查D:oradataeygle>dbv file=EYGLE.DBF blocksize=8192DBVERIFY: Release10.1.0.4.0 - Production on星期六6月11 17:36:37 2005Copyright (c) 1982, 2004, Oracle. All rights reserved.DBVERIFY -开始验证: FILE = EYGLE.DBF页219标记为损坏Corrupt block relative dba: 0x010000db (file 4, block 219)Bad check value found during dbv:Data in bad block: type: 6 format: 2 rdba: 0x010000db last change scn: 0x0000.0005ee6d seq: 0x2 flg: 0x04 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0xe
connection和session的关系
1.官方解释:1.1 connection: A connection is a physical path from a client to an Oracle instance. A connection is established either over a network or over an IPC mechanism. A connection is typically between a client process and either a dedicated server or a dispatcher. However,using Oracle’s Connection Manager (CMAN), a connection may be between a client and CMAN, and CMAN and the database. 1.2 sessionA session is a logical entity that exists in the instance. It is your session state, or a col