使用SQL Developer数据库复制工具之前清洗SQL模式

时间:2018-12-14 07:41:53

标签: sql database oracle oracle-sqldeveloper

我有一个应用程序和多个环境(开发,测试和生产)的数据库。我想使用 SQL Developer 中的数据库副本选项,以便从生产中检索数据并将其复制到开发中。因此,两种环境下的数据都将相同。

在该程序的先前版本中,所有程序均运行良好。但是,使用我们公司强加的新版本(SQL Developer 18.2),我在复制过程中遇到了多个错误,这些错误涉及序列,现有表,主键等不同对象。

因此,在使用该工具之前,我想使用脚本来清理数据库的对象,以查看问题是否得到解决。但是我不知道该怎么做。

我找到并更新了此脚本:

BEGIN
   FOR cur_rec IN (SELECT object_name, object_type
                     FROM user_objects
                    WHERE object_type IN
                             ('TABLE',
                              'VIEW',
                              'PACKAGE',
                              'PROCEDURE',
                              'FUNCTION',
                              'SEQUENCE',
                              'SYNONYM'
                             ))
   LOOP
      BEGIN
         IF cur_rec.object_type = 'TABLE'
         THEN
            EXECUTE IMMEDIATE    'DROP '
                              || cur_rec.object_type
                              || ' "'
                              || cur_rec.object_name
                              || '" CASCADE CONSTRAINTS';
         ELSE
            EXECUTE IMMEDIATE    'DROP '
                              || cur_rec.object_type
                              || ' "'
                              || cur_rec.object_name
                              || '"';
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            DBMS_OUTPUT.put_line (   'FAILED: DROP '
                                  || cur_rec.object_type
                                  || ' "'
                                  || cur_rec.object_name
                                  || '"'
                                 );
      END;
   END LOOP;
END;

尽管如此,该脚本还是通过删除所有对象来清理架构。我想保留结构和对象,但只清空内容。

能否请您帮我如何清洁不同的对象而不删除它们并再次导入?

提前感谢您的帮助。

塞巴斯蒂安

0 个答案:

没有答案