(转)oracle性能工具包Explain plan、Autotrace、Tkprof
Oracle:性能工具Explain plan、Autotrace、Tkprof(2008-06-25 16:52:26) var $tag='oracle,explain,plan,autotrace,tkprof,it'; var $tag_code='00b10372f0315223d6ca1493a91a421b'; 标签:oracle explain plan autotrace tkprof it 分类:IT技术 Oracle: 三个内置的性能工具包 Explain plan、Autotrace、Tkprof 欲先善其事,必先利其器。 最近同事总是问我如何调优SQL,有什么工具可以使用。在此介绍一下关于Oracle内置的三个性能工具包的安装、使用、以及一些基本技巧。
oracle常用包之dbms_job
定期执行一些任务(任务是以存储过程的形式保存的;然后定时调用存储过程),譬如管理任务等。注意事项和重点首先设置系统参数alter system set job_queue_processes = n;1、定时执行,消除时间漂移interval用来计算next_date例如每天凌晨0:10分执行‘trunc(sysdate) + 1 + 10/1440’每天凌晨5:30分'TRUNC(SYSDATE + 1) + (5*60+30)/(24*60)' 2、interval时间间隔的多样形式(重点)3、submit参数中的存储过程名称带有分号:例如 'myproc;'begin dbms_job.submit(:job1,'MYPROC;',sysdate,'sysdate+1/1440');end;[
oracle常用包之dbms_rowid oracle rowid含义分析
如果我们查询一个表的ROWID,就可以获得object的信息,文件信息,块信息与行信息等等,如根据其中块的信息,可以知道该表确切占用了多少个块,每行在哪个块上,哪个数据文件上。SQL> select rowid from t; ROWID------------------AAANkiAAGAAAAZfAAAAAANkiAAGAAAAZfAAB拿第一个rowid AAANkiAAGAAAAZfAAA分解一下看到如下Data Object number = AAANkiFile = AAGBlock = AAAAZfROW = AAA SQL> select dbms_rowid.rowid_block_number(rowid) from t; DBMS_ROWID.ROWID_BLOCK_NUMBER(------
(转)oracle dump block格式说明
Segment Header: ==> nfl: number of free lists/block ==> nfb: number of free list blocks + segment header ==> typ: block type ==> nxf: number of transaction free lists Segment List: ==> flg: flag USED or UNUSED the free list ==> lhd: head of free list ==> ltl: tail of free list ==> Seg/obj Object ID in dictionary ==> csc SCN of last block cleanout ==> itc Number of ITL slots ==> flg O = On freelist , - = Not on freelist ==> typ 1 = DATA 2 = INDEX ==> fsl
(转)怎样才能dump数据库的内部结构?
1、分析数据文件块,转储数据文件n的块m alter system dump datafile n block m 2、分析日志文件 alter system dump logfile logfilename; 3、分析控制文件的内容 alter session set events 'immediate trace name CONTROLF level 10' 4、分析所有数据文件头 alter session set events 'immediate trace name FILE_HDRS level 10' 5、分析日志文件头 alter session set events 'immediate trace name REDOHDR level 10' 6、分析系统状态,最好每10分钟一次,做三次对比
转 dump block
两种方法找到block号1、执行dbms_rowid.rowid_block_number2、查询dba_segmentsselect header_file, header_block, blocks from dba_segments where segment_name = 'EMP';alter system dump datafile 6 block 47;alter system dump datafile 6 block min 43 block max 51;SQL> select dbms_rowid.rowid_block_number(rowid) from T4; DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ———————————— 1514 1514 这个常用来DUMP数据块号,分析比如,我要dump表test_table的某个块,则在sqlplus下执行:sys@Ti>select heade
dbms常用包之utl_file包小结
1、文件只能放在db server端,客户端的不能读写2、directory 名称在程序中必须大写。3、UTL_FILE.FILE_TYPE是包内定义好的file handle4、使用directory;而非直接的路径名。同时要对directory有读写权限grant read,write on directory utl to scott;create or replace directory utl as 'c:';declarenum number;j number :=0;sname varchar2(200);numfile UTL_FILE.FILE_TYPE;temp varchar2(1000);cursor curemp is select empno,ename from oracleemp;beginnumfile := utl_file.fopen('UTL','121.txt','w',2000);for i in curemp loopj
redhatas下安装oracle10g
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 st1:*{behavior:url(#ieooui) } /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0pt 5.4pt 0pt 5.4pt; mso-para-margin:0pt; mso-para-margin-bottom:.00
获取oracle exception vs errors;sqlcode sqlerrm使用
create table errors (code number,message varchar2(1000)) truncate table errors;--测试用 DECLARE msg CHAR(1000); BEGIN FOR num IN 1..100000 LOOP msg := SQLERRM(-num); -- should be SQLERRM(-num) if INSTR(msg,'not found',1) > 0 then null; else if INSTR(msg,'non-ORACLE',1) > 0 then null; else INSERT INTO errors VALUES (num,msg); end if; end if ;
oracle9i所有文档
http://tahiti.oracle.com/pls/db92/db92.docindex?remark=homepage[@more@]
PLSQL开发精品总结(转)
--不知道出处了,绝对是入门的精品,收藏之2. 字符表达式 字符表达式由字符型常数、变量、函数和字符运算符组成,唯一可以使用的字符运算符就是连接运算符“||”。 3. 关系表达式 关系表达式由字符表达式或数值表达式与关系运算符组成,可以使用的关系运算符包括以下9种。 < 小于 > 大于 = 等于(不是赋值运算符:=) like 类似于 in 在……之中 <= 小于等于 >= 大于等于 != 不等于 between 在……之间 关系型表达式运算符两边的
oracle plsql例子
在scott/tiger下测试1、建立function首先设置SQL> set serveroutput on;create or replace function fgetEmp(depid in number, ret out varchar2) return varchar2 is type rec is table of emp%rowtype index by binary_integer; emprec rec; cursor cur1 is select * from emp where deptno = depid; j number := 1; my_exception exception;begin ret := 'error'; open cur1; --下面的loop需要显示的open close 游标 loop fetch cur1 into emprec(j); exit when cur1%NOTFOUND; if cur1%NOTFOUND then
物化视图
物化视图可以参考http://space.itpub.net/519536/viewspace-563084每隔五分钟刷新一次数据(SYSDATE NEXT SYSDATE + 1/248 )。DROP MATERIALIZED VIEW LOG ON emp;DROP MATERIALIZED VIEW mv_emp_pk;CREATE MATERIALIZED VIEW LOG ON emp;CREATE MATERIALIZED VIEW MV_EMP_PKREFRESH FAST ON DEMANDSTART WITH SYSDATE NEXT SYSDATE + 1/248 ASSELECT "EMP"."EMPNO" "EMPNO","EMP"."ENAME" "ENAME","EMP"."JOB" "JOB&
oracle动态和静态监听listener
总结:1、unknow是静态的监听,ready的是动态监听2、监听可以利用sid 或者 service_name对外服务3、listener.ora配置只是在服务器端,客户端不需要4、tnsnames.ora客户端需要,服务器端不需要;如果服务器端也需要连接oracle的话,也需要tnsnames.ora5、sqlnet.ora决定使用什么验证。[oracle@sunfire01 root]$ lsnrctlLSNRCTL for Linux: Version 10.2.0.1.0 - Production on 10-MAR-2009 15:01:34Copyright (c) 1991, 2005, Oracle. All rights reserved.Welcome to LSNRCTL, type "help" for information.LSNRCTL> status
oracle 环境变量 redhat
路径/etc/./profile下设置 ORACLE_HOME,PATH,ORACLE_SIDORACLE_HOME=/home/oracle/oracle/product/10.2.0/db_1; export ORACLE_HOMEPATH=$HOME/bin:$ORACLE_HOME/bin:$PATH;export PATHORACLE_SID=oracle;export ORACLE_SID [@more@]
asm实例删除方法
asm工具asmcmd asmtool在oracle主目录下/bin下。删除自动存储管理实例+ASM 实例+ASM的删除是在数据库被卸载之后完成的,并删除/ORACLE_HOME/dbs目录下的所有文件(除了与ASM相关的)。因此必须完成下列步骤: 1)在命令提示符中,设置oracle_sid环境变量为+ASM实例: # export oracle_sid=+ASM 2)启动SQL*Plus并以sys用户连接到自动存储管理+ASM实例: # sqlplus / as sysdba 3)使用下列命令来确定是否有数据库实例正在使用自动存储管理实例+ASM: SQL>select instance_name from v$asm_client; 该命令结果列出所有正在运行并
rac安装注意事项;window2003+vmware
rac 安装注意事项配置host文件#public10.0.10.131 rac0110.0.10.132 rac02#private192.168.0.10 rac01-priv192.168.0.20 rac02-priv#vip10.0.10.133 viprac0110.0.10.134 viprac021、清除隐藏的网卡set devmgr_show_nonpresent_devices=1devmgmt.msc2、打开自动装载硬盘C:> diskpartDISKPART> automount enableDISKPART> exitC:>3、共享磁盘;clone rac02的时候,注意要删除原来的硬盘,再add harddisk;注意要添加 exist的硬盘;不要create4、vipca报错,需要手工执行vipca脚本cd c:oracleproduct10.2.0cr
rac环境 asmcmd用法;首先设置oracle_home oracle_sid(asm实例)
C:Documents and SettingsAdministrator>asmcmd"asmcmd: the environment variable ORACLE_HOME is not set."C:Documents and SettingsAdministrator>set oracle_home=c:oracleproduct10.2.0db_1C:Documents and SettingsAdministrator>set oracle_sid=+asm1C:Documents and SettingsAdministrator>asmcmdASMCMD> help asmcmd [-p] [command] The environment variables ORACLE_HOME and ORACLE_SID determine the instance to which the program connects, and ASMCMD establishes a
rac 管理 启动关闭数据库
db_name oracle节点 rac01 rac02实例名 oracle1 oracle2srvctl stop database -d oraclesrvctl stop asm -n rac01srvctl stop asm -n rac02srvctl stop nodeapps -n rac01srvctl stop nodeapps -n rac02srvctl start nodeapps -n rac01srvctl start nodeapps -n rac02srvctl start asm -n rac01srvctl start asm -n rac02srvctl start database -d oraclesrvctl start instance -d oracle -i oracle1srvctl start instance -d oracle -i oracle2srvctl status database -d oracle [@more@]