我有一个应用程序和多个环境(开发,测试和生产)的数据库。我想使用 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;
尽管如此,该脚本还是通过删除所有对象来清理架构。我想保留结构和对象,但只清空内容。
能否请您帮我如何清洁不同的对象而不删除它们并再次导入?
提前感谢您的帮助。
塞巴斯蒂安