数据库备份是DBA日常最重要的工作内容。
DM 数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。
物理备份详细官方解释:物理备份还原是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。例如使用 RMAN 工具进行的备份还原
物理备份简单理解方法:
大家可以简单理解为备份的数据为你可以在你的实例路径下看到的各种文件。物理物理嘛,就是可以在操作系统里面实际看到的文件撒。
物理备份过程中,不关心数据页的具体内容是什么,也不关心数据页属于哪一张表,只是简单的根据数据库文件系统的描述,来挑选有效的数据页。
逻辑备份详细官方解释:逻辑备份还原是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份还原;逻辑导出和逻辑导入数据库对象分为四种级别:数据库级(FULL)、用户级(OWNER)、模式级SCHEMAS)和表级(TABLES)。四种级别独立互斥,不能同时存在。
逻辑备份简单理解方法:简单的理解的话,就是你打开管理工具后,可以从管理工具里面看到的信息。你看,模式这个东西你无法从你的操作系统里面找到对应的模式文件,所以,你简单理解为这个为逻辑层面。
逻辑备份针对的是数据内容,并不关心这些数据物理存储在什么位置。
alter database mount;
alter database add archivelog 'type=local, dest=/dm8/arch,file_size=64,space_limit=0';
alter database archivelog;
alter database open;
备份集备份还原实现策略有两种:DMAP 辅助进程方式和无辅助进程方式。用户可通过 DM.INI 参数 bak_use_ap 来选择(DMRMAN 使用参数 use_ap),bak_use_ap 取值 1、2。默认为 1。
DMAP 辅助进程方式
如果选择使用 DMAP 辅助进程,执行备份还原之前就必须启动 DMAP 服务。安装 DM 数据库以后,DMAP 服务会自动启动。
无辅助进程方式
不依赖DMAP,由主进程dmserver自身执行备份还原,但不支持第三方备份(指定DEVICE TYPE为TAPE)。
启动dmap
./DmAPService start
backup DATABASE full to FULLBAK01 BACKUPSET '/dm8/backup/FULLBAK2022_09_25'
`backup table "TEST" to "TAB_TEST_EMP_2022_09_25_16_29_23" backupset 'TAB_TEST_EMP_2022_09_25_16_29_23';`
backup tablespace "TEST" full to "TS_TEST_FULL_2022_09_25_16_30_20" backupset 'TS_TEST_FULL_2022_09_25_16_30_20';
backup archivelog all to "ARCH_2022_09_25_16_30_45" backupset 'ARCH_2022_09_25_16_30_45';
DM 仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。
RESTORE TABLE TEST FROM BACKUPSET 'TAB_TEST_EMP_2022_09_25_16_29_23';
进入数据库安装目录的 bin 目录下执行:
./dmrman
backup database '/dm8/data/DAMENG/dm.ini' to FULLBAK20220925 backupset
'/dm8/backup/FULLBAK20220925';
备份数据库:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
还原数据库:
RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM
BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
恢复数据库:
RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_recover_backupset';
恢复 db_magic
RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;
备份表空间:
BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';
执行表空间脱机:
ALTER TABLESPACE TS1 OFFLINE;
还原表空间:
RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
恢复表空间:
RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE TS1;
备份归档文件:
BACKUP ARCHIVE LOG ALL BACKUPSET '/home/dm_bak/arch_all_for_restore';
还原归档。启动 DMRMAN,设置 OVERWRITE 为 2,如果归档文件已存在,会报错。
指定还原的目标归档日志目录:
RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO ARCHIVEDIR'/opt/dmdbms/data/DAMENG_FOR_RESTORE/arch_dest' OVERWRITE 2;
指定还原目标库的 dm.ini 文件路径:
RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2;
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log FULL=YDIRECTORY=/mnt/data/dexp
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dexp
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log SCHEMAS=USER01DIRECTORY=/mnt/data/dexp
./dexp USERID=SYSDBA/SYSDBA FILE=db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dexp
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log FULL=Y DIRECTORY=/mnt/data/dimp
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log OWNER=USER01 DIRECTORY=/mnt/data/dim
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log SCHEMAS=USER01 DIRECTORY=/mnt/data/dimp
./dimp USERID=SYSDBA/SYSDBA FILE=/mnt/data/dexp/db_str.dmp LOG=db_str.log TABLES=table1,table2 DIRECTORY=/mnt/data/dimp