1. A database link exists in the current database owned by CURRENTSCHEMA user (you don't know the password of the CURRENTSCHEMA user) The database link was created by the application owner as follows: CREATE DATABASE LINK "'DBLINKNAME.DOMAIN.COM" CONNECT TO "TARGETSCHEMA" IDENTIFIED by password USING 'TNSNAMES_ALIAS'; 2. Create a table in the target database as a snapshot of the current v$session dynamic view create table x as select * from v$session; 3. grant select on the table to TARGETSCHEMA grant select on x to targetschema; 4. Use anonymous pl/sql block below to execute a command on the new table to prove that the database link exists, works, and is pointing at the right target database. set serverout on size unlimited (if using sqlplus) declare strresult varchar2(1024); stmt_cursor NUMBER; rc NUMBER; found NUMBER := 0; p_schema VARCHAR2(30) := 'CURRENTSCHEMA'; p_obj VARCHAR2(30) := 'DBLINKNAME.DOMAIN.COM'; uid dba_users.user_id%TYPE; BEGIN select user_id into uid from dba_users where username=p_schema; stmt_cursor := dbms_sql.open_cursor; sys.dbms_sys_sql.parse_as_user(stmt_cursor, 'BEGIN SELECT COUNT(*) INTO :found FROM user_db_links WHERE db_link = :p_obj; EXCEPTION WHEN OTHERS THEN :found := 0; END;', dbms_sql.NATIVE, uid); --dbms_sql.bind_variable(stmt_cursor, ':p_schema', p_schema); dbms_sql.bind_variable(stmt_cursor, ':p_obj', p_obj); dbms_sql.bind_variable(stmt_cursor, ':found', found); rc := dbms_sql.execute(stmt_cursor); dbms_sql.variable_value(stmt_cursor, ':found', found); dbms_sql.close_cursor(stmt_cursor); dbms_output.put_line('FOUND: '||found); IF found = 1 THEN stmt_cursor := dbms_sql.open_cursor; sys.dbms_sys_sql.parse_as_user(stmt_cursor, 'select machine from sys.x@'||p_obj, dbms_sql.NATIVE,uid); sys.dbms_sys_sql.define_column(stmt_cursor,1,strresult,1000); rc := dbms_sys_sql.execute(stmt_cursor); dbms_output.put_line('rc is: '||to_char(rc)); loop if ( dbms_sys_sql.fetch_rows(stmt_cursor) > 0 ) then dbms_sys_sql.column_value(stmt_cursor, 1,strresult ); dbms_output.put_line('table_name is: '||strresult); else exit; end if; end loop; dbms_sql.close_cursor(stmt_cursor); DBMS_OUTPUT.PUT_LINE(stmt_cursor); END IF; END; /