问题描述
亲爱的先生,
谢谢你的支持
我有Oracle 11g数据库服务器,它有2个双核处理器。这是非常关键的数据库,我们经常遇到性能问题。
我们注意到CPU利用率没有跨越5%,并且大多数处理器都没有使用 (4个处理器中有1个正在使用)。
请您建议如何利用所有处理器并提高11g数据库的性能。
谢谢你,
问候
苏巴拉奥·达萨里
谢谢你的支持
我有Oracle 11g数据库服务器,它有2个双核处理器。这是非常关键的数据库,我们经常遇到性能问题。
我们注意到CPU利用率没有跨越5%,并且大多数处理器都没有使用 (4个处理器中有1个正在使用)。
请您建议如何利用所有处理器并提高11g数据库的性能。
谢谢你,
问候
苏巴拉奥·达萨里
专家解答
如果应用程序运行缓慢,但您只使用5% 可用的CPU,则应用程序/数据库将花费大量时间做 “其他事情”。
这可能是其他的任何组合
-磁盘I/O
-网络
-阻止会话
-运行应用程序代码
-...
要弄清楚时间的去向,请配置您的应用程序!
你可以用SQL跟踪这样做:
然后使用TKPROF (或您选择的其他工具) 从数据库服务器获取跟踪文件。在以下位置阅读有关如何执行此操作的更多信息:
https://blogs.oracle.com/sql/how-to-create-an-execution-plan#tkprof
或者,如果你正在调用PL/SQL,你可以使用层次探查器:https://oracle-base.com/articles/11g/plsql-hierarchical-profiler-11gr1
一旦你有了这些配置文件,你就可以看到系统把所有时间都花在了哪里。没有这个,我们所能做的就是盲目猜测 (这可能是错误的)。
如果您需要帮助理解上述内容的输出,请在此处发布它们作为评论,我们将为您提供帮助。
这可能是其他的任何组合
-磁盘I/O
-网络
-阻止会话
-运行应用程序代码
-...
要弄清楚时间的去向,请配置您的应用程序!
你可以用SQL跟踪这样做:
alter session set tracefile_identifier = app_trace; exec sys.dbms_monitor.session_trace_enable ( session_id => :session, serial_num => :serial#, waits => true, binds => true ); ... capture execution details ... exec sys.dbms_monitor.session_trace_disable ( session_id => :session, serial_num => :serial# );
然后使用TKPROF (或您选择的其他工具) 从数据库服务器获取跟踪文件。在以下位置阅读有关如何执行此操作的更多信息:
https://blogs.oracle.com/sql/how-to-create-an-execution-plan#tkprof
或者,如果你正在调用PL/SQL,你可以使用层次探查器:https://oracle-base.com/articles/11g/plsql-hierarchical-profiler-11gr1
一旦你有了这些配置文件,你就可以看到系统把所有时间都花在了哪里。没有这个,我们所能做的就是盲目猜测 (这可能是错误的)。
如果您需要帮助理解上述内容的输出,请在此处发布它们作为评论,我们将为您提供帮助。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




