我最近将笔记本电脑从磁盘驱动器上的旧版Ubuntu升级到固态硬盘上的Linux Mint 18.1。此升级涉及重新安装Oracle 11g(11.2.0.2.0),我从11g Express Edition Download Page下载了该文件。
在升级之后,我开始遇到一些严重的性能问题,一些PL / SQL脚本曾经在旧的Oracle安装上运行得很好。例如,以下脚本用于运行大约20秒(并在旧安装上继续执行),但在新安装上运行大约需要90秒。
prompt p_revoke_user_perms
set serveroutput on size unlimited
declare
-- Variables ----------------------------------------------------------------
l_from_data varchar2(30) := upper('&1');
l_to_application varchar2(30) := upper('&2');
l_cmd varchar2(2000);
begin
dbms_output.put_line('BEGIN SCRIPT');
for obj in
(
select distinct table_name from all_tab_privs
where table_schema = l_from_data
and grantee = l_to_application
)
loop
l_cmd :=
'REVOKE ALL ON '
|| l_from_data
|| '.'
|| '"' || obj.table_name || '"'
|| ' FROM '
|| l_to_application;
dbms_output.put_line(' before: ' || to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff'));
execute immediate l_cmd;
dbms_output.put_line(' after: ' || to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff'));
end loop;
dbms_output.put_line('END SCRIPT');
end;
/
show errors
exit;
我有什么选择来诊断这个问题?是否有可能找出花费的时间? Oracle是否可以打印一些分析信息,以便我比较旧安装和新安装之间的时间安排?
我以前从来没有用Oracle解决这样的问题,所以我真的不知道从哪里开始。任何想法都将不胜感激。
UPDATE:完成启用DBMS_PROFILER的步骤,然后从我的问题脚本运行它后,问题就神奇地消失了。正如预期的那样,该脚本再次运行需要20秒。我不知道是什么修理它:(。
更新2:几天后,问题又回来了。所以我仍然感谢进一步的故障排除建议。