第1页共32页Oracle数据库日常维护FAQ第2页共32页目录1.Session数目的问题.................................................................................................................31.1.问题现象.......................................................................................................................31.2.问题成因和预防措施...................................................................................................31.3.应急解决方法...............................................................................................................31.3.1.使用sar–v命令在操作系统上观察打开的文件数:...................................31.3.2.在数据库中通过v$resource_limit视图观察当前连接情况..........................41.3.3.使用以下脚本找出需要调整的应用...............................................................51.3.4.调整应用,以平衡和解决连接问题...............................................................51.4.其他需要注意的问题...................................................................................................62.锁表的问题...............................................................................................................................62.1.问题成因和预防措施...................................................................................................62.2.解决方法.......................................................................................................................72.3.紧急解决方法.............................................................................................................103.SQL语句的绑定变量问题....................................................................................................104.OS的进程号和Oraclesession的对应关系..........................................................................124.1.根据OS的进程号找到Oraclesession的信息.........................................................124.2.根据OracleSID找到对应的OS进程信息..............................................................134.3.找出当前session的OS进程信息............................................................................145.找出最耗资源的sql...............................................................................................................155.1.根据操作系统PID找到sql语句..............................................................................155.2.根据数据库SID找到sql语句..................................................................................165.3.根据hashvalue找到sql语句...................................................................................166.找出当前用户的某个对象的大小.........................................................................................177.查看用户的确省表空间和临时表空间.................................................................................178.查看数据库的参数.................................................................................................................189.查找和删除重复记录的例子.................................................................................................1910.表空间容量和使用.........................................................................................................2310.1.监控空间的使用.....................................................................................................2310.1.1.列出所有表空间对应的数据文件极其使用的空闲率.................................2310.1.2.列出表空间的使用空闲率.............................................................................2510.2.向现有表空间中添加数据文件(rawdevice)....................................................2610.2.1.找出所有的裸设备:ls/dev/vg_ora1/r*vg_ora1.....................................2610.2.2.创建一个临时表保存这些全部的裸设备名称(r开头的文件)...............2710.2.3.将上面的内容修改为类似于下面的内容,然后存入数据库:.................2710.2.4.找出数据库中所有已经使用过的裸设备.....................................................2810.2.5.将上面的内容修改为类似于下面的内容,然后存入数据库中:.............29第3页共32页1.Session数目的问题1.1.问题现象经常碰到的连接问题有以下几种:数据库使用RAC结构的系统,应用的连接时有偏斜很厉害的情况,如在数据库中观察到一个节点比另一个节点的连接数多上百个甚至更多;在操作系统中观察到一个节点的打开文件数比另一个节点的打开文件数多达上万个甚至更多,严重的还会导致文件表溢出。这样一来,资源不能合理的分配,造成一个节点资源匮乏,一个节点相对很轻闲。没有使用RAC结构的系统(单点数据库或者OS级别的failover系统),应用时有出现不能连接数据库的情况,报错超过最大连接数;在操作系统上观察到的是打开的最大文件数接近阀值(nfile),严重时还会到达阀值,从而造成文件表溢出。1.2.问题成因和预防措施上述问题的成因是多方面的,OS系统的参数设置不合理,数据库参数设置不合理,连接方式不合理,业务的增长造成连接数目的激增等等都有可能,他们是相互促进的,所以,一方面需要定期的根据业务的增长和现有系统资源的情况评估相关的OS参数(nfile,nprod等等),评估数据库参数(process,session等等)。另外在业务增长的时候,如新增Kernel,Admin,xPortal设备的时候,需要根据他们的配置连接数,协调考虑操作系统和数据库系统的相关参数。更长远的考虑,在使用RAC的系统中,有可能的话,可以修改应用的连接方式,一般来说,使用关闭LOAD_BALANCE(LOAD_BALANCE=no),开启FAILOVER(FAILOVER=on)的连接方式是相对传统和稳妥的连接方式,也是现在社会上使用RAC系统的普遍的连接方式。1.3.应急解决方法下面给出当发生连接数目问题的时候,紧急处理的方法(临时的方法):1.3.1.使用sar–v命令在操作系统上观察打开的文件数:oracle@cs_db02:/dbbaksar-v25HP-UXcs_db02B.11.11U9000/80011/29/0414:27:31text-szovproc-szovinod-szovfile-szov14:27:33N/AN/A1420/409602789/34816055420/634980第4页共32页14:27:35N/AN/A1420/409602789/34816055421/63498014:27:37N/AN/A1420/409602789/34816055423/63498014:27:39N/AN/A1420/409602789/34816055423/63498014:27:41N/AN/A1420/409602789/34816055423/634980oracle@cs_db02:/dbbak如果file-sz列的值距离阀值已经很接近的时候就需要处理,否则继续观察,以上面例子的为例,阀值为63498,当前打开的文件数在55423左右,这种情况下可以采用下面的方法紧急处理一下,如果当前值在50000以下,可以继续观察。1.3.2.在数据库中通过v$resource_limit视图观察当前连接情况SQLsetlinesize1000SQLselect*fromv$resource_limit;RESOURCE_NAMECURRENT_UTILIZATIONMAX_UTILIZATIONINITIAL_A