AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 62771
Accepted
peterh
peterh
Asked: 2014-04-09 08:02:44 +0800 CST2014-04-09 08:02:44 +0800 CST 2014-04-09 08:02:44 +0800 CST

如何完全“重置”一个 Oracle 实例?

  • 772

我想从 Oracle 实例中删除所有实体。我想删除所有表、用户、索引等,就像它是一个新创建的实例一样。结果应该看起来,或者至少从客户端的角度来看非常接近,就好像我已经完全删除然后重新安装了具有相同设置的实例。

通过完全擦除/重新安装来执行此操作很慢,并且不容易自动化。我正在寻找更好的选择,但如果没有的话,这是一个可能的解决方案。

删除模式是不够的,因为一些实体仍然保留在原处(例如,用户)。

有没有一种简单的方法可以放下所有东西,达到最初的清洁和清空状态,但更快?

oracle
  • 3 3 个回答
  • 2621 Views

3 个回答

  • Voted
  1. Balazs Papp
    2014-04-09T08:30:29+08:002014-04-09T08:30:29+08:00

    除了用户数据之外,数据库中还有很多东西,检查所有这些东西需要相当长的时间。还有一些部分根本不应该被删除,例如使用功能的历史记录(用于许可证审核)。

    当然,您可以尝试检查所有非默认配置或重新运行目录脚本(但这有什么意义呢?创建一个新数据库就是这样做的)。根据您选择的组件,它更容易在 15-30 分钟内放下和重新创建。

    PS:删除和重新创建数据库不涉及重新安装。

    • 7
  2. Best Answer
    John K. N.
    2019-04-02T07:27:56+08:002019-04-02T07:27:56+08:00

    在 Oracle 中,模式通常链接到用户。因此,如果您删除用户并指定CASCADE参数,则与该用户相关的所有对象都将被删除。

    您可以使用以下查询查询 users 表:

    SELECT 'drop user ' || username || ' cascade;', oracle_maintained
    FROM dba_users 
    WHERE oracle_maintained = 'N';
    

    这将为不是由系统 (Oracle) 创建的用户生成一个语句列表,并且在执行时将删除所有用户及其相关对象。例子:

    您将得到一个非常干净的 Oracle 实例。

    有些对象将由 Oracle 实例维护,可能需要进一步梳理才能删除。

    指定CASCADE 以在删除用户之前删除用户架构中的所有对象。您必须指定此子句以删除其架构包含任何对象的用户。

    • 如果用户的模式包含表,则 Oracle 数据库会删除这些表并自动删除对其他模式中的表的任何引用完整性约束,这些表引用这些表上的主键和唯一键。

    • 如果此子句导致表被删除,那么数据库也会删除在这些表的列上创建的所有域索引并调用适当的删除例程。

      另请参阅:Oracle Database Data Cartridge Developer's Guide,了解有关这些例程的更多信息

    • Oracle 数据库使其他模式中的以下对象无效,但不会删除:

      • 已删除用户架构中对象的视图或同义词
      • 查询已删除用户架构中的对象的存储过程、函数或包
    • Oracle 数据库不会删除基于已删除用户模式中的表的其他模式中的物化视图。但是,由于基表不再存在,因此无法再刷新其他模式中的物化视图。

    • Oracle 数据库删除用户模式中的所有触发器。
    • Oracle 数据库不会删除用户创建的角色。

    参考:DROP USER(Oracle | 数据库 SQL 语言参考)

    • 3
  3. Michael Kutz
    2019-04-05T10:20:05+08:002019-04-05T10:20:05+08:00

    对于 Oracle 12c+,我建议您删除 PDB 并重新创建它。

    • 1

相关问题

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • ORDER BY 使用文本列的自定义优先级

  • 舒服的sqlplus界面?[关闭]

  • 如何在数据库中找到最新的 SQL 语句?

  • 如何使用正则表达式查询名称?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve