溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASM與File System數(shù)據(jù)文件轉(zhuǎn)移方法有哪些

發(fā)布時(shí)間:2021-11-10 14:01:28 來源:億速云 閱讀:90 作者:小新 欄目:關(guān)系型數(shù)據(jù)庫(kù)

這篇文章主要介紹ASM與File System數(shù)據(jù)文件轉(zhuǎn)移方法有哪些,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

1、環(huán)境介紹

實(shí)驗(yàn)使用Oracle Linux環(huán)境,對(duì)應(yīng)底層Oracle 11g單實(shí)例+ASM存儲(chǔ)方案。

[root@SimpleLinux ~]# uname -r

2.6.18-128.el5

[root@SimpleLinux ~]# ps -ef | grep pmon

grid      3214     1  0 13:53 ?        00:00:00 asm_pmon_+ASM

oracle    3294     1  0 13:53 ?        00:00:00 ora_pmon_ora11g

root      3376  3107  0 13:53 pts/0    00:00:00 grep pmon

數(shù)據(jù)庫(kù)使用11gR2版本。

SQL> select * from v$version;

BANNER

-------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE  11.2.0.3.0 Production

TNS for Linux: Version 11.2.0.3.0 - Production

NLSRTL Version 11.2.0.3.0 – Production

建立一個(gè)數(shù)據(jù)文件目錄。

[oracle@SimpleLinux oracle]$ cd $ORACLE_HOME

[oracle@SimpleLinux db_1]$ mkdir oradata

[oracle@SimpleLinux db_1]$ ls -l | grep oradata

drwxr-xr-x  2 oracle oinstall  4096 Dec 27 13:56 oradata

數(shù)據(jù)庫(kù)采用歸檔模式,注意:下述實(shí)驗(yàn)要求在歸檔模式才能實(shí)現(xiàn)。

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     25

Next log sequence to archive   27

Current log sequence           27

創(chuàng)建一個(gè)實(shí)驗(yàn)文件表空間。

SQL> create tablespace test datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' size 100m

  2  extent management local uniform size 1m

  3  segment space management auto;

Tablespace created

SQL> select file_name, tablespace_name from dba_data_files;

FILE_NAME                                          TABLESPACE_NAME

-------------------------------------------------- ------------------------------

+DATA/ora11g/datafile/users.259.825944329          USERS

+DATA/ora11g/datafile/undotbs1.258.825944329       UNDOTBS1

+DATA/ora11g/datafile/sysaux.257.825944327         SYSAUX

+DATA/ora11g/datafile/system.256.825944325         SYSTEM

+DATA/ora11g/datafile/example.265.825944513        EXAMPLE

/u01/app/oracle/product/11.2.0/db_1/oradata/testtb TEST

l.dbf                                              

6 rows selected

2、ASMCMD命令

ASMCMD是Oracle提供的管理ASM的命令行工具。進(jìn)入11g之后,ASMCMD提供了cp命令,仿照Linux平臺(tái)的cp命令。ASMCMD是我們事先拷貝的一種選擇。

我們實(shí)驗(yàn)是將文件系統(tǒng)的TEST文件,轉(zhuǎn)移到+DATA ASM DiskGroup中。

首先切換一下logfile。

SQL> alter system switch logfile;

System altered

--我們事先online移動(dòng),是進(jìn)行offline之后才行;

SQL> alter database datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' offline;

Database altered

SQL> select file_name, online_status from dba_data_files where file_id=6;

FILE_NAME                                          ONLINE_STATUS

-------------------------------------------------- -------------

/u01/app/oracle/product/11.2.0/db_1/oradata/testtb RECOVER

l.dbf                                             

進(jìn)入ASMCMD命令行進(jìn)行處理。

--使用grid用戶,注意這個(gè)過程是伴隨著登錄ASM實(shí)例過程的。

[oracle@SimpleLinux oradata]$ su - grid

Password:

[grid@SimpleLinux ~]$ asmcmd

ASMCMD> cp /u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf +DATA/ora11g/datafile/testtbl.dbf

copying /u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf -> +DATA/ora11g/datafile/testtbl.dbf

在ASM中,查看到文件的確保存在目錄了。

ASMCMD> ls -l

Type      Redund  Striped  Time             Sys  Name

DATAFILE  UNPROT  COARSE   DEC 27 13:00:00  Y    EXAMPLE.265.825944513

DATAFILE  UNPROT  COARSE   DEC 27 13:00:00  Y    SYSAUX.257.825944327

DATAFILE  UNPROT  COARSE   DEC 27 13:00:00  Y    SYSTEM.256.825944325

DATAFILE  UNPROT  COARSE   DEC 27 13:00:00  Y    UNDOTBS1.258.825944329

DATAFILE  UNPROT  COARSE   DEC 27 13:00:00  Y    USERS.259.825944329

                                            N    testtbl.dbf => +DATA/ASM/DATAFILE/testtbl.dbf.268.835279797

另外在Oracle的控制文件體系中,修改文件名稱。

SQL> alter database rename file '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' to '+DATA/ora11g/datafile/testtbl.dbf';

Database altered

SQL> select file_name, file_id from dba_data_files;

FILE_NAME                                             FILE_ID

-------------------------------------------------- ----------

(篇幅原因,有省略……)

+DATA/ora11g/datafile/example.265.825944513                 5

+DATA/ora11g/datafile/testtbl.dbf                           6

6 rows selected

由于進(jìn)行online操作,對(duì)數(shù)據(jù)文件6進(jìn)行恢復(fù)、上線。

SQL> alter database recover datafile 6;

Database altered

SQL> alter database datafile 6 online;

Database altered

SQL> select file_name, file_id, online_status from dba_data_files;

FILE_NAME                                             FILE_ID ONLINE_STATUS

-------------------------------------------------- ---------- -------------

(篇幅原因,有省略……)

+DATA/ora11g/datafile/example.265.825944513                 5 ONLINE

+DATA/ora11g/datafile/testtbl.dbf                           6 ONLINE

6 rows selected

原來的數(shù)據(jù)文件,刪掉就好了。

[oracle@SimpleLinux oradata]$ ls -l

total 102512

-rw-r----- 1 oracle asmadmin 104865792 Dec 27 14:02 testtbl.dbf

[oracle@SimpleLinux oradata]$ rm testtbl.dbf

試驗(yàn)成功。

3、DBMS_FILE_TRANSFER包方法

Oracle PL/SQL中包dbms_file_transfer也可以實(shí)現(xiàn)傳輸。其中的copy_file過程,可以實(shí)現(xiàn)將文件傳輸跨越ASM和文件系統(tǒng)。

使用dbms_file_transfer包前提需要指定文件目錄,在Oracle中是通過directory對(duì)象實(shí)現(xiàn)的。

SQL> create directory souredir as '+DATA/ora11g/datafile/';

Directory created

SQL> create directory destdir as '/u01/app/oracle/product/11.2.0/db_1/oradata';

Directory created

本方法我們將上節(jié)中的ASM文件傳輸?shù)紽ile System中。

SQL> select file_name, file_id, online_status from dba_data_files;

FILE_NAME                                             FILE_ID ONLINE_STATUS

-------------------------------------------------- ---------- -------------

(篇幅原因,有省略……)

+DATA/ora11g/datafile/example.265.825944513                 5 ONLINE

+DATA/ora11g/datafile/testtbl.dbf                           6 RECOVER –已經(jīng)被offline狀態(tài)的數(shù)據(jù)文件

6 rows selected

SQL> begin

  2    dbms_file_transfer.copy_file(source_directory_object => 'souredir',

  3                                 source_file_name => 'testtbl.dbf',

  4                                 destination_directory_object => 'destdir',

  5                                 destination_file_name => 'testtbl.dbf');

  6  end;

  7  /

PL/SQL procedure successfully completed

文件系統(tǒng)中查看到文件testtbl.dbf。

[oracle@SimpleLinux oradata]$ ls -l

total 102512

-rw-r----- 1 oracle asmadmin 104865792 Dec 27 14:34 testtbl.dbf

SQL> alter database rename file '+DATA/ora11g/datafile/testtbl.dbf' to '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf';

Database altered

SQL> alter database recover datafile 6;

Database altered

對(duì)數(shù)據(jù)文件online操作。

SQL> alter database datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' online;

Database altered

SQL> select file_name, file_id, online_status from dba_data_files;

FILE_NAME                                             FILE_ID ONLINE_STATUS

-------------------------------------------------- ---------- -------------

(篇幅原因,有省略……)

+DATA/ora11g/datafile/example.265.825944513                 5 ONLINE

/u01/app/oracle/product/11.2.0/db_1/oradata/testtb          6 ONLINE

l.dbf                                                       

6 rows selected

試驗(yàn)成功。

4、RMAN方法

在沒有cp命令之前,RMAN是一種比較常用的方法。我們先將文件offline。

SQL> alter database datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' offline;

Database altered

啟動(dòng)RMAN copy過程。

RMAN> connect target /

connected to target database: ORA11G (DBID=4222144573)

using target database control file instead of recovery catalog

RMAN> copy datafile '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' to '+RECO'

2> ;

Starting backup at 27-DEC-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=41 device type=DISK

channel ORA_DISK_1: starting datafile copy

input datafile file number=00006 name=/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf

output file name=+RECO/ora11g/datafile/test.282.835281667 tag=TAG20131227T144106 RECID=2 STAMP=835281676

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15

Finished backup at 27-DEC-13

更改文件名,進(jìn)行數(shù)據(jù)文件online操作。

SQL> alter database rename file '/u01/app/oracle/product/11.2.0/db_1/oradata/testtbl.dbf' to '+RECO/ora11g/datafile/test.282.835281667';

Database altered

SQL> alter database recover datafile 6;

Database altered

SQL> alter database datafile 6 online;

Database altered

試驗(yàn)成功。

以上是“ASM與File System數(shù)據(jù)文件轉(zhuǎn)移方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI