1. Instrucciones de funcionamiento básicas
1. Ver el sistema actual ORACLE_SID (linux)
# su - oracle
$ cat /etc/oratab
orcl:/oracle/app/oracle/product/11.2.0/dbhome_1:N
crm:/oracle/app/oracle/product/11.2.0/dbhome_1:N
2. Verifique el ORACLE_SID del sistema actual (windows)
y luego abra [Panel de control] - [Seguridad del sistema] - [Herramientas de administración] - [Servicios] para
encontrar servicios relacionados que comiencen con OracleService, como OracleServiceORCL, OracleServiceCRM, etc. Hay varios servicios de este tipo. Hay varios ejemplos
3. Cambiar ORACLE_SID (linux)
$ echo $ORACLE_SID
orcl
$ export ORACLE_SID=crm
$ echo $ORACLE_SID
crm
$ sqlplus / as sysdba
4. Cambiar ORACLE_SID (windows)
C:\Users\sqluser> sqlplus sys/passwd@crm as sysdba
或者
C:\Users\sqluser> set oracle_sid=crm
C:\Users\sqluser> sqlplus /nolog
SQL> connect /as sysdba 或 SQL> connect sys/passwd@crm as sysdba
SQL> select name from v$database; 或 SQL> select instance_name from v$instance;
2. Preparación para la recuperación de permisos
Observaciones: primero ejecute la siguiente declaración para filtrar si los usuarios tienen autoridad de DBA, si no (excepto los usuarios del sistema / sistema), las operaciones posteriores pueden ignorarse.
SQL> select * from dba_role_privs where GRANTED_ROLE= 'DBA';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
SYS DBA YES YES
SYSTEM DBA YES YES
1. Cuente los usuarios que están abiertos a usar en cada instancia
SQL> select username from dba_users where account_status='OPEN';
USERNAME
------------------------------
SYS
SYSTEM
ERP
3 rows selected.
2. Cuente qué permisos de rol tiene cada usuario (dba_role), preste atención al nombre de usuario que se escribirá en mayúscula, tome el nombre de usuario ERP como ejemplo
SQL> select * from dba_role_privs where GRANTEE= 'ERP';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
ERP DBA NO YES
ERP RESOURCE NO YES
ERP CONNECT NO YES
3. Estadística de los permisos del sistema que tiene cada usuario (dba_sys), preste atención al nombre de usuario que se escribirá en mayúscula, el nombre de usuario ERP como ejemplo
SQL> select * from dba_sys_privs where GRANTEE='ERP';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
ERP CREATE ANY SYNONYM NO
ERP UNLIMITED TABLESPACE NO
ERP CREATE SESSION NO
3. Operación para recuperar la autoridad de DBA
1. Reclamar permisos de dba
SQL> revoke dba from ERP;
Revoke succeeded
.
- Reautorizar los permisos necesarios
SQL> grant connect,resource to ERP;
grant create view to ERP;
grant create public synonym to ERP;
grant drop public synonym to ERP;
grant unlimited tablespace to ERP;
Grant succeeded.
3. Confirma los permisos
SQL> select * from dba_role_privs where GRANTEE= 'ERP';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
ERP CONNECT NO YES
ERP RESOURCE NO YES
SQL> select * from dba_sys_privs where GRANTEE='ERP';
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
ERP CREATE VIEW NO
ERP DROP PUBLIC SYNONYM NO
ERP CREATE PUBLIC SYNONYM NO
ERP UNLIMITED TABLESPACE NO
4. La recuperación de otros permisos de roles de dba peligrosos, especialmente los permisos que comienzan con DROP ANY, UPDATE ANY, ALTER ANY y ADMINISTER, deben evaluarse cuidadosamente y recuperarse de acuerdo con la situación. Aquí hay un ejemplo de DROP ANY TABLE
SQL> revoke DROP ANY TABLE from ERP;
Revoke succeeded.
4. Asuntos que requieren atención
Nota: Si la columna ADM muestra SÍ, significa que la autoridad tiene WITH ADMIN OPTION (para la autoridad del sistema) o WITH GRANT OPTION (para la autoridad del objeto), y su autoridad debe ser reclamada y reautorizada.
Los ejemplos son los siguientes:
1. Consulta qué permisos de función tiene el usuario de ERP (dba_role)
SQL> select * from dba_role_privs where GRANTEE='ERP';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
ERP CONNECT YES YES
ERP AQ_USER_ROLE YES YES
ERP RESOURCE NO YES
2. Recupere los permisos enumerados como SÍ por ADM y vuelva a autorizar
SQL> revoke connect from ERP;
Revoke succeeded.
SQL> revoke AQ_USER_ROLE from ERP;
Revoke succeeded.
SQL> grant connect to ERP;
Grant succeeded.
3. Confirma los permisos
SQL> select * from dba_role_privs where GRANTEE='ERP';
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
ERP CONNECT NO YES
ERP AQ_USER_ROLE NO YES
ERP RESOURCE NO YES
4. Verifique si hay un dblink para evitar excepciones entre bases de datos debido a la recuperación de permisos
SQL> select * from dba_objects where object_type like '%LINK%';