【问题标题】:Error during export dump file oracle using sql developer Version Version 18.1.0.095 Build 095.1630使用 sql developer Version 18.1.0.095 Build 095.1630 导出转储文件 oracle 期间出错
【发布时间】:2019-02-09 06:05:21
【问题描述】:

我想导出转储文件 DDL 我的数据库(Oralce 数据库版本 11.2.0.4)。我创建了用户并授予了权限(sysdba)。我使用上面的用户连接到数据库,我选择查看 --> DBA --> 数据泵 --> 数据泵导出向导 --> 选择上面的连接 --> 并警告错误“无法将数据泵用作 sys。”。

【问题讨论】:

  • 错误很明显:不要使用SYS帐户
  • 我创建新用户并授予 sysdba 权限而不是 sys 用户
  • 请管理员回答我的问题!

标签: oracle oracle11g oracle-sqldeveloper


【解决方案1】:

关于 SYS 有一个有趣的地方,它不能使用 SERIALIZABLE 事务。这也适用于作为 SYSDBA 连接的用户。 Find out more.

SERIALIZABLE 隔离级别意味着事务中的所有语句都是读取一致的。 Oracle 的默认值是 READ COMMITTED,它适用于语句级别。不同之处在于:如果我们在 READ COMMITTED 隔离级别下运行select * from T1,然后运行select * from T2,那么我们将在查询T1 时将任何更改提交给T2。也就是说,T1T2 的结果集都是一致的记录集,但是如果我们反过来运行查询,我们可能会看到不同的结果。然而,在 SERIALIZABLE 下,结果集与事务的开始是一致的。不管我们查询表的顺序是什么,结果都是稳定的。

您可以了解为什么这对导出很重要。整个导出表集必须一致,以保证后续导入的关系完整性。我们不想导出子表,其中的记录依赖于导出后添加到父表的记录。 (旧的 Export 实用程序允许我们设置 consistency=N - 实际上这是默认设置!- 但 Data Pump 可以保护我们免受自己的伤害)。

这就是我们不能以 SYS 或 SYSDBA 用户身份运行导出的原因。幸运的是,有一个简单的解决方案:撤销您的用户的 SYSDBA 并授予它DATAPUMP_EXP_FULL_DATABASEDATAPUMP_IMP_FULL_DATABASE 角色。 [Find out more][2].

【讨论】:

  • 我找到了我的问题的答案。很容易制作
  • 我授予了 DATAPUMP_EXP_FULL_DATABASE 和 DATAPUMP_IMP_FULL_DATABASE 但它不会生成数据泵,我必须将 dba 授予用户。
【解决方案2】:

我找到了问题的答案: - 登录时我们选择默认角色

  • 我们需要向用户授予 dba 权限 例如:

    将 dba 授予 vinhhc_vsc;

【讨论】:

  • 如果您创建一个用户只是为了进行导出和导入,最好只明确授予所需的权限。但如果你想要一个普通的管理员用户,那就继续吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 2023-01-27
  • 2011-02-02
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多