归档逐步应用辅助数据库迁移(适用大数据库)

 很多时候你可能要从一个大型数据库平台,迁移至同版本、同平台异地异机,但是停机时间很少,则可以通过备份热备份,然后手工不断应用归档日志,最后在停机时间应用剩余日志来解决,操作如下:

  1. 确定源数据库信息,主要是查询源数据库归档情况,确认归档日志;

    select name from v$archived_log;

    NAME

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

    +FLASH/orcl/onlinelog/group_1.257.856384971

    +DATA/orcl/onlinelog/group_2.262.856384971

    +FLASH/orcl/onlinelog/group_2.258.856384971

    +DATA/orcl/onlinelog/group_3.263.856384971

    +FLASH/orcl/onlinelog/group_3.259.856384973

    +FLASH/orcl/archivelog/2014_08_25/thread_1_seq_5.276.856492209

    +FLASH/orcl/archivelog/2014_08_25/thread_1_seq_3.286.856492209

    +FLASH/orcl/archivelog/2014_08_25/thread_1_seq_4.287.856492209

    41 rows selected.

    SQL> alter system switch logfile;

  2. 备份数据库,对源数据库进行热备份,脚本如下:

    alter tablespace system begin backup;

    host copy E:\ORACLE\ORADATA\MARK\SYSTEM01.DBF

    alter tablespace system end backup;

    .....

  3. 更改数据并归档部分日志,未测试目的,修改部分数据,并继续归档,数据库继续对外提供服务。

    begin

    for i in 1 .. 4 loop

    insert into mark values(i,sysdate,dbms_flashback.get_system_change_number);

    execute immediate 'alter system switch logfile';

    dbms_lock.sleep(15);

    end loop;

    end;

    /

    Commit;

  4. 执行恢复,在迁移过程中,可以将备份文件传输至目标主机,在目标主机恢复备份的数据文件,启动数据库。

    sql>startup mount;

    sql>recover database using backup controlfile until cancel;

    应用了所有的归档日志文件之后,可以将数据库只读打开;

    sql>alter database open read only;

    因为原数据库的修改还在继续,关闭数据库,启动到mount状态,然后从源数据库拷贝归档日志,继续应用归档。通过不断应用归档日志,建议数据库和源数据库就处于同步状态。当到达迁移指定的时间时,将源数据库归档,然后停机,拷贝在线日志。然后再迁移数据库应用日志。

    这种方法和DAGAGUARD类似,但是更为可控。

posted on 2014-08-24 19:09  Mark_fei  阅读(358)  评论(0编辑  收藏  举报

导航