我目前正在使用impdp
命令在RDS Oracle 12C实例中导入转储文件。
在此之前,需要创建少数用户&授予他们所需的特权。
我在其他非rds数据库中使用以下语句。
GRANT UNLIMITED TABLESPACE TO "USERNAME"
GRANT "RESOURCE" TO "USERNAME"
GRANT "CONNECT" TO "USERNAME"
GRANT "EXECUTE_CATALOG_ROLE" TO "USERNAME"
当我在导入之前运行这些命令时,这些命令会返回grant succeeded
。
现在,当我运行impdp
时,我在日志中遇到以下错误:
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
ORA-31685: Object type SYSTEM_GRANT:"USRNAME" failed due to insufficient privileges.
Failing sql is:
GRANT UNLIMITED TABLESPACE TO "USERNAME"
ORA-39083: Object type ROLE_GRANT failed to create with error:
ORA-01924: role 'CONNECT' not granted or does not exist
Failing sql is:
GRANT "CONNECT" TO "USERNAME"
同样适用于其他特权。
我正在使用在启动实例时创建的admin
用户运行这些命令。
我已经看到在AWS RDS中有不同的授权方式on this link
如何将其映射到我在此尝试实现的目标?
答案 0 :(得分:0)
我建议你不要使用RESOURCE和CONNECT角色。这些在20世纪90年代很流行,因为它们包含了人们可能需要的最常见的特权。但是,最佳做法表示您只应授予特定用户所需的权限。
现在CONNECT只包含CREATE SESSION。 RESOURCE包含几个CREATE 某些特权(表,过程,触发器......)(查询DBA_SYS_PRIVS以查看它们)。你真的需要CREATE CLUSTER吗?如果没有,那么,不要授予它。
尝试单独添加这些权限:
grant create session to username;
grant create table to username;
grant unlimited tablespace to username;
grant *whichever additional privilege USERNAME requires*;
最后,如果你没有阅读它,这是Importing Data into Oracle on Amazon RDS文档,看一看;也许你会发现一些有用的东西。
答案 1 :(得分:0)
您的案例涉及一个非常特殊的情况,即Oracle数据库对用户的许可。要授予“现有用户”这样的特权(QUOTA UNLIMITED),必须使用以下命令: 更改用户xxxx_userName配额yyyy_tablespaceName不受限制;