首页 文章

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

提问于
浏览
1

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

Edit 1

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

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

3 回答

  • 0

    可以使用 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

    嗯,在谷歌很容易找到 . 获取表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

  • 0

    在Toad中,查看Generate Schema Script窗口 . 您可以从Database | Export菜单中访问它 . 有很多选项可以包含/排除你想要的东西 .

相关问题