监控数据库性能的SQL汇总
监控数据库性能的SQL汇总 1. 监控事例的等待 select event,sum(decode(wait_Time,0,0,1)) "Prev", sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot" from v$session_Wait group by event order by 4; 2. 回滚段的争用情况 select name, waits, gets, waits/gets "Ratio" from v$rollstat a, v$rollname b where a.usn = b.usn; 3. 监控表空间的 I/O 比例 select df.tablespace_name name,df.file_name "file",f.phyrds pyr, f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw from v
oracle转义字符
SQL> select * from test;ID------------------------------------------------------------c_zhangzhangsanccccccSQL> select id from test where id like 'c_%' escape '';ID------------------------------------------------------------c_zhangSQL> select id from test where id like 'c=_%' escape '=';ID------------------------------------------------------------c_zhangSQL> select id from test where id like 'c/_%' escape '/';ID------------------------------------------------------------c_zhang[@mor
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
oracle10g recyclebin
QL> show recyclebinORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME---------------- ------------------------------ ------------ -------------------TEST1 BIN$SGHtLJ/KTUOrTO8HY+8x8g==$0 TABLE 2006-10-27:17:34:00SQL> purge recyclebin2 ;回收站已清空。SQL> show recyclebinSQL> show parameter recyclebinNAME TYPE VALUE------------------------------------ ----------- ------------------------------recyclebin string onSQL> alter system set recyclebin=off scope=both;系统已更改。[@more@]
How to get ORACLE_HOME from data dictionary
SQL> set autopri onSQL> var oracle_home varchar2(255)SQL> exec dbms_system.get_env('ORACLE_HOME',:ORACLE_HOME)PL/SQL procedure successfully completed.ORACLE_HOME--------------------------------------------------------------------------------/app/oracle/oracle/product/10.2.0/db_2[@more@]
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) 其中,软、硬解
latch free 等待事件说明
当进程想要获取锁存器而此时该锁存器正被其他进程持有时产生Latch Free(锁存器空闲)等待事件,类似于排队,Oracle使用锁存器来保护数据结构。一次只能在一个进程在获得锁存器后修改或检查数据结构。其他需要访问该数据结构的进程必须等到它们获得锁存器后。不同于排队的是,请求锁存器的进程不需要在队列中等待。如果获取锁存器失败,则进程仅仅等待一小段时间就可以再次请求锁存器。这一小段等待时间成为“自旋”(spin)。如果在一次或多次自旋重复(spin iterations)之后还没获取锁存器,进程就休眠一小段时间,然后再次尝试获取锁存器,接
Oracle中SQL语句解析的步骤
我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析。那 么这两种解析有何不同之处呢?它们又分别是如何进行解析呢?Oracle内部解析的步骤又是如何进行的呢 ?下面我们就这些话题进行共同探讨。在Oracle中存在两种类型的SQL语句,一类为DDL语句,他们是从来不会共享使用的,也就是每次执行都需 要进行硬解析。还有一类就是DML语句,他们会根据情况选择要么进行硬解析,要么进行软解析。在 Oracle 8i OCP教材的023中1-12有说明SQL语句的解析步骤,当一条SQL语句从客户端进程传递到服务器端 进程后,需要
同时使用数据库链和序列时应注意的几点
在一条语句中如果同时包括数据库链和序列,就会出现潜在的问题,而Oracle的文档在这里并没有描述清楚。下面通过一个例子对同时包括数据库链和序列的几种情况分别进行说明。 首先,构造一个测试的环境(两个数据库的GLOBAL_NAMES均为TRUE): SQL> conn scott/tiger@yangtk已连接。SQL> create table test_on_yangtk (id number); 表已创建。 SQL> insert into test_on_yangtk values (1); 已创建 1 行。 SQL> commit; 提交完成。 SQL> create sequence seq_on_yangtk; 序列已创建。 SQL> conn yangtk/yangtk@test4已连接
关联update问题
CREATE TABLE TEST1(ID VARCHAR2(20) NOT NULL PRIMARY KEY,MC VARCHAR2(60));CREATE TABLE TEST2(ID VARCHAR2(20) NOT NULL PRIMARY KEY,MC VARCHAR2(60));INSERT INTO TEST1 VALUES('1','1-11111');INSERT INTO TEST1 VALUES('2','1-22222');INSERT INTO TEST1 VALUES('3','1-33333');INSERT INTO TEST2 VALUES('1','2-11111');INSERT INTO TEST2 VALUES('2','2-22222');UPDATE (SELECT A.MC MCA,B.MC MCB FROM TEST1 A,TEST2 B WHERE A.ID=B.ID) SET MCA=MCB;/*2 rows updated这个写法要求TEST2表要有主建,否则SQL无法执行!ORA-01779
Oracle 9i for Linux出现ORA-12541
关键的两个文件:$ORACLE_HOME/network/admin/listener.ora$ORACLE_BASE/config/9.2.0.4/tnsnames.ora当出现这个提示时首先检查:(1)$ORACLE_HOME/network/admin/listener.ora是否缺少监听器的SID_LIST描述项,以下是一个样本(netca真是奇怪,不会自动添加SID_LIST的描述项):SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /opt/oracle/product/9.2.0.4) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = SAMPLE.COM) (ORACLE_HOME = /opt/oracle/product
execute to parse
Soft Parse %:软解析百分比 round(100*(1-:hprs/:prse),2) ' Execute to Parse %:执行次数与解析次数百分比round(100*(1-:prse/:exe),2) 其中 Execute to Parse = round(100*(1-:prse/:exe),2) 的两个指标分别为:prse = select value from v$sysstat where name = 'parse count (total)'; exe = select value from v$sysstat where name = 'execute count'; 即使是soft parse 也会被统计入 parse count,所以这个指标并不能反应 出 fast soft(pga 中)/soft (shared pool中)/hard (shared pool 中新解析) 几种解析的比例。只有在pl/sql的类