La diferencia entre Oracle dba y sysdba
dba es un objeto en Oracle. Role, como Usuario, es un objeto físico que realmente existe en Oracle, y sysdba se refiere a un objeto de operación conceptual en los datos de Oracle.
Entonces estos dos conceptos son completamente diferentes. Dba es una función que corresponde a una colección de permisos operativos sobre objetos en una instancia de Oracle, mientras que sysdba es una función conceptual que es solo una identidad durante la autenticación de inicio de sesión.
Veamos sus diferencias a través de ejemplos detallados
1.
El rol físico dba se puede encontrar en el diccionario de datos
SQLgt; seleccione * de dba_roles donde superior(rol) = 'DBA';
CONTRASEÑA DEL ROL
———————————— –
DBA NO
Y sysdba es un rol conceptual que no se puede encontrar en el diccionario de datos
SQLgt; select * from dba_roles where lower(role ) = 'SYSDBA';
no hay filas seleccionadas
2.
La diferencia entre otorgar dba y otorgar sysdba
dba es un rol verdadero, por lo que hay un registro en dba_role_privs después de la concesión, pero no hay ningún registro después de la revocación
SQLgt; concede dba al usuario de prueba;
SQLgt selecciona * de dba_role_privs donde otorgante = 'TESTUSER';
GRANTEE GRANTED_ROLE ADM DEF
—————————————————————— — —
RECURSO DEL TESTADOR NO SÍ
CONEXIÓN DEL PROBADOR NO SÍ
DBA DEL PROBADOR NO SÍ
SQLgt; revocar dba del usuario de prueba;
SQLgt seleccionar * de dba_role_privs donde el beneficiario = 'TESTUER';
GRANTEE GRANTED_ROLE ADM DEF
————————————————————————— p >
RECURSO DEL PROBADOR NO SÍ
CONEXIÓN DEL PROBADOR NO SÍ
Esto no sucederá con sysdba porque no es un rol real
SQLgt Grant sysdba; a testuser;
SQLgt; seleccione * de dba_role_privs donde el beneficiario
= 'TESTUER';
GRANTEE GRANTED_ROLE ADM DEF
——————————————————————— — —
RECURSO DEL PROBADOR NO SÍ
CONEXIÓN DEL PROBADOR NO SÍ
Así es como sysdba lo registra.
Lo corregí en un artículo y publiqué The El inicio de sesión de sysdba se ha descrito en detalle
Por cierto, se requiere sysdba al iniciar sesión. Está asociado con remote_login_passwordfile
Podemos consultar v$pwfile_users;
Como sigue:
SQLgt; select * from v$pwfile_users;
NOMBRE DE USUARIO SYSDB SYSOP
—————————— —– —–
SYS TRUE TRUE
SYSTEM TRUE FALSE
TESTUER TRUE FALSE
Cuando otorgas sysdba, hay una línea adicional aquí
Revoquemos y miremos de nuevo
SQLgt; revocar sysdba de testuser;
SQLgt select * from v$pwfile_users;
> NOMBRE DE USUARIO SYSDB SYSOP
—————————— —– —–
SYS VERDADERO VERDADERO
SISTEMA VERDADERO FALSO
Nada.
Entonces, dba y sysdba son conceptos fundamentalmente diferentes aquí