ORACLE11.2.0.3中访问ALL_SYNONYMS导致ORACLE CPU100%

原创 2012年03月27日 16:09:07
以前写过一篇文章关于《PL/SQL Developer工具优化》 提到过在Oracle 11.2.0.3.0

对all_synonyms的访问会导致PL/SQL Developer变得非常慢,观察oracle主机的cpu会

发现有两颗cpu使用率到100%,退出PL/SQL Developer后,cpu恢复正常。


详见:http://blog.csdn.net/lwei_998/article/details/7038001


通过禁用PL/SQL Developer的“Describe context”功能,临时解决了这个问题。

现在可以通过重建ALL_SYNONYMS彻底解决这个问题了

ALL_SYNONYMS视图的创建脚本位于$ORACLE_HOME/rdbms/admin/cdcore.sql


修正后的ALL_SYNONYMS创建脚本:  

create or replace view ALL_SYNONYMS
(OWNER, SYNONYM_NAME, TABLE_OWNER, TABLE_NAME, DB_LINK)
as
SELECT U.NAME, O.NAME, S.OWNER, S.NAME, S.NODE
  FROM SYS.USER$ U, SYS.SYN$ S, SYS."_CURRENT_EDITION_OBJ" O
 WHERE O.OBJ# = S.OBJ#
   AND O.TYPE# = 5
   AND O.OWNER# = U.USER#
   AND (O.OWNER# IN (USERENV('SCHEMAID'), 1 /* PUBLIC */
       ) OR /* local object, and user has system privileges */
       (S.NODE IS NULL /* don't know accessibility if syn is for db link */
         AND EXISTS (SELECT NULL
                        FROM V$ENABLEDPRIVS
                       WHERE PRIV_NUMBER IN (-45 /* LOCK ANY TABLE */
                             , -47 /* SELECT ANY TABLE */
                             , -48 /* INSERT ANY TABLE */
                             , -49 /* UPDATE ANY TABLE */
                             , -50 /* DELETE ANY TABLE */
                             ))) OR /* user has any privs on base object in local database */
        EXISTS
        (SELECT NULL
           FROM SYS.OBJAUTH$ BA, SYS."_CURRENT_EDITION_OBJ" BO, SYS.USER$ BU
          WHERE S.NODE IS NULL /* don't know accessibility if syn for db link */
            AND BU.NAME = S.OWNER
            AND BO.NAME = S.NAME
            AND BU.USER# = BO.OWNER#
            AND BA.OBJ# = BO.OBJ#
            AND (BA.GRANTEE# IN (SELECT KZSROROL FROM X$KZSRO) OR
                BA.GRANTOR# = USERENV('SCHEMAID'))))
UNION
SELECT U.NAME, O.NAME, S.OWNER, S.NAME, S.NODE
  FROM SYS.USER$ U,
       SYS.SYN$ S,
       SYS."_CURRENT_EDITION_OBJ" O,
       (SELECT S.SYN_ID
          FROM (SELECT S.OBJ# SYN_ID, BO.OBJ# BASE_SYN_ID
                  FROM SYS.SYN$                   S,
                       SYS."_CURRENT_EDITION_OBJ" BO,
                       SYS.USER$                  BU
                 WHERE S.OWNER = BU.NAME
                   AND BU.USER# = BO.OWNER#
                   AND S.NAME = BO.NAME
                   AND BO.TYPE# = 5) S
         START WITH EXISTS (SELECT NULL
                       FROM SYS."_ALL_SYNONYMS_FOR_AUTH_OBJECTS" SA
                      WHERE S.BASE_SYN_ID = SA.SYN_ID)
        CONNECT BY NOCYCLE PRIOR S.SYN_ID = S.BASE_SYN_ID) ST
 WHERE O.OBJ# = S.OBJ#
   AND O.TYPE# = 5
   AND O.OWNER# = U.USER#
   AND O.OBJ# = ST.SYN_ID
   AND S.OBJ# = ST.SYN_ID

   
参考【MOS】[ID 1242844.1]
Selects Against ALL_SYNONYMS Very Slow in 11.2.0.1. and 11.2.0.2. [ID 1242844.1]  

oracle10G中ALL_SYNONYMS视图优化

      前一段时间客户硬软件同事升级,oracle从9i升到10g,服务器在正常运行3个月余后经受不住压力连崩数次.可怜我们这些供应商啊,原程序翻阅数边、数据库进行分析、守在服务器旁异常跟踪......
  • cyyno1
  • cyyno1
  • 2008年03月13日 14:22
  • 655

ORACLE 11G下ALL_SYNONYMS对系统系能影响调优

一个朋友生产库缓慢要帮忙看下一个数据库 数据库版本是11.2.0.1.0 生成AWR报告显示 DB Name DB Id Instance Inst num Startup Time Rel...
  • u012076336
  • u012076336
  • 2013年12月05日 15:26
  • 1269

PB开发的应用程序自动发出对sys.ALL_SYNONYMS查询的问题。

PB开发的应用程序自动发出对sys.ALL_SYNONYMS查询的问题。
  • msdnchina
  • msdnchina
  • 2015年11月07日 21:02
  • 835

ORACLE11.2.0.3中访问ALL_SYNONYMS导致ORACLE CPU100%

以前写过一篇文章关于《PL/SQL Developer工具优化》 提到过在Oracle 11.2.0.3.0 中 对all_synonyms的访问会导致PL/SQL Developer变得非常慢...
  • lwei_998
  • lwei_998
  • 2012年03月27日 16:09
  • 1825

Oracle 常用系统表

  • 2010年09月02日 16:02
  • 2KB
  • 下载

Java Nio注意事项

Selector  :   public abstract class Selectorextends Object SelectableChannel 对象的多路复用器。 可...
  • wangxi969696
  • wangxi969696
  • 2012年03月14日 16:20
  • 1933

Oracle进程导致CPU 100%的具体解决步骤

Oracle进程导致CPU 100%解决步骤   1:检查系统   sar -u 5 5      2: 看谁在用CPU   ...
  • xyz846
  • xyz846
  • 2011年10月11日 14:59
  • 1426

同义词信息的查询

 同义词作为一种数据库对象,它的相关信息被存储在数据字典中。与同义词有关的数据字典有三个:user_sysnonyms、all_synonyms、dba_synonyms。 其中在数据字典...
  • cuiyan1982
  • cuiyan1982
  • 2015年08月12日 11:01
  • 531

Oracle执行计划跟踪样例

SQL> EXPLAIN PLAN FOR select s.synonym_name object_name, o.object_type from all_synonyms s, sy...
  • p6620582
  • p6620582
  • 2017年07月03日 11:52
  • 157

windows核心编程心解--进程相关

总述,系统如何管理正在运行的所有应用程序。 1、进程解释: 正在运行的一个程序的一个实例定义为进程。 进程一般包含两部分: *一个内核对象,操作系统用它来管理进程,同时也是操作系统保存进程统计...
  • ghevinn
  • ghevinn
  • 2012年11月21日 16:19
  • 1306
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE11.2.0.3中访问ALL_SYNONYMS导致ORACLE CPU100%
举报原因:
原因补充:

(最多只允许输入30个字)