因此,根据我负责使我的数据库符合的标准,我们的数据库上不应安装任何未使用的 Oracle 组件。Oracle 版本多种多样。从阅读 Oracle 文档来看,似乎在创建数据库后无法卸载组件,而是不必在创建数据库时首先安装组件。在我之前创建这些数据库的人都没有这样做。
对生产造成最少干扰的最有效方法是什么?我(没有经验的)直觉是,必须创建一个只安装使用过的组件的并行数据库,将当前活动的生产数据库中的数据文件恢复到新数据库上,然后在生产中切换到新填充的数据库。
因此,根据我负责使我的数据库符合的标准,我们的数据库上不应安装任何未使用的 Oracle 组件。Oracle 版本多种多样。从阅读 Oracle 文档来看,似乎在创建数据库后无法卸载组件,而是不必在创建数据库时首先安装组件。在我之前创建这些数据库的人都没有这样做。
对生产造成最少干扰的最有效方法是什么?我(没有经验的)直觉是,必须创建一个只安装使用过的组件的并行数据库,将当前活动的生产数据库中的数据文件恢复到新数据库上,然后在生产中切换到新填充的数据库。
这根本不起作用,除非您指的是可传输表空间方法并且您打算恢复用户表空间,并且您使用不同的二进制文件创建新数据库而没有不必要的选项。
当然,您可以使用 TTS 来做到这一点。或导出/导入。这些方法需要停机时间。
或者您可以只从现有数据库中删除选项。如果您需要为此停机,这完全取决于您要删除的组件。
chopt
从版本 11.2(这是当前支持的最低版本)开始,您可以在二进制级别删除一些组件(这需要关闭数据库):印章工具
例如,禁用分区,关闭数据库,然后:
其他选项的删除通常包括运行 Oracle 提供的脚本和/或删除模式。
例如,要删除 APEX,您可以在常规(非 cdb)12.2 数据库中运行以下命令:
更多详细信息(参考 Oracle 员工的这篇博客文章,因为我无法在官方公共文档中找到所有这些很好地收集在一起的信息):
组件清理系列