database link

Do czego przydają się linki bazodanowe?

Za pomocą linku bazodanowego możemy kierować zapytania SQL z jednej bazy do drugiej. Przydaje się to np. przy mechanizmie replikacji danych. Załóżmy że chcemy dokonać replikacji z bazy produkcyjnej do bazy testowej. Wtedy link musimy utworzyć na bazie testowej.

                    zapytanie
 baza produkcyjna  <----------  baza testowa

Jak stworzyć link bazodanowy?

Do tego musimy stworzyć użytkownika na bazie produkcyjnej. Najlepiej żeby miał on jak najmniejsze uprawnienia. Przy tworzeniu linku będziemy bowiem zmuszeni podać hasło użytkownika. Nie było by zbyt bezpiecznie gdyby dostał je ktoś niepowołany.

Tworzymy link do bazy z którą chcemy się łączyć. Żeby stworzyć link musimy mieć nadane odpowiednie uprawnienia. Ja to robiłem na użytkowniku system.

 SQL> CREATE DATABASE LINK replication
      CONNECT TO prod 
      IDENTIFIED BY haslouzytkownika
      USING 'LOG';


 SQL> select * from  user_db_links

pierwszy nieśmiały selekcik:

 SQL> SELECT table_name, tablespace_name FROM user_tables@log;

Ewentualne problemy z plikiem tnsnames - ora-12505

ORA-12505: TNS: listener could 
not resolve SID given in connection description. 

Jeśli coś takiego wyskoczy to albo druga baza leży albo jest coś nie tak z plikiem tnsnames(patrz artykuł).

Teraz zastanówmy się jak przydzielić prawa do linka innemu użytkownikowi. Otóż nie trzeba tego robić. Wystarczy jedynie dać prawa do tabel użytkownikowi na bazie produkcyjnej.