数据库性能问题解决过程1例子
接到系统维护商开发人员的报障,称月初始化模块运行速度变得很慢,平常需要2个小时就可以完成的工作,目前变成2天都无法完成(根据业务系统运行进度条判断)。[@more@]接到报障,开始进行数据库检查,本系统数据库是1OG RAC(10.2.0.5),跑在IBM AIX 6.1上,两台主机分别称为rac1,rac2吧。报障的时候,开发人员说慢的业务是跑在rac1节点上. 在rac1上检查系统报错,没有发现问题; 在rac1上做了一个awr报告,也没有发现什么问题。开发商反映是程序在一些SQL语句上运行很慢,分析了执行计划,发现没有走索引。对SQL涉及的表进行了分析,打开autotrace,
dba_free_space查询速度慢问题解决
查询dba_free_space视图速度很慢的问题解决 在一次数据库巡检过程中,想查询当前库各个表空间的剩余空间情况,执行下面的SQL语句,很长时间没有结果出来(几个小时)SQL>select tablespace_name,sum(bytes/1024/1024) from dba_free_space group by tablespace_name;[@more@] 在网上搜索了一下,有文章提到可能是回收站的对象太多导致的. 于是检查回收站的情况,果然是这个原因,检查的结果如下:SQL>select count(1) from dba_recyclebin;561000 鉴于当前库是一个数据仓库类型的数据库,所以手工关闭了垃圾回收站选项(OLTP数据库
ORA-01775无法查看SQL执行计划的问题的解决方案
一. 问题描述在SQLPLUS 里面想打开sql的执行计划的显示,结果报错,如下:SQL> set autot traceonly exp;SQL> select * from t where object_id=2345;ERROR:ORA-01775: looping chain of synonymsSP2-0612: Error generating AUTOTRACE EXPLAIN report[@more@]二. 问题分析这个问题主要是执行计划的一些表和对象需要建立,同时需要赋一些权限给需要看执行计划的数据库用户三. 问题解决1.创建执行计划的表和同义词SQL> conn system/oracleConnected.SQL> @?/rdbms/admin/utlxplanTable created.SQL> grant all on plan_table to
SQL 语句调优_减少或者避免笛卡尔乘积的发生
通过AWRPT的报告,发现了一个SQL 语句消耗CPU 资源比较厉害,而且这个SQL语句是一个核心的SQL 语句,每天被执行很多次。SQL 语句如下:sql_id=9bukprkb82k31SELECT * FROM PUB_MENU T WHERE ((T.MENU_STATE = 'Y' AND (T.MENU_ID IN (SELECT DISTINCT TC.MENU_ID FROM PUB_MENU TC START WITH TC.MENU_ID IN (SELECT DISTINCT TA.PARENT_MENU_ID FROM PUB_PAGE TB, PUB_MENU TA WHERE ( TB.NEED_ASSIGN = 0 OR EXISTS (SELECT 1 FROM PUB_ROLE_USER TB1, PUB_PAGE_OF_ROLE TB2 WHERE TB1.ROLE_ID = TB2.ROLE_ID AND TB2.PAGE_ID = TB.PAGE