不认为国际劳工组织将有助于(它做的不仅仅是设置模块和行动和地方吗?登录的时间)作为凯德鲁将不得不修改数据库中的每个包和功能。
一种选择是对在数据库跟踪切换,
ALTER SYSTEM SET sql_trace = true SCOPE=MEMORY;
,并使用脚本命令来获取虽然警告执行的所有包名的唯一列表 - 这将产生大量的输出和非常快速地填充磁盘空间 - 您可能需要创建一个每天运行的程序文件,然后删除trc文件,然后将所有结果组合在一起以确定哪些文件被使用。
此外,您还需要确保跟踪文件大小没有限制,这可能会阻止它记录所有内容,并确保您有足够的磁盘空间,并且您对运行时不感兴趣,也可以将timed_statistics关闭减少日志记录的数量。
alter system set max_dump_file_size=unlimited;
alter system set timed_statistics=false;
如果我看着从Oracle跟踪创建的原始跟踪文件,每个应用程序特定的软件包通话过程调用看起来像这样
=====================
PARSING IN CURSOR #2 len=69 dep=0 uid=102 oct=47 lid=102 tim=1316845390611021 hv=273704950
ad='b0d4c728' sqlid='01qnrr4850tzq'
BEGIN REIM_MATCH_SQL.INIT_SUMMARY_MATCH(:1, :2, :3, :4, :5, :6); END;
END OF STMT
PARSE #2:c=0,e=0,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,plh=0,tim=1316845390611021
,所以你可以grep的包的列表中调用这样目录(您可能需要调整输出一点取决于操作系统您正在使用的情况下,TKPROF输出不同),福
find . -name "*.trc" -exec grep "BEGIN " {} \; | cut -d" " -f4 | cut -d"(" -f1 | sort -u > ~/called_procedures.txt
这不工作因为它们可以在SQL语句中调用,但我认为对于过程而言,它应该没问题。这将在您的主目录中生成一个文件,其中包含您启用跟踪后运行的过程调用的唯一列表。
我在包含9818个跟踪文件(总计19GB磁盘空间)的目录上执行了这个操作,并且在运行带有2个内核和12GB内存的Oracle Enterprise Linux 5的测试盒上花费了10分钟 - 这些跟踪文件仅来自重复测试运行一个程序,这样您就可以想象如果生成机器中的所有内容都会生成这些程序将会多快。
然后你可以从sqlplus中得到的数据库中的所有pacakges /程序列表中特定的模式你有兴趣
set heading off
set trimspool on
set pagesize 0
set feedback off
spool all_procedures.txt
SELECT DISTINCT p.object_name||'.'||p.procedure_name
FROM all_procedures p
JOIN all_objects o ON (o.owner = p.owner AND o.object_name = p.object_name AND o.object_type =
where p.owner='&owner'
order by 1
spool off
终于做两者的差异来获得候选人
名单
diff all_procedures.txt called_procedures.txt
不要忘记关掉跟踪,当你完成
ALTER SYSTEM SET sql_trace = false SCOPE=MEMORY;
另外,您需要小心一些程序,这些程序可能只在某些时段(如月末或年终)运行 - 它们可能看起来并未被使用,但您无法确定,除非每个业务流程在监控期间完成。
希望有所帮助。
非常感谢 - 问题的主要部分将在解析中。这些调用没有以任何特殊方式标记为过程调用(它们看起来与记录的每个其他语句非常相似),所以它将确保正则表达式是准确的,然后在做任何该过程之前进行双重检查有问题的话不叫。有问题的应用程序是一个相当轻微使用的Web应用程序,我可以采取措施卸载跟踪文件。 –
在我目前可以访问的跟踪文件中,程序始终以BEGIN开头的行记录,所以“^ BEGIN”(注意空间也一样)应该没问题,尽管您需要更大的跟踪文件的样本量来确保情况总是如此。祝你好运 –
我检查了我迄今为止所取得的成绩,看起来他们确实拥有BEGIN,所以这应该是一个很好的起点。很明显,当一个例程被确定为删除的候选人时,我可以在代码和跟踪中完整搜索其名称,并获得更高的置信度。 –