воскресенье, 21 июля 2013 г.

DATABASE LINK

Получить метаданные о линке:

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.)





Комментариев нет:

Отправить комментарий