Skip to content

特定对象改写

对系统中的序列值、表和视图,可以使用虚谷数据库数据迁移工具进行迁移。如果还用到了自定义类型、存储过程、函数、触发器等,需要导出源端数据库上的定义,手动进行等价改写。

对于需要的对象ddl,可以使用管理器将其导出为SQL文件,经过人工改写后,再导入到虚谷数据库中运行。

  • 使用sqldeveloper管理器导出

    1. 在工具选项栏中选择“数据库导出”。
    2. 勾选“导出DDL”,并选择源库Oracle作为连接,修改导出文件路径及文件名,单击“下一步”。
    3. 勾选需要导出的对象,然后单击“下一步”。
    4. 最后单击“下一步”或者“完成”,完成对象dll导出。
  • 在SQLPlus中使用Oracle自带系统包DBMS_METADATA.GET_DDL导出指定对象
    DBMS_METADATA.GET_DDL的第一个参数为对象类型名,第二个为对象名,第三个为所属模式名。

    -- 导出TEST模式下所有触发器的DDL到默认目录下的triggers.sql中
    set pagesize 0
    set long 90000
    set feedback off
    set echo off
    -- 下列spool后面为导出的路径,不设置,默认在Oracle数据库的bin目录下
    spool triggers.sql
    select DBMS_METADATA.GET_DDL('TRIGGER',u.object_name,'TEST') from all_objects u where owner='TEST' and object_type = 'TRIGGER';
    spool off;
    -- 导出TEST模式下所有存储过程的DDL到默认目录下的procedures.sql中
    set pagesize 0
    set long 90000
    set feedback off
    set echo off
    -- 下列spool指定导出的路径,如不设置,则默认导出到Oracle数据库的bin目录下
    spool procedures.sql
    select DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name,'TEST') from all_objects u where owner='TEST' and object_type = 'PROCEDURE';
    spool off;
    -- 导出TEST模式下所有存储函数的DDL到默认目录下的functions.sql中
    set pagesize 0
    set long 90000
    set feedback off
    set echo off
    -- 下列spool指定导出的路径,如不设置,则默认导出到Oracle数据库的bin目录下
    spool functions.sql
    select DBMS_METADATA.GET_DDL('FUNCTION',u.object_name,'TEST') from all_objects u where owner='TEST' and object_type = 'FUNCTION ';
    spool off;
  • 通过系统包的方法可以获得所有对象的DDL