我想从 Oracle 实例中删除所有实体。我想删除所有表、用户、索引等,就像它是一个新创建的实例一样。结果应该看起来,或者至少从客户端的角度来看非常接近,就好像我已经完全删除然后重新安装了具有相同设置的实例。
通过完全擦除/重新安装来执行此操作很慢,并且不容易自动化。我正在寻找更好的选择,但如果没有的话,这是一个可能的解决方案。
删除模式是不够的,因为一些实体仍然保留在原处(例如,用户)。
有没有一种简单的方法可以放下所有东西,达到最初的清洁和清空状态,但更快?
我想从 Oracle 实例中删除所有实体。我想删除所有表、用户、索引等,就像它是一个新创建的实例一样。结果应该看起来,或者至少从客户端的角度来看非常接近,就好像我已经完全删除然后重新安装了具有相同设置的实例。
通过完全擦除/重新安装来执行此操作很慢,并且不容易自动化。我正在寻找更好的选择,但如果没有的话,这是一个可能的解决方案。
删除模式是不够的,因为一些实体仍然保留在原处(例如,用户)。
有没有一种简单的方法可以放下所有东西,达到最初的清洁和清空状态,但更快?
除了用户数据之外,数据库中还有很多东西,检查所有这些东西需要相当长的时间。还有一些部分根本不应该被删除,例如使用功能的历史记录(用于许可证审核)。
当然,您可以尝试检查所有非默认配置或重新运行目录脚本(但这有什么意义呢?创建一个新数据库就是这样做的)。根据您选择的组件,它更容易在 15-30 分钟内放下和重新创建。
PS:删除和重新创建数据库不涉及重新安装。
在 Oracle 中,模式通常链接到用户。因此,如果您删除用户并指定
CASCADE
参数,则与该用户相关的所有对象都将被删除。您可以使用以下查询查询 users 表:
这将为不是由系统 (Oracle) 创建的用户生成一个语句列表,并且在执行时将删除所有用户及其相关对象。例子:
您将得到一个非常干净的 Oracle 实例。
有些对象将由 Oracle 实例维护,可能需要进一步梳理才能删除。
参考:DROP USER(Oracle | 数据库 SQL 语言参考)
对于 Oracle 12c+,我建议您删除 PDB 并重新创建它。