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.
Łukasz Goszczyński goszczu.pl