07/10/2026
Usuarios proxy y conexión Oracle

En ocasiones surge la necesidad de conectarse con otro usuario para crear o ejecutar algunas tareas. Algunas de ellas son la creación de db_links, configurar trabajos de job, o ejecutar algún package con el owner del mismo.

Para ello, podemos uutilizar la creación de lo que se conoce cómo «Proxy Users» que permite establecer una conexión mediate proxy de un usuario sin necesidad de conocer la contraseña ni de modificarla.


Un ejemplo muy utilizado es la creación de un db_link sin conocer la password del usuario. Se debe conocer la password de un usuario con acceso a la base de datos y tener los privilegios suficientes.

Ejemplo creación DB_LINK.

Creamos dos usuarios user1 y user2.

SQL> CREATE USER USER1 IDENTIFIED BY password;

User created.

SQL> grant connect to user1;

Grant succeeded.

SQL> grant create session, resource to user1;

Grant succeeded.

SQL> alter user user1 default tablespace users;

Grant succeeded.

SQL> alter user user1 quota unlimited on users;

Grant succeeded.


SQL> CREATE USER USER2 IDENTIFIED BY password;

User created.

SQL> grant connect to user2;

Grant succeeded.

SQL> grant create session , resource to user2;

Grant succeeded.

SQL> alter user user2 default tablespace users;

Grant succeeded.

SQL> alter user user2 quota unlimited on users;

Grant succeeded.

Supongamos que necesitamos crear un database link cómo usario user2 pero no conocemos la password, pero conocemos la password del usuario user1.

Cómo usuario system damos los permisos necesarios:

SQL> alter user user2 grant connect through user1;

User altered.

SQL> grant create database link to user2;

Grant succeeded.

Nos conectamos con el usuario user2 con la password del usuario user1.

SQL> connect user1[user2]/password@test;

Connected.

SQL> show user
USER is «USER2»

SQL> create database link mi_dblinktest connect to user1 identified by password using //localhost:1521/test;
Database link created.


sql> SELECT OWNER, DB_LINK, USERNAME HOST FROM DBA_DB_LINKS

Existen muchos ejemplos donde puede ser beneficioso para un DBA o para un desarrollador poder ejecutar tareas/procedimientos con el ower de la tarea. Algunos de ellos son la creación índices, lanzar job, ejecutar y depurar paquetes, etc.

Una vez finalizadas las tareas, es importante revokar el privilegio otorgado para evitar problemas de seguridad.

SQL> alter user user2 revoke connect through user1;

User altered.

YouTube
LinkedIn