標籤:oracle asm 檔案 複製
工作中,有時需要把檔案從ASM中複製到檔案系統中或者反過來,做一些維護操作,本文介紹了4種複製檔案的的方法:
下面分別介紹這4種方法
1、ASMCMD中的cp命令(11g)
cp命令是11g新增的命令,使用它可以輕鬆的把檔案從ASM中複製到檔案系統中或者反過來。還可以把ASM中的檔案複製到網路上的其他伺服器的檔案系統中。
#從ASM複製到檔案系統[[email protected] ~]$ asmcmd -pASMCMD [+] > cd dataASMCMD [+data] > cd orclASMCMD [+data/orcl] > cd datafileASMCMD [+data/orcl/datafile] > lsSYSAUX.257.925306091SYSTEM.256.925306089UNDOTBS1.258.925306091UNDOTBS2.264.925306377USERS.259.925306091ASMCMD [+data/orcl/datafile] > ls -lType Redund Striped Time Sys NameDATAFILE UNPROT COARSE MAY 21 11:00:00 Y SYSAUX.257.925306091DATAFILE UNPROT COARSE MAY 21 11:00:00 Y SYSTEM.256.925306089DATAFILE UNPROT COARSE MAY 21 11:00:00 Y UNDOTBS1.258.925306091DATAFILE UNPROT COARSE MAY 21 11:00:00 Y UNDOTBS2.264.925306377DATAFILE UNPROT COARSE MAY 21 11:00:00 Y USERS.259.925306091ASMCMD [+data/orcl/datafile] > cp USERS.259.925306091 /home/grid/users.dbfcopying +data/orcl/datafile/USERS.259.925306091 -> /home/grid/users.dbfASMCMD [+data/orcl/datafile] >#查看複製結果[[email protected] ~]$ ll /home/grid/users.dbf -rw-r-----. 1 grid oinstall 5251072 May 21 15:20 /home/grid/users.dbf#從檔案系統複製到ASMASMCMD [+data/orcl/datafile] > cp /home/grid/users.dbf +data/orclcopying /home/grid/users.dbf -> +data/orcl/users.dbf#查看複製結果ASMCMD [+data/orcl/datafile] > cd +data/orclASMCMD [+data/orcl] > ls -lType 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.#驗證複製結果[[email protected] ~]$ 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 -lType 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-17using channel ORA_DISK_1channel ORA_DISK_1: starting datafile conversioninput file name=+DATA/orcl/datafile/users.259.925306091converted datafile=/home/oracle/user3.dbfchannel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01Finished conversion at target at 21-MAY-17#驗證[[email protected] ~]$ 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 catalogsql statement: alter tablespace users read onlyRMAN> convert tablespace users format ‘/home/oracle/users%U.dbf‘;Starting conversion at source at 21-MAY-17allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=81 instance=orcl1 device type=DISKchannel ORA_DISK_1: starting datafile conversioninput datafile file number=00004 name=+DATA/orcl/datafile/users.259.925306091converted datafile=/home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbfchannel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01Finished conversion at source at 21-MAY-17#驗證[[email protected] ~]$ 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#從檔案系統拷貝到ASMRMAN> 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-17using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=64 instance=orcl1 device type=DISKchannel ORA_DISK_1: starting datafile conversioninput file name=/home/oracle/user3.dbfconverted datafile=+DATA/orcl/datafile/users.274.944582713channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01channel ORA_DISK_1: starting datafile conversioninput file name=/home/oracle/usersdata_D-ORCL_I-1453086940_TS-USERS_FNO-4_0ns4qbtn.dbfconverted datafile=+DATA/orcl/datafile/users.275.944582713channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:01Finished 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-17using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=69 instance=orcl1 device type=DISKchannel ORA_DISK_1: starting datafile copyinput datafile file number=00004 name=+DATA/orcl/datafile/users.259.925306091output file name=/home/oracle/user4.dbf tag=TAG20170521T161225 RECID=17 STAMP=944583145channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01Finished backup at 21-MAY-17#驗證[[email protected] ~]$ 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》
本文出自 “DBA Fighting!” 部落格,請務必保留此出處http://hbxztc.blog.51cto.com/1587495/1927904
Oracle 從ASM複製檔案到檔案系統