美文网首页
Oracle 利用存储过程创建表同步数据

Oracle 利用存储过程创建表同步数据

作者: Billy_f51e | 来源:发表于2019-10-24 13:23 被阅读0次

        今天从A用户同步表数据到B用户时,且后续需定期进行同步。所以就想到了使用存储过程+定时器进行实现。但是没想到表中包含clob字段,存储过程中竟然无法通过竟然无法A.table方式进行实现。所以就通过创建DBLINK方式进行实现了。具体内容如下:

以下内容均在B用户下进行操作

1、对用户进行授权:

grant create table,connect,dba to A; 

注:create table 需显示声明授权,否则存储过程在创建表时会提示权限不足。

2、创建DBLIN

create public databaselink dblink_A

connect A identified by aaa;

3、在B用创建存储过程

CREATE OR REPLACE PROCEDURE TRANSFER_A  AUTHID current_user AS

  CUR_ID    NUMBER(4);

  PLAN_COUNT NUMBER(4);

BEGIN

  EXECUTE IMMEDIATE 'drop TABLE remote_A ';

  EXECUTE IMMEDIATE 'CREATE TABLE remote_A AS SELECT * FROM table_A@dblink_A';

  PLAN_COUNT := 0;

  DECLARE

    CURSOR A_CURSOR IS

      SELECT ID,NAME,INFO

        FROM remote_A T ;

  BEGIN

    FOR REC IN A_CURSOR  LOOP

      SELECT SEQ_TABLE_A.NEXTVAL INTO CUR_ID FROM DUAL;

      INSERT INTO A  (ID,NAME,INFO)

        SELECT CUR_ID,NAME,INFO   FROM DUAL;

       PLAN_COUNT := PLAN_COUNT + 1;

    END LOOP;

  END;

  COMMIT;

  DBMS_OUTPUT.PUT_LINE('迁移完成,共迁移' || PLAN_COUNT || '条记录');

EXCEPTION

  WHEN OTHERS THEN

    ROLLBACK;

    DBMS_OUTPUT.PUT_LINE('迁移失败');

END TRANSFER_A ;

4、创建job

declare

  variable job number;

begin

  sys.dbms_job.submit(job => :job,

                      what => 'TRANSFER_A ;',

                      next_date => to_date('25-10-2019 00:42:06', 'dd-mm-yyyy hh24:mi:ss'),

                      interval => 'sysdate+1/2');

  commit;

end;

5、测试

测试通过,大功告成!!!

相关文章

  • Oracle 利用存储过程创建表同步数据

    今天从A用户同步表数据到B用户时,且后续需定期进行同步。所以就想到了使用存储过程+定时器进行实现。但是没想...

  • MySQL插入一亿条数据

    创建数据表 创建用户表 创建存储过程 调用存储过程插入一亿条数据 查看表空间 插入数据测试统计 查询测试

  • SQL

    结构话数据查询语句 可以创建库,创建表,创建存储过程,创建视图。 可以设置表,存储过程,视图的权限 可以查询数据,...

  • oracle之存储过程、函数、包

    参考链接 Oracle创建存储过程、创建函数、创建包——博客园@helong ORACLE执行存储过程权限不足—...

  • 赋予oracle执行存储过程权限和创建表权限

    赋予oracle执行存储过程权限和创建表权限 grant create any table to username...

  • Oracle数据库show_space使用

    1.创建存储过程 注:其中authid current_user为ORACLE动态sql在存储过程中出现表或视图不...

  • Mysql生成百万测试数据存储过程编写

    一、编写工具函数: 二、创键普通表和内存表 三、创建插入内存表数据的存储过程 四、创建内存表数据插入普通表的存储过...

  • 数据库面试题

    数据库基础(面试常见题) 一、数据库基础 Oracle对象有哪些? 答案:表,表空间,用户,视图,索引,存储过程,...

  • Oracle的数据存储结构

    Oracle的数据存储结构 表空间(tablespace)--Oracle中最大的逻辑存储单位 数据文件(data...

  • Oracle存储过程-1

    Oracle存储过程 1, 存储过程的创建 CREATE OR REPLACE PROCEDURE 过程名(参数列...

网友评论

      本文标题:Oracle 利用存储过程创建表同步数据

      本文链接:https://www.haomeiwen.com/subject/yabrvctx.html