Mondjuk jön egy parancs, hogy describe x@dblink_itt, ahol az x-ben nincs pont.
Először a user_objects@dblink_itt-ben keresünk, ahol object_name='X'
Ha nincs találat, akkor megpróbálhatjuk ezt:
select * from user_db_links@dblink_itt where db_link=regexp_replace(sys.database_name@dblink_itt, '^[^.]+(..*|)$', 'X1'));
Ha az a feladat, hogy describe x.y@dblink_itt, akkor először
select * from all_objects@dblink_itt where owner='X' and object_name='Y';
Második esélyként:
select * from user_db_links@dblink_itt where db_link='X.Y';
Namostan akarunk-e más userek dblink-jéről információt adni? (Az Sql*Plus nem tekinthető mintának, mert az semmilyen dblink-ről nem ad semmilyen információt). Ha igen, akkor még lehet ezek valamelyike:
select * from all_db_links@dblink_itt where owner='X' and db_link='Y';
select * from all_db_links@dblink_itt where owner='X' and db_link=regexp_replace(sys.database_name@dblink_itt, '^[^.]+(..*|)$', 'Y1'));
Ha ezt mind megvan, akkor már csak a PUBLIC dblink-ekkel kell foglalkozni, valahogy úgy, ahogy a PUBLIC szinonímákkal, hogy pl. `describe dual`
1. select * from user_objects where OBJECT_NAME='DUAL'; Nincs találat
2. select * from all_synonyms where OBJECT_NAME='DUAL' AND OWNER='PUBLIC'; Van találat, kiderül, hogy owner='SYS'
3. select * from all_objects where OBJECT_NAME='DUAL' AND OWNER='SYS'; És már célba is értünk.