У меня есть две таблицы из разных баз данных, db1.names и db2.names_rep.db1.names постоянно получает новые данные, и мне нужно, чтобы они отображались в db2.names_rep.
Я создал dblink-соединение для db1 в db2 с именем dblink_db1.
CREATE DATABASE LINK dblink_db1
CONNECT TO user IDENTIFIED BY pass
USING '(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=SID)))';
итриггер, вызывающий таблицу db1.names
create or replace trigger "names_trigger"
after insert or update or delete on "names@dblink_db1"
for each row
begin
if inserting then
insert into "names_rep" (name_id, student_names)
values (:NEW.name_id, :NEW.student_names);
elsif updating then
update "names_rep"
set name_id=:NEW.name_id, student_names=:NEW.student_names
where name_id=:NEW.name_id;
elsif deleting then
delete from "names_rep"
where name_id=:OLD.name_id;
end if;
end;
dblink работает, поскольку я могу успешно вызвать этот запрос в db2
select * from names@dblink_db1
Я получаю сообщение об ошибке
Отчет об ошибке: ORA-00942: таблица или представление не существует 00942. 00000 - «таблица или представление не существует» * Причина:
* Действие:
Наконец, я читал об Oracle Streams.Это альтернатива триггерам?Я надеюсь, что мне не нужно указывать каждую операцию относительно того, что делается в Trigger