ERROR:
During a select through a database link we got the following error;
===> select sysdate from dual@TARGET_DBX
select sysdate from dual@TARGET_DBX
*
Error at line 1
ORA-19706: invalid SCN
ORA-02063: önceki line, kaynağı TARGET_DBX Script Terminated on line 1.
Also we noticed the following message in the alert.log;
*********************************************************************************
Rejected the attempt to advance SCN over limit by 8 hours worth to 0x0ca5.1y0772c8, by distributed transaction remote logon, remote DB: TARGET_DBX.WORLD.
Client info : DB logon user USERX, machine hostx program JDBC Thin Client, and OS user app_usr1 *********************************************************************************
database link etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
database link etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
7 Mayıs 2014 Çarşamba
11 Mart 2012 Pazar
[TR] Global Database Name
Global Database Name
-------------------------------
Distributed bir Database Sistemine dahil olan tüm db'lerin Global Database Name'leri farklı olmak zorundadır.
Global Database Name, bir db yaratılırken aşağıdaki 2 başlangıç parametresinin değerleriyle belirlenir ve data dictionary'de saklanır. Formül şu şekildedir;
Global Database Name = DB_NAME.DB_DOMAIN (DB_NAME, en fazla 8 karakter olabilir)
Örnekler;
ALFADB.xxdomain.com
sales.us.oracle.com
Db yaratıldıktan sonra; DB_DOMAIN başlangıç parametresi değiştirilirse, aynı zamanda Global Database Name de değiştirilmiş olmaz. Global Database Name'i de bu şekilde güncellemek için ayriyetten "ALTER DATABASE RENAME GLOBAL_NAME TO db_name.yeni_db_domain;" komutu çalıştırılmalıdır.
Bir db'nin Global Database Name'ini öğrenmek için aşağıdaki komut kullanılır;
SELECT * FROM GLOBAL_NAME;
-------------------------------
Distributed bir Database Sistemine dahil olan tüm db'lerin Global Database Name'leri farklı olmak zorundadır.
Global Database Name, bir db yaratılırken aşağıdaki 2 başlangıç parametresinin değerleriyle belirlenir ve data dictionary'de saklanır. Formül şu şekildedir;
Global Database Name = DB_NAME.DB_DOMAIN (DB_NAME, en fazla 8 karakter olabilir)
Örnekler;
ALFADB.xxdomain.com
sales.us.oracle.com
Db yaratıldıktan sonra; DB_DOMAIN başlangıç parametresi değiştirilirse, aynı zamanda Global Database Name de değiştirilmiş olmaz. Global Database Name'i de bu şekilde güncellemek için ayriyetten "ALTER DATABASE RENAME GLOBAL_NAME TO db_name.yeni_db_domain;" komutu çalıştırılmalıdır.
Bir db'nin Global Database Name'ini öğrenmek için aşağıdaki komut kullanılır;
SELECT * FROM GLOBAL_NAME;
Etiketler:
database link,
DB_DOMAIN,
DB_NAME,
global,
GLOBAL_NAME,
name
[TR] ORA-02020: too many database links in use
Db'de bir oturum açılıp bu oturum üzerinden bir db link kullanıldığında; commit yada rollback yapılmış olsa bile, o oturum sona erene kadar yada bağlantı manuel olarak kapatılana kadar network bağlantısı açık kalır. Network bağlantısının açık kalması demek, db link bağlantısı ile birbirine bağlanan remote db ve lokal db tarafında birer process'in sürekli olarak aktif olması demektir. Eğer db link o oturumda bir daha kullanılmayacaksa, aradaki network bağlantısının aşağıdaki komutla kapatılması şiddetle tavsiye edilir. Aşağıdaki komut sadece, bağlı olunan oturumda belirtilen db link için açık olan network bağlantılarını kapatır. "ALTER SESSION" sistem yetkisi gerektirir.
ALTER SESSION CLOSE DATABASE LINK dblnk1;
OPEN_LINKS başlangıç parametresi; lokal db'deki bir oturumun, db link üzerinden aynı anda kaç tane network bağlantısı açabileceğini belirler. Burada söz konusu remote db sayısı 1 de olabilir 1'den fazla da olabilir önemli olan kullanılan birbirinden farklı db link sayısıdır. Yani mesala bu parametrenin değeri 5 iken, aynı remote db'ye farklı db linkler üzerinden en fazla 5 tane network bağlantısı açılabilir. Ancak aynı db link istenildiği kadar kullanılabilir zira tüm kullanımlar aynı network bağlantısı üzerinden gider. Bu limit aşıldığında ORA-02020 hatası alınır. Bu parametrenin varsayılan değeri 4'tür ve statik bir parametredir. Daha önce açılmış sık kullanılmayan db link network bağlantıları; biraz önce anlatılan yöntemle kapatılmak suretiyle, açık db link network bağlantı sayısı kontrol altına alınabilir. Aksi halde bu parametreye takılmak kaçınılmazdır.
ALTER SESSION CLOSE DATABASE LINK dblnk1;
OPEN_LINKS başlangıç parametresi; lokal db'deki bir oturumun, db link üzerinden aynı anda kaç tane network bağlantısı açabileceğini belirler. Burada söz konusu remote db sayısı 1 de olabilir 1'den fazla da olabilir önemli olan kullanılan birbirinden farklı db link sayısıdır. Yani mesala bu parametrenin değeri 5 iken, aynı remote db'ye farklı db linkler üzerinden en fazla 5 tane network bağlantısı açılabilir. Ancak aynı db link istenildiği kadar kullanılabilir zira tüm kullanımlar aynı network bağlantısı üzerinden gider. Bu limit aşıldığında ORA-02020 hatası alınır. Bu parametrenin varsayılan değeri 4'tür ve statik bir parametredir. Daha önce açılmış sık kullanılmayan db link network bağlantıları; biraz önce anlatılan yöntemle kapatılmak suretiyle, açık db link network bağlantı sayısı kontrol altına alınabilir. Aksi halde bu parametreye takılmak kaçınılmazdır.
8 Mart 2012 Perşembe
[TR] Kullanıcı adı ve parolası bilinmeyen bir şemada private database link yaratma
-- Kullanıcı adı ve parolası bilinmeyen bir şemada private database link yaratmak için kullanılır.
grant create database link to SEMA1;
create or replace procedure SEMA1.procx ( str in varchar2) is
begin
execute immediate str;
end;
/
call SEMA1.procx('drop database link dblnk1');
call SEMA1.procx('create database link "dblnk1" connect to REMOTE_SEMA1 identified by remote_sema1_sifre" using ''tns_kaydi''');
call SEMA1.procx('select * from dual@dblnk1');
drop procedure SEMA1.procx;
revoke create database link from SEMA1;
grant create database link to SEMA1;
create or replace procedure SEMA1.procx ( str in varchar2) is
begin
execute immediate str;
end;
/
call SEMA1.procx('drop database link dblnk1');
call SEMA1.procx('create database link "dblnk1" connect to REMOTE_SEMA1 identified by remote_sema1_sifre" using ''tns_kaydi''');
call SEMA1.procx('select * from dual@dblnk1');
drop procedure SEMA1.procx;
revoke create database link from SEMA1;
[EN] WHICH SPs ARE USING DATABASE LINKS
select * from dba_dependencies where referenced_link_name is not null and (owner,name,type) in
(select owner,object_name,object_type from dba_objects
where object_type in ('FUNCTION','TRIGGER','PROCEDURE','PACKAGE','VIEW')
--and status = 'INVALID'
and owner = 'SEMA1')
(select owner,object_name,object_type from dba_objects
where object_type in ('FUNCTION','TRIGGER','PROCEDURE','PACKAGE','VIEW')
--and status = 'INVALID'
and owner = 'SEMA1')
Kaydol:
Kayıtlar (Atom)