注册
DM-DM备份与还原
专栏/Database Thinking/ 文章详情 /

DM-DM备份与还原

胡li 2022/04/11 2862 7 0
摘要 备份还原有以下三种方式

1、dts迁移

网络通的情况下,建议使用dts迁移工具。可以模式对模式直接迁移,也可以导出成sql\EXCLE等

2、物理备份与还原(最靠谱)

目的库会被清空,进行全库备份还原,如果目的库为空可使用该方法,或者在目的端同网段初始一个中间库进行备份与还原,再通过迁移工具进行迁移

2.1 物理备份

2.1.1 联机备份

登录数据库,执行以下命令,必须开归档,参考以下链接打开归档
https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup.html#%E5%BD%92%E6%A1%A3%E9%85%8D%E7%BD%AE

BACKUP DATABASE FULL BACKUPSET '/opt/dmdbms/BAK/db_full_bak_for_restore';

2.1.2 脱机备份

数据库为停止状态,cd到/opt/dmdbms/bin,执行以下命令

BACKUP  DATABASE  '/opt/dmdbms/data/DAMENG/dm.ini'  FULL  BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

2.2 物理还原

目的库为停止状态,且目的端归档日志要打开,参考以下链接打开归档
https://eco.dameng.com/document/dm/zh-cn/ops/physical-backup.html#%E5%BD%92%E6%A1%A3%E9%85%8D%E7%BD%AE

归档打开后,使用dmdba用户,cd到/opt/dmdbms/bin,启动 DMRMAN

./dmrman 

image.png
1)还原数据库。执行以下命令:

RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

2)恢复数据库。启动 DMRMAN,执行以下命令:

RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore';

3)恢复 db_magic,执行以下命令:

RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;

3、逻辑备份与还原

建议导出前先使用3.5的sql统计源端库表的数据量,到目的库导入后再执行一次sql统计。源端和目的端进行对比。

3.1 备份

3.1.1 导出模式下所有对象

导出文件为 dexp01.dmp ,导出日志为 dexp01.log,导出文件和日志文件都存放在 /emc_2/data/dexp 目录中。

dexp.exe SYSDBA/SYSDBA@192.168.0.248:5236 FILE=dexp01.dmp LOG=dexp01.log DIRECTORY=/emc_2/data/dexp

3.1.2 全库导出表结构,不导出数据

dexp.exe DMTEST/123456789 FULL=Y FILE=D:\DM20181207_rows_no.dmp directory=D:\ log=exp_20181207_rows_no.log rows=n

3.1.3 指定模式导出

dexp.exe DMTEST/123456789 schemas=(DMTEST)   FILE=D:\DM20181207.dmp directory=D:\log=exp_20181207.log

3.1.4 导出指定表

dexp.exe DMTEST/123456789  tables=(ALL_TABLES,IND_T1)  FILE=D:\DM20181207_sechemas_tables.dmp directory=D:\ log=exp_20181207_schemas_tables.log

3.2 导入

3.2.1 全库导入

D:\dmdbms\bin>dimp.exe TEST/123456789   FILE=DM20181207.dmp directory=D:\log=dimp_20181207.log full=y

3.2.2 是否忽略建表错误

D:\dmdbms\bin>dimp.exe TEST/123456789   FILE=DM20181207.dmp directory=D:\ log=dimp_20181207.log ignore=y

3.2.3 从指定模式导入到指定模式的还原

D:\dmdbms\bin>dimp.exe DMTEST/123456789   FILE=DM20181207.dmp directory=D:\ log=dimp_20181207.log TABLES=ALL_TABLES,IND_T1 remap_schema=DMTEST:TEST

说明:remap_schema=<源模式>:<目标模式>

  • 源模式:如果指定的源模式不存在,则导入到对象原来所在的模式;
  • 目标模式:如果目标模式不存在,先创建目标模式,再继续导入;

3.2.4 还原表结构,将仅备份表结构的备份文件进行还原

D:\dmdbms\bin>dimp.exe TEST/123456789   FILE=DM20181207_rows_no.dmp directory=D:\ log=dimp_20181207_row_now.log

3.2.5 加快导入速度

./dimp SYSBENCHUSER/SYSBENCHUSER123:5228 directory=/data/  file=full_bak.dmp log=imp_full_bak.log PARALLEL=64 TABLE_PARALLEL=16  FAST_LOAD=Y  COMMIT_ROWS=1000000 TASK_THREAD_NUMBER=96 BUFFER_NODE_SIZE=2048 OWNER=SYSBENCHUSER INDEXFIRST=Y

3.3 数据对比

创建中间表

create table oracle_tables(tab_owner varchar(100),tab_name
varchar(100),tab_count int);

表总行数统计语句:

create
PROCEDURE PRO_TEST
AS
begin
        for rec in
        (
                select
                        owner,
                        object_name
                from
                        all_objects
                where
                        owner      ='模式名'
                    and object_type='TABLE'
        )
        loop
                begin                       
                        execute immediate 'insert into oracle_tables  select '''|| rec.owner || ''',''' || rec.object_name || ''',count(*) from ' || rec.owner || '.' || rec.object_name;
                exception
                when others then
                        print ('get count error');
                end;
        end loop;
end;
			

执行存储过程

CALL PRO_TEST	

源端与目的端进行数据对比

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服