Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > Oracle

как правильно создать dblink, а после перегрузки данных его закрыть ? : Oracle

20.04.2024 18:25


17.12.2013 14:45
PavelGS
 
Добрый день,
подскажите как правильно создать dblink, а после перегрузки данных его закрыть ?

Пробовал так:
Код:
procedure dbconnect (init integer) is
  test_count number;
  
  
    begin
      
     select count(1) into test_count from ALL_DB_LINKS where db_link = 'LAKMINS';
    
      IF test_count = 0 THEN
        EXECUTE IMMEDIATE q'[CREATE PUBLIC DATABASE LINK LAKMINS CONNECT TO userfor1c IDENTIFIED BY *** USING 'LAKMINS']';
        commit;
        ELSE
        EXECUTE IMMEDIATE q'[DROP PUBLIC database link LAKMINS]';
        EXECUTE IMMEDIATE q'[CREATE PUBLIC DATABASE LINK LAKMINS CONNECT TO userfor1c IDENTIFIED BY *** USING 'LAKMINS']';
        commit;        
      END IF;
          
    end;
    
    procedure dbdisconnect (init integer)is
    begin
        EXECUTE IMMEDIATE  q'[DROP PUBLIC database link LAKMINS]';
        commit;
    end;
    
  
  procedure CardsLoad (init integer) is
  
  begin
    dbconnect(1);
    EXECUTE IMMEDIATE q'[TRUNCATE TABLE SUPERMAG.SMCARD]';
    
    INSERT INTO SUPERMAG.SMCARD
    SELECT * 
    FROM SUPERMAG.SMCARD@LAKMINS;
    commit; 
    dbdisconnect(1);
  end;
17.12.2013 14:48
OlegON
 
Никто не будет гадать, что у тебя не получается, разглядывая код. Проблема-то сама в чем?
17.12.2013 14:51
PavelGS
 
DROP PUBLIC database link LAKMINS
Мое соединение срубается или если нет открытого при компиляции он инвалид :(
17.12.2013 15:05
OlegON
 
Можно не пересказами в изложении Шуры Каретного, а просто цитировать ошибки? :( Не в autonomous transactions дело? И, кстати, зачем линк-то создавать/дропать все время? Кроме того, категорически отсоветую делать что-то удаленно кроме select * from table@link
17.12.2013 15:12
PavelGS
 
У нас каждую ночь делается холодная копия бд, после чего линк остается но не работает.
Поэтому хотел его удалять по завершению операции.
17.12.2013 15:46
OlegON
 
Проще не делать никому не нужную холодную копию или разобраться, что не работает.
Извини, на следующие сообщения "не работает" без цитат ошибок отвечать не буду.
17.12.2013 15:49
PavelGS
 
ORA-02018: существует открытое соединение для канала связи БД с тем же именем
ORA-06512: на "SUPERMAG.SM2REP", line 25

Линия 25:
EXECUTE IMMEDIATE q'[DROP PUBLIC database link LAKMINS]';
18.12.2013 13:00
OlegON
 
Так, а закрыть линк не пробовал?

Код:
ALTER SESSION CLOSE DATABASE LINK LAKMINS;
Часовой пояс GMT +3, время: 18:25.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.