Примечание. Если параметр global_names=TRUE, то имя линка должно совпадать с именем базы, на которыйй этот линк идёт, чтобы обойти это нужно сделать:
alter system set global_names=false;
--Посмотреть линки:
select * from dba_db_links;
От юзера SYS можно использовать:
sys.link$
ku$_dblink_view
--Создать публичный линк
create public database link SDPTEST
connect to PPS_OWNER
using 'SDPTEST';
--Удалить
DROP PUBLIC DATABASE LINK SDPTEST;
-- Посмотреть sql запрос db_link
select DBMS_METADATA.GET_DDL('DB_LINK','HIST', 'PPS_OWNER') from DUAL;
Например:
1. Создать линк и выполнить запрос
-- Линк делается для пользователя, из под которого он создаётся
CREATE DATABASE LINK RTBS_TEST
CONNECT TO PPS_OWNER
IDENTIFIED BY comverse
USING 'SDPA';
select * from pps_owner.USAGE_CATEGORY@RTBS_TEST where versionid=451
AND USAGE_CATEGORY_ID NOT IN (41,81,101);
alter system set global_names=false;
--Посмотреть линки:
select * from dba_db_links;
От юзера SYS можно использовать:
sys.link$
ku$_dblink_view
--Через эти представления можно узнать пароли пользователей под которыми эти линки
--ходят, является дыркой безопасности:
select NAME,USERID, PASSWORD from sys.link$;
-- узнать это PUBLIC link или нет
-- все PUBLIC линки принадлежат схеме PUBLIC, поэтому:
select OWNER from dba_db_links where DB_LINK = 'MYLINK';
-- узнать это SHARED link или нет
-- SHARED link всегда создаётся с кляузой AUTHENTICATED BY
-- поэтому чтобы узнать:
select NAME from sys.link$ where AUTHUSR is not null;
--Создать публичный линк
create public database link SDPTEST
connect to PPS_OWNER
using 'SDPTEST';
--Удалить
DROP PUBLIC DATABASE LINK SDPTEST;
-- Посмотреть sql запрос db_link
select DBMS_METADATA.GET_DDL('DB_LINK','HIST', 'PPS_OWNER') from DUAL;
Например:
1. Создать линк и выполнить запрос
-- Линк делается для пользователя, из под которого он создаётся
CREATE DATABASE LINK RTBS_TEST
CONNECT TO PPS_OWNER
IDENTIFIED BY comverse
USING 'SDPA';
select * from pps_owner.USAGE_CATEGORY@RTBS_TEST where versionid=451
AND USAGE_CATEGORY_ID NOT IN (41,81,101);