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

解决方案 »

  1.   

    假设你想把a用户的table2数据导入到b用户的table1首先授权
    在a用户执行grant select on TABLE2 to b;导数据
    INSERT INTO b.TABLE1 
    SELECT * FROM a.TABLE2; 
    COMMIT; 
      

  2.   

    查询某用户下的当前用户能访问的表
    select table_name from all_tables where owner='用户';
      

  3.   

    备份为什么不用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;
      

  4.   

    vSql := ' insert into zxf2.'||vTable||' select * from '||vTable; 
    上面这句话对吗怎么有两个'||vTable 还有先删除这个表怎么做啊。
    能不能再具体写一下,谢谢了,在ORACLE里的。  我是想删除原有表,再把另一个用户的数据全部插入过来。
      

  5.   

    高手:
        我执行下面这句话时出错,因为我执行的表是另一个用户里面的,请问怎么解决
        vSql := ' insert into zxf2.'||vTable||' select * from '||vTable; 
        execute immediate vSql; 急啊!
      

  6.   

    把zxf2改成目标用户,还有你这个程序是在源用户执行还是在目标用户执行的啊