共計 8878 個字符,預計需要花費 23 分鐘才能閱讀完成。
這篇文章主要介紹“怎么執行 SQL 語句進行歸檔備份”,在日常操作中,相信很多人在怎么執行 SQL 語句進行歸檔備份問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么執行 SQL 語句進行歸檔備份”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
1. 概述
在 DIsql 工具中使用 BACKUP 語句可以備份歸檔日志。使用歸檔備份的前提:一是,歸檔文件的 db_magic 值和庫的 db_magic 值必須一樣;二是,服務器必須配置歸檔;三是,歸檔日志必須連續,如果出現不連續的情況,前面的會忽略,僅備份最新的連續部分。如果未收集到指定范圍內的歸檔,則不會備份。聯機備份的時候經常會切換歸檔文件,最后一個歸檔總是空的,所以最后一個歸檔不會被備份。
DIsql 中輸入以下即可備份歸檔:
SQL select * from v$dm_ini where para_name= BAK_PATH
LINEID PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION PARA_TYPE
---------- --------- ----------------------------------- --------- --------- ------- ----------------------------------- ----------------------------------- ---------------- ---------
1 BAK_PATH /dm_home/dmdba/dmdbms/data/jydm/bak NULL NULL N /dm_home/dmdba/dmdbms/data/jydm/bak /dm_home/dmdba/dmdbms/data/jydm/bak backup file path READ ONLY
used time: 7.311(ms). Execute id is 1219.
SQL backup archive log all to archivelog_backup_2020052901 backupset archivelog_backup_2020052901
backup archive log all to archivelog_backup_2020052901 backupset archivelog_backup_2020052901
[-7109]:Pipe connect failure.
used time: 2.618(ms). Execute id is 0.
在 Oracle Linux7.1 中要使用 dmap 需要手動啟動 DmAPService 服務和 dmap 執行碼,在 Redhat 中啟動 DmAPService 服務時會同時啟動 dmap
[root@shard1 bak]# systemctl start DmAPService
[dmdba@shard1 ~]$ cd /dm_home/dmdba/dmdbms/bin
[dmdba@shard1 bin]$ ./dmap
dmap V7.1.6.46-Build(2018.02.08-89107)ENT
dmap is ready
SQL backup archive log all to archivelog_backup_2020052901 backupset archivelog_backup_2020052901
executed successfully
used time: 00:00:34.482. Execute id is 1234.
SQL select * from v$backupset where backup_path= /dm_home/dmdba/dmdbms/data/jydm/bak/archivelog_backup_2020052901
LINEID DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM DDL_CLONE MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE
---------- ----------- ----------- ----------- ---------------------------- ---------------------------------------------------------------- ----------- ----------- ----------- ----------- ----------- --------- --------------------------- ----- ------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- -------------------- ------------ -----------
1 DISK -30479448 -1 ARCHIVELOG_BACKUP_2020052901 /dm_home/dmdba/dmdbms/data/jydm/bak/archivelog_backup_2020052901 3 0 4 ARCHIVE -1 2020-05-29 18:44:25.000480 0 0 1 0 33554432 8236220 15088441 1 9 1 0 0 15088441 117507596 0
used time: 00:00:01.010. Execute id is 1266.
SQL select * from v$parameter where name= BAK_USE_AP
LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ---------- ---- ----- --------- ---------- -----------------------------------------------------------------------------------
1 541 BAK_USE_AP SYS 1 1 1 backup use assistant plus-in, 0:use sub process; 1:use AP; 2:not use AP. default 1.
used time: 6.765(ms). Execute id is 1252.
SQL select * from v$parameter where name= BAK_POLICY
LINEID ID NAME TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION
---------- ----------- ---------- ---- ----- --------- ---------- --------------
1 7 BAK_POLICY SYS 0 0 0 backup pattern
used time: 7.405(ms). Execute id is 1253.
備份集“archivelog_backup_2020052901”會生成到默認的備份路徑下。如要設置其他備份選項需參考下文的備份歸檔語法。
語法如下:
BACKUP
[ALL | [FROM LSN ]| [UNTIL LSN ]|[LSN BETWEEN AND ] | [FROM TIME ]|[UNTIL TIME ]|
[TIME BETWEEN AND ]][][DELETE INPUT]
[TO 備份名]
BACKUPSET [ 備份集路徑][DEVICE TYPE 介質類型 [PARMS 介質參數]]
[BACKUPINFO 備份描述]
[MAXPIECESIZE 備份片限制大小]
[IDENTIFIED BY 密鑰 [WITH ENCRYPTION][ENCRYPT WITH 加密算法]]
[COMPRESSED [LEVEL 壓縮級別]]
[WITHOUT LOG]
[TRACE FILE ] [TRACE LEVEL ]
[TASK THREAD 線程數][PARALLEL [ 并行數
ALL:備份所有的歸檔;
FROM LSN:指定備份的起始 lsn。
UNTIL LSN:指定備份的截止 lsn。歸檔日志的有效 LSN 范圍(起始 lsn, 截止 lsn)可以通過 V$ARCH_FILE 查看,或者通過 dmclvt 工具分析日志的結果查看。如果用戶無法確定準確的 lsn,也可以指定一個模糊的 lsn 值,取值范圍(1~9223372036854775807)。只要指定的 FROM LSN、UNTIL LSN 與有效 LSN 范圍有重疊部分,就會備份包含重疊部分的完整日志文件。
FROM TIME:指定備份的開始的時間點。
UNTILTIME:指定備份的截止的時間點。
BETWEEN … AND …:指定備份的區間。指定區間后,只會備份指定區間內的歸檔文件。:搜索過濾。搜索過濾僅限于根據備份指定條件能找到的所有歸檔備份集。1)num TIMES,取值范圍為 0~2147483647,指若歸檔文件已經備份了 num 次,則不再備份;否則備份。如 num=3,則認為已經備份了 3 次的歸檔文件就不再備份。若 num=0,則認為所有都不需要備份。2)SINCE TIME datetime_String,指定時間開始沒有備份的歸檔文件進行備份。3)若以上兩種均未指定,則備份所有未備份過的歸檔日志文件。
DELETE INPUT:用于指定備份完成之后,是否刪除歸檔操作。
TO:指定生成備份名稱。若未指定,系統隨機生成,默認備份名格式為:ARCH_備份時間。其中,備份時間為開始備份的系統時間。
BACKUPSET:指定當前備份集生成路徑,若指定為相對路徑,則在默認備份路徑中生成備份集。若不指定具體備份集路徑,則在默認備份路徑下,以約定歸檔備份集命名規則生成默認的歸檔備份集目錄。歸檔備份默認備份集目錄名生成規則:ARCH_LOG_時間,如
ARCH_LOG_20160518_143057_123456。表明該備份集為 2016 年 5 月 18 日 14 時 30 分 57 秒 123456 毫秒時生成的歸檔備份集。
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。
WITHOUT LOG:只是語法支持,不起任何作用。
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 均認為為非并行備份。并行備份不支持介質為 TAPE 的備份。線程數(TASK THREAD)* 并行數(PARALLEL)不得超過 512。
2. 設置備份選項
歸檔備份常用的備份選項有設置備份名、設置備份集路徑、指定介質參數、添加備份描述等,設置方式同數據庫備份相同。
3. 備份歸檔
歸檔備份拷貝指定歸檔目錄下的所有的歸檔文件到備份集中,并記錄各個歸檔文件的屬性,文件大小,LSN 區間等。歸檔備份不存在增量備份
之說。當需要保存庫的歸檔時,可以使用歸檔備份。
完整的備份歸檔步驟如下:
1) 配置歸檔,參考 3.1 節。
2) 數據庫處于 OPEN 或者 MOUNT 狀態。
3) DIsql 中輸入備份數據庫語句。
例如,備份歸檔日志,通過 LSN BETWEEN … AND … 來指定起始和截至 LSN。
首先,確定 LSN 范圍。
SQL select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;
LINEID ARCH_LSN CLSN PATH
---------- -------------------- -------------------- ----------------------------------------------------------------------
1 0 0 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200529193925775_0.log
2 8236220 8493250 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200407140301179_0.log
3 8493250 9294927 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200407225606099_0.log
4 9294928 11047946 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200410180147714_0.log
5 11047947 11054313 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200425175952636_0.log
6 11054313 12906866 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200509201513282_0.log
7 12906867 13775969 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200513203613043_0.log
8 13775970 14461220 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200526003546144_0.log
9 14461221 14942037 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200526003632028_0.log
10 14942037 15088441 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200528230749046_0.log
11 15088442 15092081 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200529184351533_0.log
12 15092082 15092086 /dm_home/dmdba/dmdbms/data/arch/ARCHIVE_LOCAL1_20200529193755551_0.log
12 rows got
通過查詢結果選出備份的起始 LSN 和截至 LSN。比如 15092082 15092086
其次,備份歸檔。
SQL backup archivelog lsn between 15092082 and 15092086 backupset arch_backup_lsn_15092082_15092086
executed successfully
used time: 00:00:01.174. Execute id is 1316.
SQL select * from v$backupset where backup_path= /dm_home/dmdba/dmdbms/data/jydm/bak/arch_backup_lsn_15092082_15092086
LINEID DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM DDL_CLONE MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE
---------- ----------- ----------- ----------- --------------------------- --------------------------------------------------------------------- ----------- ----------- ----------- ----------- ----------- --------- --------------------------- ----- ------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- -------------------- ------------ -----------
1 DISK -1385444837 -1 ARCH_20200529_194216_000768 /dm_home/dmdba/dmdbms/data/jydm/bak/arch_backup_lsn_15092082_15092086 3 0 4 ARCHIVE -1 2020-05-29 19:42:17.000861 0 0 1 0 33554432 15092082 15092086 1 1 1 0 0 15092086 117507596 0
used time: 00:00:01.013. Execute id is 1317.
到此,關于“怎么執行 SQL 語句進行歸檔備份”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!