为Oracle存储过程依赖关系图生成DDL

时间:2014-10-30 18:32:47

标签: oracle stored-procedures oracle-sqldeveloper toad

使用TOAD我知道我可以使用模式浏览器查看存储过程的依赖关系(使用)图。而且,Oracle实用程序deptree_fill可以执行类似的操作。我想要做的是将所有存储过程,函数和表定义DLL编写成一个文件,我可以用它在另一个数据库中重新创建这些对象。是否有用于此目的的工具或现有脚本?我自己的搜索还没有找到解决方案。在我的特定情况下,存储过程使用了十几个其他过程,一些函数和二十个表。

修改1

也许我原来的问题不明确。我正在寻找的东西将采取我感兴趣的存储过程并将其及其所有依赖图编入一个或多个文件。

我正在处理的模式中有数百个对象,依赖图中有大约50个对象。因此,如果我能避免,我不想在TOAD中挖掘大型列表或自己编写Oracle脚本。

3 个答案:

答案 0 :(得分:1)

可以使用dbms_metadata包提取所有来源。

获取表格的来源:

select dbms_metadata.get_ddl('TABLE', 'SOME_TABLE')
from dual;

获取存储过程的来源:

select dbms_metadata.get_ddl('PROCEDURE', 'SOME_PROC')
from dual;

使用它可以创建一个SQL脚本来提取所有内容,然后将结果假脱机到文件中。

有关dbms_metadata中各种功能的更多详细信息,请参阅手册:

http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_metada.htm#i1015856

答案 1 :(得分:0)

嗯,在谷歌很容易找到。 获取表格DDL:How to get Oracle create table statement in SQL*Plus

存储过程代码可以在表USER_SOURCE中找到。

此外,要将架构导出到另一个DB,您可以使用oracle实用程序:http://docs.oracle.com/cd/B28359_01/server.111/b28319/exp_imp.htm#g1070082

答案 2 :(得分:0)

在Toad中,请参阅“生成架构脚本”窗口。您可以从Database | Export菜单中访问它。有很多选项可以包含/排除你想要的东西。