Получить метаданные о линке:
SELECT DBMS_METADATA.GET_DDL('DB_LINK',a.db_link,a.owner) || '/' FROM dba_db_links a
Создать линк:
CREATE DATABASE LINK "MY_LINK.SUN.COM"
CONNECT TO "SCOTT" IDENTIFIED BY VALUES '054B287C5C9D0928639F28CC53F9D6D5043A07D0BE8325534D'
USING 'TESTDB_REMOTEDB.MSK.SUN.COM'
Удалить линк:
SELECT 'DROP PUBLIC DATABASE LINK ' || object_name ||';'
FROM SYS.dba_objects
where object_type = 'DATABASE LINK'
and owner = 'PUBLIC';
Просмотр информации о линках:
select * from dba_db_links;
select * from dba_objects where object_type like '%DATABASE LINK%'
select * from sys.v_$dblink;
Проверяем что линк работает:
select * from dual@MY_LINK.SUN.COM;
select * from all_tables@MY_LINK.SUN.COM;
select * from t1@MY_LINK.SUN.COM;
Работать с линками так:
select * from t1@MY_LINK.SUN.COM;
rollback;
alter session close database link MY_LINK.SUN.COM;
select * from sys.v_$dblink;
select * from t1@MY_LINK.SUN.COM;
(This SQL was posted to Metalink, now officially in Doc Note:104420.1.)
SELECT DBMS_METADATA.GET_DDL('DB_LINK',a.db_link,a.owner) || '/' FROM dba_db_links a
Создать линк:
CREATE DATABASE LINK "MY_LINK.SUN.COM"
CONNECT TO "SCOTT" IDENTIFIED BY VALUES '054B287C5C9D0928639F28CC53F9D6D5043A07D0BE8325534D'
USING 'TESTDB_REMOTEDB.MSK.SUN.COM'
Удалить линк:
SELECT 'DROP PUBLIC DATABASE LINK ' || object_name ||';'
FROM SYS.dba_objects
where object_type = 'DATABASE LINK'
and owner = 'PUBLIC';
Просмотр информации о линках:
select * from dba_db_links;
select * from dba_objects where object_type like '%DATABASE LINK%'
select * from sys.v_$dblink;
Проверяем что линк работает:
select * from dual@MY_LINK.SUN.COM;
select * from all_tables@MY_LINK.SUN.COM;
select * from t1@MY_LINK.SUN.COM;
Работать с линками так:
select * from t1@MY_LINK.SUN.COM;
rollback;
alter session close database link MY_LINK.SUN.COM;
select * from sys.v_$dblink;
select * from t1@MY_LINK.SUN.COM;
database links (distributed transaction)
set lines 400
column origin format a45
column GTXID format a50
column LSESSION format a10
column USERNAME format a10
column status format a1
column waiting format a30
select /*+ ordered */ substr(s.ksusemnm,1,35)||'-'|| substr(s.ksusepid,1,35) origin,
substr(g.k2gtitid_ora,1,50) gtxid,
substr(s.indx,1,4)||'.'|| substr(s.ksuseser,1,5) lsession,
s.ksuudlna username,
substr(decode(bitand(ksuseidl,11), 1,'ACTIVE', 0, decode( bitand(ksuseflg,4096) , 0,'INACTIVE','CACHED'), 2,'SNIPED', 3,'SNIPED', 'KILLED'),1,1) status,
e.kslednam waiting
from x$k2gte g, x$ktcxb t, x$ksuse s, x$ksled e
where g.k2gtdxcb=t.ktcxbxba
and g.k2gtdses=t.ktcxbses
and s.addr=g.k2gtdses
and e.indx=s.ksuseopc;
ORIGIN = Machine-PID, машина, на которой работает клиентский инструмент
C eis-web.sun.ru process PID=1234 подключился к нашей базе (SPROM) под пользователем QRUSER
На SPROM
ORIGIN GTXID LSESSION USERNAME S WAITING
----------------------------------------- --------------------------------------------- ----------- ---------- - ------------------------------
eis-web.sun.ru-1234 SPROM.b39bc3cb.23.4.3947425 19.45953 QRUSER I SQL*Net message from client
На ARCH
ORIGIN GTXID LSESSION USERNAME S WAITING
----------------------------------------- --------------------------------------------- ------------- ---------- - ------------------------------
base00dbadm01.domain.corp-88840 SPROM.b39bc3cb.23.4.3947425 1853.31078 ARCHIVE I SQL*Net message from client
Далее порождённый процесс PID=88840 с базы (SPROM) по dblink подключается к нашей базе (ARCH) под пользователем ARCH.
Причём GTXID (глобальный идентификатор транзакции), у них один (SPROM.b39bc3cb.23.4.3947425) и порождёна эта транзакция была в базе SPROM.
LSESSION (Local Session),
это сеанс в вашей локальной базе данных (к которой вы подключены и запускаете этот скрипт)
S = статус LSESSION, он имеет 1 букву со следующим значением:
I (inactive)
A (active)
C (cached)
S (sniped)
K (killed)
WAITING (чего ждет LSESSION)
(This SQL was posted to Metalink, now officially in Doc Note:104420.1.)