Oracle案例:利用存储过程进行表数据分离(4)


2014-12-30 10:53:15 2014-12-30 10:53:15 2014-12-30 10:53:15          2000          2000          1000          1000
success


ARCHBEGINTIME      ARCHMIDDLETIME      ARCHENDTIME        ARCHINSCOUNT1 ARCHDELCOUNT1 ARCHINSCOUNT2 ARCHDELCOUNT2
------------------- ------------------- ------------------- ------------- ------------- ------------- -------------
ARCHSTATUS          ARCHERRORCODE
-------------------- --------------------
ARCHERRORMSG
----------------------------------------------------------------------------------------------------------------------------------


第一次迁移操作:
tabdet表中的2000行记录被插入到arch_tabdet表中,然后删除tabdet表中的2000行相应记录;
因此结果是tabdet表剩下9000条记录,arch_tabdet表增加到12000条记录。


第二次迁移操作:

tabhdr表中的1000行记录被插入到arch_tabhdr表中,然后删除tabhdr表中的1000行相应记录;
因此结果是tabhdr表剩下10000条记录,arch_tabhdr表增加到11000条记录。


在实际生产中,具体是哪些符合迁移条件的表是根据存储过程中具体的where条件来定的,这里的测试并不一定很准确。


最后,可以通过创建job来定期自动运行存储过程,如:
declare

v_jobnum number;
begin
dbms_job.submit(v_jobnum,'detach_pro',sysdate,'sysdate+1/24');
end;
commit;
或:

declare v_jobnum number;

begin

dbms_job.submit

( job      => v_jobnum

,what      => 'detach_pro'

,next_date => sysdate

,interval  => 'SYSDATE+1/24'

,no_parse  => TRUE

);

end;

/

commit;


--把存储过程防止到job中,每小时自动运行

SQL> declare v_jobnum number;

2  begin

3    dbms_job.submit

4      ( job      => v_jobnum

5      ,what      => 'detach_pro'

6      ,next_date => sysdate

7      ,interval  => 'SYSDATE+1/24'

8      ,no_parse  => TRUE

9      );

10  end;

11  /


PL/SQL procedure successfully completed.


SQL> commit;


Commit complete.


SQL> desc user_jobs;

Name                                                                    Null?    Type

----------------------------------------------------------------------- -------- ------------------------------------------------

JOB                                                                    NOT NULL NUMBER

LOG_USER                                                                NOT NULL VARCHAR2(30)

PRIV_USER                                                              NOT NULL VARCHAR2(30)

SCHEMA_USER                                                            NOT NULL VARCHAR2(30)

LAST_DATE                                                                        DATE

LAST_SEC                                                                        VARCHAR2(8)

THIS_DATE                                                                        DATE

THIS_SEC                                                                        VARCHAR2(8)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2f710d3ac9f260b3a0b7ff980c3a52d3.html