您好,登錄后才能下訂單哦!
工作中,有時需要把文件從ASM中復制到文件系統中或者反過來,做一些維護操作,本文介紹了4種復制文件的的方法:
ASMCMD中的cp命令(11g)
dbms_file_transfer包
rman的convert或backup as copy
FTP
下面分別介紹這4種方法
1、ASMCMD中的cp命令(11g)
cp命令是11g新增的命令,使用它可以輕松的把文件從ASM中復制到文件系統中或者反過來。還可以把ASM中的文件復制到網絡上的其他服務器的文件系統中。
#從ASM復制到文件系統 [grid@rac1 ~]$ asmcmd -p ASMCMD [+] > cd data ASMCMD [+data] > cd orcl ASMCMD [+data/orcl] > cd datafile ASMCMD [+data/orcl/datafile] > ls SYSAUX.257.925306091 SYSTEM.256.925306089 UNDOTBS1.258.925306091 UNDOTBS2.264.925306377 USERS.259.925306091 ASMCMD [+data/orcl/datafile] > ls -l Type Redund Striped Time Sys Name DATAFILE UNPROT COARSE MAY 21 11:00:00 Y SYSAUX.257.925306091 DATAFILE UNPROT COARSE MAY 21 11:00:00 Y SYSTEM.256.925306089 DATAFILE UNPROT COARSE MAY 21 11:00:00 Y UNDOTBS1.258.925306091 DATAFILE UNPROT COARSE MAY 21 11:00:00 Y UNDOTBS2.264.925306377 DATAFILE UNPROT COARSE MAY 21 11:00:00 Y USERS.259.925306091 ASMCMD [+data/orcl/datafile] > cp USERS.259.925306091 /home/grid/users.dbf copying +data/orcl/datafile/USERS.259.925306091 -> /home/grid/users.dbf ASMCMD [+data/orcl/datafile] > #查看復制結果 [grid@rac1 ~]$ ll /home/grid/users.dbf -rw-r-----. 1 grid oinstall 5251072 May 21 15:20 /home/grid/users.dbf #從文件系統復制到ASM ASMCMD [+data/orcl/datafile] > cp /home/grid/users.dbf +data/orcl copying /home/grid/users.dbf -> +data/orcl/users.dbf #查看復制結果 ASMCMD [+data/orcl/datafile] > cd +data/orcl ASMCMD [+data/orcl] > ls -l Type Redund Striped Time Sys Name Y ARCHIVELOG/ Y CONTROLFILE/ Y DATAFILE/ Y ONLINELOG/ Y PARAMETERFILE/ Y TEMPFILE/ N spfileorcl.ora => +DATA/ORCL/PARAMETERFILE/spfile.268.925423909 N users.dbf => +DATA/ASM/DATAFILE/users.dbf.271.944580085
cp的詳細使用情況可以使用help cp命令獲得。
如果ASM的版本是11g以前的版本可以使用如下三種方法復制文件。
2、dbms_file_transfer包
這個包是從Oracle 9不開始提供的,利用這個包可以在兩個位置之間傳輸文件,這兩個位置可以是同一臺計算機或者網絡上的兩臺計算機。Oracle10g擴展了這個包的功能,可以完成從一個ASM Diskgroup拷貝到另一個ASM Diskgroup、從ASM Diskgroup拷貝到普通文件系統、從普通文件系統拷貝到ASM Diskgroup、從文件系統拷貝到文件系統或者RAW Device。這個包提供了3個方法,可以完成不同的任務。
方法 | 功能說明 |
copy_file | 完成文件從本地一個目錄拷貝到本地的另一個目錄,這個方法不能完成遠程傳輸 |
get_file | 這個方法完成把遠程的文件拷貝到本地的目錄中,類似于下載 |
put_file | 這個方法完成本地文件傳送到遠程的目的,類似于上傳 |
使用方法:
#創建目錄 SQL> create directory asm_dir as '+data/ASM/DATAFILE/'; Directory created. SQL> create directory os_dir as '/home/oracle'; Directory created. #執行復制 SQL> exec dbms_file_transfer.copy_file('asm_dir','user2.dbf.272.944581345','os_dir','user.dbf'); PL/SQL procedure successfully completed. #驗證復制結果 [oracle@rac1 ~]$ ls -l /home/oracle/user.dbf -rw-r-----. 1 oracle asmadmin 5251072 May 21 15:49 /home/oracle/user.dbf #進行反向復制 SQL> exec dbms_file_transfer.copy_file('os_dir','user.dbf','asm_dir','user2.dbf'); PL/SQL procedure successfully completed. #驗證 ASMCMD [+data/ASM/DATAFILE] > ls -l Type Redund Striped Time Sys Name N user2.dbf => +DATA/ORCL/DATAFILE/COPY_FILE.273.944581883
3、rman的convert和backup as copy命令
3.1 convert命令
convert命令是用于對數據文件進行字節格式轉換的。Oracle可以在不同OS平臺間進行表空間傳(TTS),如果兩個平臺的字節格式不一致,則需要參數據文件進行格式轉換,這個轉換可以 在源數據庫進行,也可以在目的數據庫中執行。如果在源數據庫中執行,則需要使用convert tablespace命令,如果在目的數據庫中執行,則需要使用convert datafile命令。
雖然convert這個命令主要用于跨平臺傳輸表空間,它也可以完成ASM和本地文件系統間拷貝文件,并且也是很簡單的一種方法。
#使用convert datafile從ASM復制到文件系統 RMAN> convert datafile '+data/orcl/datafile/USERS.259.925306091' format '/home/oracle/user3.dbf'; Starting conversion at target at 21-MAY-17 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile conversion input file name=+DATA/orcl/datafile/users.259.925306091 converted datafile=/home/oracle/user3.dbf channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01 Finished conversion at target at 21-MAY-17 #驗證 [oracle@rac1 ~]$ ls -l /home/oracle/user3.dbf -rw-r-----. 1 oracle asmadmin 5251072 May 21 16:00 /home/oracle/user3.dbf #使用convert tablespace,使用時需要把users表空間置為只讀 RMAN> sql 'alter tablespace users read only'; using target database control file instead of recovery catalog sql statement: alter tablespace users read only RMAN> convert tablespace users format '/home/oracle/users%U.dbf'; Starting conversion at source at 21-MAY-17 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=81 instance=orcl1 device type=DISK channel ORA_DISK_1: starting datafile conversion input datafile file number=00004 name=+DATA/orcl/datafile/users.259.925306091 converted datafile=/home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01 Finished conversion at source at 21-MAY-17 #驗證 [oracle@rac1 ~]$ ll /home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf -rw-r-----. 1 oracle asmadmin 5251072 May 21 16:03 /home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf #從文件系統拷貝到ASM RMAN> convert datafile '/home/oracle/user3.dbf','/home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf' format '+data'; Starting conversion at target at 21-MAY-17 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=64 instance=orcl1 device type=DISK channel ORA_DISK_1: starting datafile conversion input file name=/home/oracle/user3.dbf converted datafile=+DATA/orcl/datafile/users.274.944582713 channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting datafile conversion input file name=/home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbf converted datafile=+DATA/orcl/datafile/users.275.944582713 channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01 Finished conversion at target at 21-MAY-17 #從日志中看出轉換的文件名 #converted datafile=+DATA/orcl/datafile/users.274.944582713 #converted datafile=+DATA/orcl/datafile/users.274.944582713
3.2 backup as copy命令
backup as copy命令是以鏡像的方式對文件進行備份,自然可以把文件從ASM復制到文件系統中。這也是從文件系統遷移到ASM時可以選擇的方法之一。
#執行復制 RMAN> backup as copy datafile '+DATA/orcl/datafile/users.259.925306091' format '/home/oracle/user4.dbf'; Starting backup at 21-MAY-17 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=69 instance=orcl1 device type=DISK channel ORA_DISK_1: starting datafile copy input datafile file number=00004 name=+DATA/orcl/datafile/users.259.925306091 output file name=/home/oracle/user4.dbf tag=TAG20170521T161225 RECID=17 STAMP=944583145 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 21-MAY-17 #驗證 [oracle@rac1 ~]$ ls -l /home/oracle/user4.dbf -rw-r-----. 1 oracle asmadmin 5251072 May 21 16:12 /home/oracle/user4.dbf
4.FTP方法
FTP方法可以像庫中復制使用傳統文件傳輸協議(FTP)對普通文件執行常規操作那樣,對ASM文件和目錄執行操作。通過這種方式訪問ASM文件的典型應用是從一個數據庫向另一個數據庫中復制ASM文件。需要XML DB支持,配置起來最麻煩,有興趣的同學可以參考《Oracle Database 11g RAC手冊原書第2版》或官方文檔:http://docs.oracle.com/cd/E11882_01/server.112/e18951/asmfiles.htm#BABJCCEI
參考《大話Oracle RAC》
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。