0

J'ai besoin de votre aide sérieuse ici! Je dois exécuter plusieurs requêtes d'exécution de subvention pour l'objet sys à l'un de mes utilisateurs.Exécuter la requête d'exécution d'exécution pour l'objet sys

grant execute on SYS.dbms_system to $(User); 
grant execute on SYS.dbms_flashback to $(User); 

Mais, comme ce que je sais, afin d'accorder des privilèges à objet sys pour Oracle RDS, il faut utiliser la procédure rdsadmin.rdsadmin_util.grant_sys_object pour atteindre.

Je construis ma nouvelle requête, comme suit:

begin 
    rdsadmin.rdsadmin_util.grant_sys_object('DBMS_SYSTEM', '$(User)'); 
end; 

Mais, je frappe une erreur,

SQL Error: ORA-20199: Error in rdsadmin_util.grant_sys_object.

ORA-20900: You do not have permission to grant: to SYS object: DBMS_SYSTEM ORA-06512: at "RDSADMIN.RDSADMIN_UTIL", line 234 ORA-20900:

You do not have permission to grant: to SYS object: DBMS_SYSTEM ORA-06512: at line 2

Quelqu'un a la moindre idée comment puis-je résoudre ce problème? S'il vous plaît aider!

+0

Exécutez-vous cette procédure sous l'utilisateur 'SYS'? – JSapkota

+1

Non. La raison en est que amazon rds verrouille l'utilisateur SYS. Cependant, j'ai l'utilisateur qui a le privilège d'effectuer une tâche commune DBA, s'il vous plaît se référer http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html –

+0

Selon le document de votre déclaration devrait être ressembler this- 'commencer rdsadmin.rdsadmin_util.grant_sys_object ( p_obj_name => 'DBMS_SYSTEM', p_grantee => 'USER', p_privilege => 'execute' ); fin; » Je pense que vous avez manqué le privilège voulu accorder à l'utilisateur. – JSapkota

Répondre

2

Supposons que vous ayez exécuté la procédure correctement et que vous ayez inclus le privilège execute dans l'appel. Cette erreur

ORA-20900: You do not have permission to grant: to SYS object: DBMS_SYSTEM 

signifie que vous n'avez pas l'autorisation suffisante d'accorder des privilèges sur DBMS_SYSTEM. Vous pouvez penser que vous avez ce privilège, mais vous ne le faites pas.

Deux explications possibles:

  • votre utilisateur subventionnaire ne dispose pas de son autorisation avec l'option GRANT et n'a pas la GRANT un rôle de puissance Privilege.
  • votre utilisateur bénéficiant de privilèges a obtenu ses privilèges via un rôle. Nous ne pouvons pas utiliser les autorisations accordées via un rôle dans PL/SQL, à cause du modèle de sécurité Oracle. Pour ce faire, les autorisations doivent être accordées directement à l'utilisateur.

"there is so many limitation within amazon RDS service ... it is such a huge disappointment from this service. "

Il est la différence entre IaaS et PaaS. L'offre Amazon RDS est constituée de bases de données gérées en tant que service. Il est donc tout à fait raisonnable pour eux de verrouiller SYS, etc. SYS est pour l'installation, la configuration et la correction de la base de données, qui sont des tâches entreprises par Amazon. (De nombreux sites utilisent SYS pour effectuer des tâches régulières de DBA: ils ne devraient pas le faire.) Si vous voulez installer, configurer et corriger vous-même, vous avez besoin d'un style de service cloud différent.

+0

Merci pour votre réponse. Je me demande, s'il y a tant de limites au sein du service RDS d'amazon (verrou SYS, manque d'accorder un quelconque rôle de puissance privillege à l'utilisateur), c'est une énorme déception de la part de ce service. Que pensez-vous, APC? –

+0

@BrianKoey Je suis coincé avec la même erreur. Avez-vous trouvé une solution de contournement ou une réponse? –