误将对象创建在system表空间中

昨天一位同事在执行创建数据库全量对象脚本时,在sys用户下执行了,那些本来应该在应用用户下创建的对象,不小心创建在了sys用户下。由于创建的对象是一个脚本执行的,里面有近1500个对象,要是一个一个删除,那是不可能了。

由于测试部的同事急着要用,先在应用用户下重新把创建数据库对象的全量脚本再次执行了一次,system表空间下的那些对象后续再说……

今天趁着有时间,上去清理了一下那些对象:

1.创建一个临时表,里面的内容是哪些对象是在sys下,且是昨天创建的对象:

2.创建另一个临时表,里面的内容是哪些对象是昨天在应用用户下建立的:

3.生成动态sql,这些对象是在应用用户下存在的,且也在sys用户下存在的——即取交集。

4.执行上述生成的sql两到三次即可。(需要执行2~3次是因为有些对象有外键约束,第一次无法删除,要先删除外键的对象)

相关文章

4条评论

  1. 怎么不用alter table xx move tablespace yy、alter index tt rebuild table space yy做呢

  2. The scripts for create both tables and indexes in the user’s default tablespace?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据