问题是这样的:oracle 上有两个用户,我想建一个存储过程,把一个用户的某些表数据同步到另一个用户表里(两个用户的表相同),换句话说就是备份数据库。
请问怎么写!

解决方案 »

  1.   

    首先保证当前用户拥有对另一用户表的操作权限
    然后insert into 用户1.表 select * from 用户2.表 where...
    最后delete 原来的数据(根据需要决定是否删除)
      

  2.   

    如果是一二个表的话,到是可以用触发器CREATE OR REPLACE TRIGGER user1.trigger_name
      AFTER INSERT OR UPDATE ON user1.table
      FOR EACH ROW
    BEGIN
      IF INSERTING THEN
        INSERT INTO user2.table (column) VALUES (:new.column1);
      ELSIF UPDATING THEN
        UPDATE user2.table SET column = :new.column WHERE column = :old.column;
      END IF;
    END user1.trigger_name;表多的话,这样不行的
    跟着学习
      

  3.   

    呵呵,实时同步还是定时同步,实时用触发器,物化视图之类的
    定时用存储过程job调用
      

  4.   

    备份为什么不用rman或imp,exp等方式 用存储过程类似这样 
    create or replace procedure p_synctables 
    as 
      cursor cursor_t is select table_name from user_tables where table_name='A'; 
      vTable varchar2(100); 
      vSql varchar2(200); 
    begin 
      open cursor_t; 
      loop 
        fetch cursor_t into vTable; 
        exit when cursor_t%notfound; 
        vSql := ' insert into zxf2.'||vTable||' select * from '||vTable; 
        execute immediate vSql; 
        Commit; 
      end loop; 
      close cursor_t; 
    end; 楼上发重了贴子了吧