Oracle 性能优化——创建分区表
Oracle 性能优化——创建分区表[@more@]1、准备工作创建相应的表空间,使各分区放于不同的表空间上:SQL> conn / as sysdba已连接。SQL> create tablespace test01 datafile 'D:xtdbtest01.dbf' size 50m; 表空间已创建。 SQL> create tablespace test02 datafile 'D:xtdbtest02.dbf' size 50m; 表空间已创建。 SQL> create tablespace test03 datafile 'D:xtdbtest03.dbf' size 50m; 表空间已创建。 SQL> create tablespace test04 datafile 'D:xtdbtest04.dbf' size 100m; 表空间已创建。 为了进行对比,在表空间test04上
绑定变量窥测与执行计划
绑定变量窥测打乱执行计划[@more@]开发人员发过来一句sql及其执行计划和统计信息,该sql执行相当频繁,而且每次的逻辑读非常的高,对数据库性能产生较大的影响,叫我分析原因。通过查看其执行计划,发现其效率相当低,优化器预估的值与执行过程中实际值相关距大。通过进一步分析发现是由于三个原因造成的:一是错误使用嵌套循环;二是创建复合索引时字段顺序不恰当;三是sql语句使用绑定变量造成的,原因就在于绑定变量窥测。本文通过实验来探讨一下绑定变量窥测对执行计划的影响。版本信息:SQL> select * from v$version;BANNER-----
v$sql视图学习
v$sql视图学习[@more@]v$sql与子游标相关,与v$sql相关的关键信息是执行环境和执行计划。v$sql显示了共享SQL区中SQL的统计信息,每个子游标都包含一条记录。主要字段有:sql_id:SQL的标识符sql_text:sql的前1000个字符。executions:执行次数。disk_reads:子游标的disk read次数buffer_gets:子游标的buffer gets数量optimizer_mode:sql执行的优化器模式optimizer_cost:sql执行成本hash_value:在Library Cache中父游标的hash value值注意:executeions、disk_reads和buffer_gets这些字段的值是累计的。感兴趣的朋友可以简单的实验一下。
复制数据库--读书笔记
前段时间给一客户通过RMAN复制数据库搭建了data guard,这是《精通ORACLE.10G备份与恢复》一书中复制数据库一章的读书笔记,巩固一下基础知识,笔记中的例子来自于实验,与书中个别地方不一样,记录下来以作参考。[@more@]管理复制数据库17.1、复制数据库综述复制数据库是主数据库(产品数据库)的副本数据库或克隆数据库,既可以包含主数据库的全部数据文件,也可只包含主数据库的部分数据文件。1、复制数据库的作用在产品数据库运行的同时,复制数据库可以独立运行。具有如下作用:为应用开发小组提供用于编程和测试的模拟数据库;为经验
AIX 5L常用的二十个操作命令(四)完
AIX 5L常用的二十个操作命令(四)[@more@]16、显示进程信息:ps命令ps,得到当前系统中激活进程的相关信息。ps -u oracle:查询用户oracle的相关信息ps -ef |grep ora_:查询进程名中带ora_的进程信息ps -p 进程号:查询指定进程号的进程的相关信息ps -fu oracle:查看用户oracle相关进程的详细信息17、削减内存的系统模拟:rmssroot用户执行rmss命令,模拟系统内存减少状态下系统的性能状态。rmss -p:得到系统的实际内存rmss -c 2000:模拟内存为2000M,得到当前系统中激活进程的相关信息,/nmon:启动nmon来查看性能情况查看nmon对内存
ErrorStack错误跟踪与诊断工具的使用
ErrorStack错误跟踪与诊断[@more@]ErrorStack主要有以下4个级别0:仅转储错误栈1:转储错误栈和函数调用栈2:1 + processState3:2 + context area,会显示所有的cursors,重点显示当前cursorerrorstack可在实例级或会话级设置,也可在参数文件中配置,当设置的错误出现时启用跟踪。如下步骤使用errorstack:A、alter system(session) set events = '错误号 trace name errorstack forever, level 3';B、手工执行出错的代码,取得跟踪文件;C、关闭跟踪alter system(session) set events = '错误号 trace name errorstack off';D、以上操作
AIX 5L常用的二十个操作命令(三)
AIX 5L常用的二十个操作命令(三)[@more@]11、lsvg:检测逻辑卷状态,得到热点逻辑卷信息lsvg得到当前系统中已定义的vg,然后使用lvmstat激活逻辑卷统计,执行一次lvmstat命令,得到关于头五个最活跃的逻辑卷。lsvglvmstat -v rootvg -elvmstat -v rootvg -c 5停止对卷组rootvg的统计:lvmstat -v rootvg -d12、显示inode数:nchecklsfs命令显示当前系统中已定义的文件系统,然后用ncheck检查某文件系统中的inode:lsfsncheck -a /tmp则显示了/tmp下安装文件的inode数13、监视网络活动:netpmonnetpmon命令得到当前系统中网络活动和相关C
v$process视图学习
v$process视图学习[@more@]通过v$process与v$session,可以把操作系统和数据库系统联系起来,以下语句是从数据库到操作系统:select p.spid, s.sid, s.serial#, s.program from v$process, v$session swhere p.addr = s.paddr and s.sid = &sid;其中v$process的spid为操作系统的进程号。以下语句是从操作系统到数据库:以root身份登录操作系统,执行topas命令,可以看到相关操作系统任务,如果此时有Oracle服务器进程消耗过多资源,可以找到其进程号,通过进程号把v$process与v$session关联,可以找到此进程在数据库系统中正在执行的s
Oracle层次查询研究
Oracle层次查询研究[@more@]1、环境SQL> select * from v$version2 /BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64biPL/SQL Release 10.2.0.3.0 - ProductionCORE 10.2.0.3.0 ProductionTNS for HPUX: Version 10.2.0.3.0 - ProductionNLSRTL Version 10.2.0.3.0 - Production2、基础知识A、树形结构上图是一个虚拟的公司树形结构。层次结构与树形结构相同,如计算机的目录管理就是层次结构。根据上图建一张department表用于存储图1中的数据
AIX 5L常用的二十个操作命令(二)
AIX 5L常用的二十个操作命令(二)[@more@]6、lslpp:查看系统文件集、版本信息。lslpp -l | more7、lslv:显示逻辑卷、文件系统信息lslv hd1:查看系统中逻辑卷的属性、位置和状态。lslv -l hd1:查看逻辑卷的简要信息。8、lsps:查看页面空间属性lsps -a 查看系统中所有页面空间的属性、位置lsps -s 查看页面空间的使用率9、lsvg:查看系统卷组信息lsvglsvg -l rootvglsvg -p rootvg10、lspv:查看物理卷信息lspv -l hdisk0lspv -p hdisk0
局部分区索引的分区消除
局部分区索引的分区消除[@more@]分区消除行为:如果查询首先访问索引,是否能消除分区完全取决于查询中的谓词。SQL> create table test2 (a int,3 b int,4 data char(20)5 )6 partition by range(a)7 (partition part_1 values less than(2),8 partition part_2 values less than(3)9 )10 /表已创建。SQL> create index local_pre on test(a,b) local;索引已创建。SQL> create index local_nopre on test(b) local;索引已创建。SQL> insert into test2 select mod(rownum -1 ,2) +1, rownum, 'x'3 from all_objects;已创建112
AIX 5L常用的二十个操作命令(一)
AIX 5L常用的二十个操作命令[@more@]1、filemon:查看当前文件系统、逻辑卷等的文件IO情况以root用户执行:filemon -O all -o output.txt开始统计操作系统中热点文件的操作统计。在若干取样时间后,输入trcstop命令中断文件监视操作。打开output.txt,查看文件IO热点状态查看Most Active Files部分查看Most Active Segments部分,找到最活跃的段,可通过以下查询对其进一步分析:svmon -S segid查看最活跃的逻辑卷、物理卷部分2、iostat:以root用户执行:iostat 2 5以2秒为间隔,连续统计五次,统计系统IO,tty的IO,统计IO在物理磁盘上IO
v$lock视图学习
v$lock视图学习[@more@]给出了相应SID当前持有的锁与请求锁或闩的信息:addr字段,内存中被锁的对象的地址kaddr字段,lock的地址type字段,用户或系统锁类型。user type locks有3种:TM,TX,UL,system type locks有多种,常见的有:MR,RT,XR,TS等,系统锁持有的时间极其短暂。我们只关心TM,TX锁。当TM锁时,id1字段表示object_id;id2为0。当TX锁时,id1表示回滚段号码的十进制值,trunc(id1/power(2,16))代表了回滚段号。id2表示交换次数。 lmode字段,session持有的锁的模式,有6种:0 - none 1 - null (NULL) 2 - row-S (SS) 行共
共享游标
共享游标[@more@](1)父游标无法被共享的情形与父游标有关的关键信息是SQL语句的文本。多个SQL语句只有在它们的文本完全一样才可以共享同一个父游标。这里不考虑cursor_sharing参数。select * from t where object_id = 1000;select * FROM t where object_id = 1000;select * from t where object_id = 1000;select * from t WHERE object_id = 1000;视图v$sqlarea,可以确认系统创建了3个不同的父游标,其执行次数不同。SQL_ID SQL_TEXT EXECUTIONS------------- -------------------------------------------------- ----------8t5k20
选择性和基数
选择性和基数[@more@]选择性是一个介于0和1之间的值,代表被一个操作过虑的记录的比例。一个操作所返回的记录条数称为基数。cardinality = selectivity * num_rows其中num_rows为被处理的记录数。知道一个操作对应的选择性能够帮助确定哪条访问路径是最优访问路径。
找到长时间执行的oracle会话,查看其操作系统进程状态
找到长时间执行的oracle会话,查看其操作系统进程状态[@more@]1、查询系统中长时间执行的SQL操作,顺序排列:select sid, message from v$session_longops order by start_time;通过MESSAGE列,可以看到会话当前执行的状态。2、查询当前正在执行的SQL完成比率:select sid, opname, target_desc, sofar, totalwork, trunc(sofar/totalwork*100,2) || '%' as perworkfrom v$session_longops where sofar != totalwork;3、执行下面的查询,得到当前长时间操作执行的SQL任务分别是什么:select opname, target, to_char(start_time, 'yyyy-mm
v$session视图学习
此视图列出了每个当前session的session信息。[@more@]此视图列出了每个当前session的session信息。 通过v$session.paddr=v$process.addr与process相关,取得这些oracle进程对应的操作系统进程信息,例如: select p.spid, s.sid, s.serial#, s.program from v$process, v$session swhere p.addr = s.paddr and s.sid in (&sid); 通过v$session.taddr=v$transaction.addr跟transaction相关 通过lockwait字段可以查询当前正在等待的锁的相关信息:select * from v$lock where kaddr in ( select lockwait from v$ses
使用ipcs命令判断共享内存的使用情况
使用ipcs命令判断共享内存的使用情况[@more@]ipcs可以用来监控Oracle SGA的使用情况。ipcs命令显示了每个共享内存段的尺寸。如果没有足够的内存来容纳一个连续的内存段,共享内存就将建立在非连续的内存段中。在实例崩溃的情况下,可能会出现内存无法释放的问题。ipcrm可以清除这些段,ipcrm -m用于内存段,ipcrm -s用于信号段。ipcs -b让整个SGA处于一个单一的共享内存段,因为跟踪一个以上的段将需要额外的开销,段间来回切换也需要时间。在/etc/system文件中增加参数shmmax的设置,以增加单一共享内存段的最大尺寸。对于不同的平台,需