我想将转储文件DDL导出到我的数据库(Oralce数据库版本11.2.0.4)。我创建了用户并授予了权限(sysdba)。我使用上面的用户连接到数据库,选择查看-> DBA->数据泵->数据泵导出向导->选择上面的连接->并且它警告错误“无法将数据泵用作sys”。
答案 0 :(得分:4)
关于SYS,这很有趣,它不能使用SERIALIZABLE事务。这也适用于以SYSDBA连接的用户。 Find out more。
SERIALIZABLE隔离级别意味着事务中的所有语句均读取一致。 Oracle的默认值为READ COMMITTED,它适用于语句级别。区别在于:如果在READ COMMITTED隔离级别下运行select * from T1
,然后运行select * from T2
,则在查询T2
时,将提交对T1
的所有更改。也就是说,T1
和T2
的结果集都是一致的记录集,但是如果以相反的方式运行查询,我们可能会看到不同的结果。而在SERIALIZABLE下,结果集与事务开始一致。无论查询表的顺序如何,结果都是稳定的。
您可以看到为什么这对于导出很重要。整个导出表集必须一致,以确保后续导入的关系完整性。我们不希望导出带有记录的子表,该记录取决于导出后添加到父表中的记录。 (旧的Export实用程序允许我们设置consistency=N
-的确是默认设置!-但Data Pump可以保护我们免受自身侵害。)
这就是为什么我们不能以SYS或SYSDBA用户身份运行导出。幸运的是,有一个简单的解决方案:从您的用户撤消SYSDBA并授予其DATAPUMP_EXP_FULL_DATABASE
和DATAPUMP_IMP_FULL_DATABASE
角色。 [Find out more][2]
。
答案 1 :(得分:1)
我找到了我的问题的答案: -登录时,我们选择“角色默认设置”
我们需要向用户授予dba权限 例如:
将dba授予vinhhc_vsc;