通过命令找到达梦数据库进程所在位置

 ps -ef | grep dm

得到达梦相关进程

pwd 进程ID得到进程目录

[root@dmdb01 bin]# pwd
/data/dmdbms/bin
[root@dmdb01 bin]# ps -ef | grep dm
root        1183       2  0 Nov04 ?        00:00:33 [kworker/8:1H-xfs-log/dm-0]
root        1196       2  0 Nov04 ?        00:00:02 [kworker/10:1H-xfs-log/dm-0]
root        2212       2  0 Nov04 ?        00:00:00 [kdmflush]
root        2347       2  0 Nov04 ?        00:00:00 [xfs-buf/dm-0]
root        2348       2  0 Nov04 ?        00:00:00 [xfs-conv/dm-0]
root        2349       2  0 Nov04 ?        00:00:00 [xfs-cil/dm-0]
root        2350       2  0 Nov04 ?        00:00:00 [xfs-reclaim/dm-]
root        2351       2  0 Nov04 ?        00:00:00 [xfs-log/dm-0]
root        2353       2  0 Nov04 ?        00:17:47 [xfsaild/dm-0]
dmdba       9320       1  0 Nov04 ?        00:01:47 /data/dmdbms/bin/dmap
dmdba      11195       1  0 Nov04 ?        00:48:38 /data/dmdbms/bin/dmwatcher path=/data/dmdata/DAMENG/dmwatcher.ini -noconsole
dmdba      11224       1  0 Nov04 ?        05:48:07 /data/dmdbms/bin/dmserver /data/dmdata/DAMENG/dm.ini mount
root     3331889 3328335  0 18:50 pts/0    00:00:00 grep dm
[root@dmdb01 bin]# pwd 11195
/data/dmdbms/bin

达梦数据库备份 指定数据库名(模式) 通过dexp来
/data/dmdbms/bin/dexp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/home/ FILE=imp_exp_20241224183023.dmp SCHEMAS="DMDB01" TABLESPACE=N DROP=N LOG=imp_exp_20241224183023_dmp.log LOG_WRITE=N dummy=N 

备份还原有以下三种方式

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 

复制


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	

复制

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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐