Translate

vendredi 17 juillet 2015

GRANT SYSDBA on READ ONLY StandBy


Si jamais vous avez besoin d'ajouter des modifications sur les comptes des utilisateurs dans un environnement DataGuard, dans mon cas, j'essaie d'ajouter un compte "evta" avec le rôle "sysdba"



Primaire : 
==========

SQL> CREATE USER EVTA IDENTIFIED BY EVTA ;
SQL> GRANT CREATE SESSION TO EVTA ;
SQL> GRANT SYSDBA TO EVTA ;

SQL> SELECT * FROM V$PWFILE_USERS;

USERNAME   SYSDB SYSOP SYSAS SYSBA SYSDG SYSKM     CON_ID
---------- ----- ----- ----- ----- ----- ----- ----------
SYS        TRUE  TRUE  FALSE FALSE FALSE FALSE          0
EVTA       TRUE  FALSE FALSE FALSE FALSE FALSE          0



Dans ce cas la création du compte sera synchronisé vers le Standby, cependant si nous faisons une vérification de la vue v$pwfile_user, nous ne verrons pas les mêmes modifications. 


Standby : 
==========

SQL> SELECT * FROM V$PWFILE_USERS;

USERNAME   SYSDB SYSOP SYSAS SYSBA SYSDG SYSKM     CON_ID
---------- ----- ----- ----- ----- ----- ----- ----------
SYS        TRUE  TRUE  FALSE FALSE FALSE FALSE          0


Malheureusement, si nous essayons de faire la modification sur le serveur Standby, une erreur apparaîtra.


Standby : 
==========

SQL> grant sysdba to evta ;
grant sysdba to evta
*
ERROR at line 1:
ORA-16000: database or pluggable database open for read-only access

SQL> select name, open_mode, database_role from v$database ;
NAME      OPEN_MODE              DATABASE_ROLE
--------- --------------------   ----------------
DBAD      READ ONLY WITH APPLY   PHYSICAL STANDBY



La solution ?
      Copier le orapwd de la base de données primaire vers le standby, après ça...


Standby : 
==========


SQL> SELECT * FROM V$PWFILE_USERS;
USERNAME     SYSDB SYSOP SYSAS SYSBA SYSDG SYSKM     CON_ID
------------ ----- ----- ----- ----- ----- ----- ----------
SYS          TRUE  TRUE  FALSE FALSE FALSE FALSE          0
EVTA         TRUE  FALSE FALSE FALSE FALSE FALSE          0

et voilà.


Aucun commentaire:

Enregistrer un commentaire