这篇文章主要介绍“执行SQL语句进行表空间备份的方法是什么”,在日常操作中,相信很多人在执行SQL语句进行表空间备份的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”执行SQL语句进行表空间备份的方法是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在DIsql工具中使用BACKUP语句也可以备份单个表空间。同备份数据库一样,执行表空间备份服务器也必须运行在归档模式下,启动DIsql输入以下语句即可备份表空间:

SQL>backuptablespacemainbackupset'ts_backup_main_01';executedsuccessfullyusedtime:00:00:13.841.Executeidis45.

默认的备份目录为+DMDATA/data/rac/bak

SQL>select*fromv$dm_iniwherepara_name='BAK_PATH';LINEIDPARA_NAMEPARA_VALUEMIN_VALUEMAX_VALUEMPP_CHKSESS_VALUEFILE_VALUEDESCRIPTIONPARA_TYPE---------------------------------------------------------------------------------------------------------------------------------1BAK_PATH+DMDATA/data/rac/bakNULLNULLN+DMDATA/data/rac/bak+DMDATA/data/rac/bakbackupfilepathREADONLYusedtime:9.531(ms).Executeidis48.SQL>SQL>select*fromv$backupsetwherebackup_pathlike'+DMDATA/data/rac/bak%';LINEIDDEVICE_TYPEBACKUP_IDPARENT_IDBACKUP_NAMEBACKUP_PATHTYPELEVELRANGE#OBJECT_NAMEOBJECT_IDBASE_NAMEBACKUP_TIMEDESC#ENCRYPT_TYPECOMPRESS_LEVELWITHOUT_LOGUSE_PWRPKG_SIZEBEGIN_LSNEND_LSNBKP_NUMDBF_NUMPARALLEL_NUMDDL_CLONEMPP_FLAGMIN_TRX_START_LSNMIN_EXEC_VERCUMULATIVE--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1DISK2044941324-1TS_FULL_MAIN_20200529_091214_000914+DMDATA/data/rac/bak/ts_backup_main_01002MAIN42020-05-2909:12:22.000279000033554432509085099011100493981175075960usedtime:00:00:01.041.Executeidis50.ASM>cdts_backup_main_01+DMDATA/data/rac/bak/ts_backup_main_01Usedtime:2.098(ms).ASM>lsfile:ts_backup_main_01.bakfile:ts_backup_main_01.metatotalcount2.Usedtime:3.583(ms).

备份集“ts_backup_main_01”会生成到默认的备份路径下。如要设置其他备份选项需参考下文的联机备份表空间语法。

语法如下:
BACKUP TABLESPACE <表空间名> [FULL | INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]|
[BASE ON BACKUPSET '<基备份集目录>']][TO <备份名>] BACKUPSET ['<备份集路径>']
[DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份集描述>'] [MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <加密密码>[WITH ENCRYPTION][ENCRYPT WITH <加密算法>]] [COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>]];

表空间名:指定备份的表空间名称(除了temp表空间)。

FULL|INCREMENT:备份类型,FULL表示完全备份,INCREMENT表示增量备份。若不指定,默认为完全备份。

CUMULATIVE:用于增量备份中,指明为累积增量备份类型,若不指定则缺省为差异增量备份类型。

WITH BACKUPDIR:用于增量备份中,指定备份目录,最大长度为256个字节。若不指定,服务器自动在默认备份目录下搜索基备份。如果基备份不在默认的备份目录下,增量备份必须指定该参数。

BASE ON:用于增量备份中,指定基备份集目录。

TO:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:DB_备份类型_表空间名_备份时间。其中,备份时间为开始备份的系统时间。

BACKUPSET:指定当前备份集生成路径。若指定为相对路径,则在默认备份路径中生成备份集。若不指定,则在默认备份路径下以约定规则生成默认的表空间备份集目录。表空间级备份默认备份集目录名生成规则:TS_表空间名_备份类型_时间,如
TS_MAIN_INCREMENT_20160518_143057_123456。表明该备份集为2016年5月18日14时30分57秒123456毫秒时生成的表空间名为MAIN的表空间增量备份集。若表空间名称超长,使上述完整名称长度大于128个字节,则去掉表空间名字段,调整为TS_备份类型_时间。

DEVICE TYPE:指存储备份集的介质类型,支持DISK和TAPE,默认DISK。DISK表示存储备份集到磁盘,TAPE表示存储到磁带。

PARMS:只对介质类型为TAPE时有效。

BACKUPINFO:备份的描述信息。最大不超过256个字节。

MAXPIECESIZE:最大备份片文件大小上限,以M为单位,最小128M,32位系统最大2G,64位系统最大128G。

IDENTIFIED BY:指定备份时的加密密码。密码应用双引号括起来,这样避免一些特殊字符通不过语法检测。密码的设置规则遵行ini参数pwd_policy指定的口令策略。

WITH ENCRYPTION:指定加密类型,0表示不加密,不对备份文件进行加密处理;1表示简单加密,对备份文件设置口令,但文件内容仍以明文存;2表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。

ENCRYPT WITH:加密算法。缺省情况下,算法为AES256_CFB。

加密算法包括:

DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、AES128_CBC、AES128_CFB、AES128_OFB、AES192_ECB、AES192_CBC、AES192_CFB、AES192_OFB、AES256_ECB、AES256_CBC、AES256_CFB、AES256_OFB、RC4

COMPRESSED:取值范围0~9。0表示不压缩,1表示1级压缩,9表示9级压缩。压缩级别越高,压缩越慢,但压缩比越高。若未指定,但指定COMPRESSED,则默认1;否则,默认0。

TRACE FILE:指定生成的TRACE文件。启用TRACE,但不指定TRACE FILE时,默认在DM数据库系统的log目录下生成DM_SBTTRACE_年月.LOG文件;若使用相对路径,则生成在执行码同级目录下。若用户指定,则指定的文件不能为已经存在的文件,否则报错;也不可以为ASM文件。

TRACE LEVEL:有效值1、2,默认为1表示不启用TRACE,此时若指定了TRACE FILE,会生成TRACE文件,但不写入TRACE信息;为2启用TRACE并写入TRACE相关内容。

TASK THREAD:备份过程中数据处理过程线程的个数,取值范围0~64,默认为4。若指定为0,则调整为1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过512。

PARALLEL:指定并行备份的并行数,取值范围0~128。若不指定,则默认为4,指定0或者1均认为为非并行备份。若未指定关键PARALLEL,则认为非并行备份。并行备份不支持存在介质为TAPE的备份。线程数(TASK THREAD)*并行数(PARALLEL)不得超过512。

使用说明:
1. 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
2. 系统处于归档模式下时,才允许进行表空间备份。
3. MOUNT状态下,不允许进行表空间备份。
4. MPP环境不允许进行表空间备份。

2. 设置备份选项
表空间备份也可指定备份集路径、介质类型、备份名等备份选项。

增量备份指定基备份目录
BASE ON 参数用于增量备份中,用来指定基备份集的目录。如果不指定该参数,会在备份搜索目录中搜索最近一次的完全备份或增量备份作为这次增量备份的基备份。若需要在特定的备份集基础上执行增量备份就需要使用该参数。

下面以增量备份用户MAIN表空间为例,指定BASE ON参数执行增量备份:

SQL>backuptablespacemainbackupset'/dm7/backup/ts_main_full_bak_20200529_01';executedsuccessfullyusedtime:00:00:01.133.Executeidis51.SQL>backuptablespacemainincrementbackupset'/dm7/backup/ts_main_increment_bak_20200529_01';executedsuccessfullyusedtime:00:00:01.126.Executeidis52.SQL>selectsf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_full_bak_20200529_01');LINEIDSF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_full_bak_20200529_01')-------------------------------------------------------------------------------------11usedtime:2.024(ms).Executeidis53.SQL>selectsf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_increment_bak_20200529_01');LINEIDSF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_increment_bak_20200529_01')------------------------------------------------------------------------------------------11usedtime:1.520(ms).Executeidis54.SQL>select*fromv$backupsetwherebackup_pathlike'/dm7/backup/ts%';LINEIDDEVICE_TYPEBACKUP_IDPARENT_IDBACKUP_NAMEBACKUP_PATHTYPELEVELRANGE#OBJECT_NAMEOBJECT_IDBASE_NAMEBACKUP_TIMEDESC#ENCRYPT_TYPECOMPRESS_LEVELWITHOUT_LOGUSE_PWRPKG_SIZEBEGIN_LSNEND_LSNBKP_NUMDBF_NUMPARALLEL_NUMDDL_CLONEMPP_FLAGMIN_TRX_START_LSNMIN_EXEC_VERCUMULATIVE-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1DISK1493450986-1TS_FULL_MAIN_20200529_111133_000175/dm7/backup/ts_main_full_bak_20200529_01002MAIN42020-05-2911:11:34.0002720000335544325090850996111004939811750759602DISK1885674227-1TS_INCR_MAIN_20200529_111346_000167/dm7/backup/ts_main_increment_bak_20200529_01102MAIN4TS_FULL_MAIN_20200529_111133_0001752020-05-2911:13:47.000258000033554432509085100211100493981175075960usedtime:00:00:01.048.Executeidis55.SQL>backuptablespacemainincrementbaseonbackupset'/dm7/backup/ts_main_full_bak_20200529_01'backupset'/dm7/backup/ts_main_increment_bak_20200529_02';executedsuccessfullyusedtime:00:00:01.133.Executeidis57.SQL>selectsf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_increment_bak_20200529_02');LINEIDSF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_increment_bak_20200529_02')------------------------------------------------------------------------------------------11usedtime:1.748(ms).Executeidis58.SQL>select*fromv$backupsetwherebackup_pathlike'/dm7/backup/ts%';LINEIDDEVICE_TYPEBACKUP_IDPARENT_IDBACKUP_NAMEBACKUP_PATHTYPELEVELRANGE#OBJECT_NAMEOBJECT_IDBASE_NAMEBACKUP_TIMEDESC#ENCRYPT_TYPECOMPRESS_LEVELWITHOUT_LOGUSE_PWRPKG_SIZEBEGIN_LSNEND_LSNBKP_NUMDBF_NUMPARALLEL_NUMDDL_CLONEMPP_FLAGMIN_TRX_START_LSNMIN_EXEC_VERCUMULATIVE-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1DISK1493450986-1TS_FULL_MAIN_20200529_111133_000175/dm7/backup/ts_main_full_bak_20200529_01002MAIN42020-05-2911:11:34.0002720000335544325090850996111004939811750759602DISK1885674227-1TS_INCR_MAIN_20200529_111346_000167/dm7/backup/ts_main_increment_bak_20200529_01102MAIN4TS_FULL_MAIN_20200529_111133_0001752020-05-2911:13:47.0002580000335544325090851002111004939811750759603DISK707233150-1TS_INCR_MAIN_20200529_111805_000417/dm7/backup/ts_main_increment_bak_20200529_02102MAIN4TS_FULL_MAIN_20200529_111133_0001752020-05-2911:18:06.000513000033554432509085100811100493981175075960usedtime:00:00:01.045.Executeidis59.

上述示例中,增量备份ts_main_increment_bak_20200529_02若不指定备份集'/dm7/backup/ts_main_full_bak_20200529_01作为基备份,那么默认会使用最近一次的备份集/dm7/backup/ts_main_increment_bak_20200529_01作为基备份。

3. 备份表空间
同数据库备份一样,表空间备份也可分为完全备份和增量备份。本节主要内容包括:
1. 完全备份
2. 增量备份

1.完全备份
执行表空间备份,数据库必须处于OPEN状态,MOUNT和SUSPEND状态下不允许执行表空间备份。表空间备份就是拷贝表空间内所有数据文件有效数据的过程。DM7仅支持表空间联机备份,完全备份一个表空间步骤如下:
1) 配置归档 。
2) 保证数据库处于OPEN状态。
3) DIsql中输入备份表空间语句,最简单的不设置其他参数的完全备份表空间语句,如下所示:

SQL>backuptablespacemainfullbackupset'/dm7/backup/ts_main_full_bak_20200529_02';executedsuccessfullyusedtime:00:00:01.129.Executeidis68.

备份语句中的FULL参数可以省略,不指定备份类型服务器会默认指定备份类型为完全备份。

SQL>selectsf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_full_bak_20200529_02');LINEIDSF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_full_bak_20200529_02')-------------------------------------------------------------------------------------11usedtime:2.508(ms).Executeidis69.SQL>select*fromv$backupsetwherebackup_path='/dm7/backup/ts_main_full_bak_20200529_02';LINEIDDEVICE_TYPEBACKUP_IDPARENT_IDBACKUP_NAMEBACKUP_PATHTYPELEVELRANGE#OBJECT_NAMEOBJECT_IDBASE_NAMEBACKUP_TIMEDESC#ENCRYPT_TYPECOMPRESS_LEVELWITHOUT_LOGUSE_PWRPKG_SIZEBEGIN_LSNEND_LSNBKP_NUMDBF_NUMPARALLEL_NUMDDL_CLONEMPP_FLAGMIN_TRX_START_LSNMIN_EXEC_VERCUMULATIVE----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1DISK-1442575362-1TS_FULL_MAIN_20200529_112705_000332/dm7/backup/ts_main_full_bak_20200529_02002MAIN42020-05-2911:27:06.000424000033554432509085101411100493981175075960usedtime:00:00:01.046.Executeidis70.

2.增量备份
执行表空间增量备份的主要目的同数据库增量备份一样是为了快速备份数据库中的修改,减少备份时间和避免重复的备份。
增量备份表空间步骤如下:
1) 配置归档。
2) 保证数据库处于OPEN状态。
3) DIsql中输入备份表空间语句,最简单的不设置其他参数的增量备份语句如下:

SQL>backuptablespacemainincrementbaseonbackupset'/dm7/backup/ts_main_full_bak_20200529_02'backupset'/dm7/backup/ts_main_increment_bak_2020052903';executedsuccessfullyusedtime:00:00:01.134.Executeidis71.SQL>selectsf_bakset_backup_dir_add('disk','/dm7/backup/ts_main_increment_bak_2020052903');LINEIDSF_BAKSET_BACKUP_DIR_ADD('disk','/dm7/backup/ts_main_increment_bak_2020052903')-----------------------------------------------------------------------------------------11usedtime:1.720(ms).Executeidis72.SQL>select*fromv$backupsetwherebackup_pathlike'%/dm7/backup/ts_main_%20200529%';LINEIDDEVICE_TYPEBACKUP_IDPARENT_IDBACKUP_NAMEBACKUP_PATHTYPELEVELRANGE#OBJECT_NAMEOBJECT_IDBASE_NAMEBACKUP_TIMEDESC#ENCRYPT_TYPECOMPRESS_LEVELWITHOUT_LOGUSE_PWRPKG_SIZEBEGIN_LSNEND_LSNBKP_NUMDBF_NUMPARALLEL_NUMDDL_CLONEMPP_FLAGMIN_TRX_START_LSNMIN_EXEC_VERCUMULATIVE-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------1DISK1493450986-1TS_FULL_MAIN_20200529_111133_000175/dm7/backup/ts_main_full_bak_20200529_01002MAIN42020-05-2911:11:34.0002720000335544325090850996111004939811750759602DISK1885674227-1TS_INCR_MAIN_20200529_111346_000167/dm7/backup/ts_main_increment_bak_20200529_01102MAIN4TS_FULL_MAIN_20200529_111133_0001752020-05-2911:13:47.0002580000335544325090851002111004939811750759603DISK707233150-1TS_INCR_MAIN_20200529_111805_000417/dm7/backup/ts_main_increment_bak_20200529_02102MAIN4TS_FULL_MAIN_20200529_111133_0001752020-05-2911:18:06.0005130000335544325090851008111004939811750759604DISK-1442575362-1TS_FULL_MAIN_20200529_112705_000332/dm7/backup/ts_main_full_bak_20200529_02002MAIN42020-05-2911:27:06.0004240000335544325090851014111004939811750759605DISK-738478264-1TS_INCR_MAIN_20200529_113155_000766/dm7/backup/ts_main_increment_bak_2020052903102MAIN4TS_FULL_MAIN_20200529_112705_0003322020-05-2911:31:56.000863000033554432509085102011100493981175075960usedtime:00:00:01.062.Executeidis73.

备份语句中指定的INCREMENT参数表示执行的备份类型为增量备份,不可省略。若要创建累积增量备份,还需要指定CUMULATIVE参数,否则缺省为差异增量备份。若基备份不在默认备份目录,WITH BACKUPDIR参数必须指定,用于搜索基备份集。

到此,关于“执行SQL语句进行表空间备份的方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!