Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Не обновляются данные при удаленном подключении через dblink  [new]
kusbar
Member

Откуда:
Сообщений: 5
Здравствуйте!

На одном сервере созданы две базы данных vrt и test, которые подключены через dblink. Написал простую процедуру,
которая добавляет данные из test в vrt. Проблема в том, что если я добавляю данные в test, а потом вызываю процедуру из
базы vrt, то данные не добавляются. Они добавятся только после того, как я перезагружу базу test и снова вызову процедуру из vrt.
БД oracle 11g.
Почему данные сразу обновились?
Вот код процедуры:
create or replace PROCEDURE insert_to_vrt
  AS
BEGIN
--берем все данные из одной таблицы, вычитаем повторные данные и добавляем их в другую таблицу
  insert into vrt_sverla (ID_S,NAME)
  select ID_P,NAME from parus_ri@vrt6_to_test
  minus 
  select ID_S,NAME from vrt_sverla;
  
END insert_to_vrt;
21 май 15, 16:00    [17672354]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
А где же COMMIT ?
21 май 15, 16:03    [17672374]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
kusbar
Member

Откуда:
Сообщений: 5
tru55, Все равно не работает, даже с commit.
21 май 15, 21:12    [17673587]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7126
commit где?
21 май 15, 22:18    [17673709]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7126
Чтобы не гадать
Приведи все шаги :)
21 май 15, 22:19    [17673710]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
kusbar
Member

Откуда:
Сообщений: 5
Vadim Lejnin,
create or replace PROCEDURE insert_to_vrt
  AS
BEGIN
--берем все данные из одной таблицы, вычитаем повторные данные и добавляем их в другую таблицу
  insert into vrt_sverla (ID_S,NAME)
  select ID_P,NAME from parus_ri@vrt6_to_test
  minus 
  select ID_S,NAME from vrt_sverla;
  commit;
END insert_to_vrt;



Вызываю вот такой командой
call insert_to_vrt();
22 май 15, 08:09    [17674274]     Ответить | Цитировать Сообщить модератору
 Водключении через dblink  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7126
Правильный протокол
что то вроде:

session 1 db test
TEST SQL> select sys_context('USERENV','DB_NAME') AS DBNAME FROM DUAL;

DBNAME
--------------------------------------------------------------------------------
TEST

TEST SQL> UPDATE PARUS_RI .....

update XX rows

TEST SQL> COMMIT;



session 2 db virt
VIRT SQL> spool test

VIRT SQL> set echo on

-- Проверяем что база та которая нужна
VIRT SQL> select sys_context('USERENV','DB_NAME') AS DBNAME FROM DUAL;

DBNAME
--------------------------------------------------------------------------------
VIRT

-- Проверяем что перед выполнением процедуры обновленного ID в этой базе нет
VIRT SQL> select ID_P,NAME from vrt_sverla WHERE ID= ???; -- Вставленный в test ID

VIRT SQL> call  insert_to_vrt;

VIRT SQL> COMMIT;  -- Обычно commit стараются выносить из процедур, но зависит от бизнес задачи

-- Проверяем что после выполнением процедуры обновленного ID в этой базе нет
VIRT SQL> select ID_P,NAME from vrt_sverla WHERE ID= ???; -- Вставленный ID
22 май 15, 08:53    [17674447]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
kusbar
Member

Откуда:
Сообщений: 5
Vadim Lejnin, я не работаю через sqlplus, я работаю в Oracle SQL Developer. В дальнейшем эту хранимую процедуру буду вызывать через приложение на java.
22 май 15, 16:00    [17677686]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6697
автор
после того, как я перезагружу базу test

Что?

ТС, приведите весь код. От создания таблиц и дблинка до вставки в таблицу и вызова процедуры.
22 май 15, 16:23    [17677856]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
kusbar
Member

Откуда:
Сообщений: 5
Весь код стандартный, все по простому:
Код Dblink - соединение базы vrt6 с базой test.

CREATE DATABASE LINK VRT6_TO_TEST 
CONNECT TO TESTUSER IDENTIFIED BY VALUES TESTUSER
USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.201)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = test)))';

Создание таблицы parus_ri:
create table parus_ri(		
  id number, 		
  Name	Varchar2(100), --комплексн название ри	
  Group1	Varchar2(50),	
  Subgroup2	Varchar2(50),	
  Vid3	Varchar2(50),	
  Type4	Varchar2(50),	
  Subtype5	Varchar2(50)	
);

Создание таблицы vrt_sverla:
create table parus_ri(		
 ID_S NUMBER, 
 NAME VARCHAR2(50), 
 OBOZN VARCHAR2(50), 
 D FLOAT,
 D1 FLOAT,
 L FLOAT, 
 L1 FLOAT, 
 L2 FLOAT, 
 SOG VARCHAR2(50),
 PROIZV VARCHAR2(50), 
 TYPE_PLAST VARCHAR2(50),
 DEPARTMENT VARCHAR2(50)
); 

Вызвать процедуру получается только так: call insert_to_vrt();
Код процедуры описан в предыдущих сообщениях.
22 май 15, 16:41    [17677994]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7126
kusbar
Vadim Lejnin, я не работаю через sqlplus, я работаю в Oracle SQL Developer. В дальнейшем эту хранимую процедуру буду вызывать через приложение на java.


Выполнить SQL команды SQL Developer и показать результат?
22 май 15, 18:54    [17678587]     Ответить | Цитировать Сообщить модератору
 Re: Не обновляются данные при удаленном подключении через dblink  [new]
kaldorey
Member

Откуда:
Сообщений: 600
Не вижу столбца ID_P в parus_ri. И на всякий случай - свежие данные то есть в удаленной табличке? Выборка выводит строки?
25 май 15, 09:11    [17683696]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить