jueves, 23 de mayo de 2013

ALTER DATABASE LINK

Antes de empezar este ejemplo, cambié la contraseña de un usuario en una base de datos remota. Este usuario es empleado por un vínculo entre una base de datos local y la base de datos remota.

SQL> alter session set nls_language = 'SPANISH'
  2  /

Session altered.

SQL>

Ahora el vínculo no funciona en la base de datos local:

SQL> select * from dual@link1
  2  /
select * from dual@link1
*
ERROR at line 1:
ORA-01017: invalid username/password; logon denied
ORA-02063: line precediendo a LINK1

SQL>

Antes de Oracle 11 versión 2, era necesario borrar el vínculo y recrearlo. Ahora con Oracle 11 versión 2, se puede hacerlo con el comando ALTER DATABASE LINK. Para emplear este comando, es necesario tener el privilegio con el mismo nombre. Pero nadie tiene este privilegio en la base de datos local, hasta el usuario Oracle:

SQL> show user
USER is "ORACLE"
SQL> alter database link link1
  2  connect to andrew identified by reid
  3  /
alter database link link1
*
ERROR at line 1:
ORA-01031: privilegios insuficientes

SQL>

Pero el usuario Oracle tiene el papel DBA:

SQL> select granted_role from dba_role_privs
  2  where grantee = 'ORACLE'
  3  /

GRANTED_ROLE
------------------------------
DBA

SQL>

… y el papel DBA tiene el privilegio GRANT ANY PRIVILEGE:

SQL> select grantee from dba_sys_privs
  2  where privilege = 'GRANT ANY PRIVILEGE'
  3  /

GRANTEE
------------------------------
IMP_FULL_DATABASE
DATAPUMP_IMP_FULL_DATABASE
DBA
SYS

SQL>


Así , Oracle puede dar el privilegio ALTER DATABASE LINK a sí mismo:

SQL> show user
USER is "ORACLE"
SQL> grant alter database link to oracle
  2  /

Grant succeeded.

SQL>

Tras hacer éste, el comando funciona:

SQL> alter database link link1
  2  connect to andrew identified by reid
  3  /

Database link altered.

SQL>

El vínculo funciona también:

SQL> select * from dual@link1
  2  /

D
-
X

SQL>


El comando ALTER DATABASE LINK no funciona en Oracle 11 versión 1:

SQL> alter database link link1
  2  connect to andrew
  3  identified by reid
  4  /
alter database link link1
*
ERROR at line 1:
ORA-02231: falta la opcion para ALTER DATABASE o no es
valida

SQL>

No hay comentarios:

Publicar un comentario