La Red de Conocimientos Pedagógicos - Currículum vitae - La diferencia entre Oracle dba y sysdba

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

—————————————————————————

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í