Oracle 11g單例項ASM遷移到檔案系統

woshishui11211發表於2015-03-16

Oracle11g單例項ASM遷移到檔案系統

 

1.    環境:

CentOS5.8Oracle11.2.0.1單例項名sdzy建在ASM

 

ASM:/dev/sdb1->+DATA ASM 20GB

 

 

2.    相關資訊:

[oracle/grid]$crs_stat -t

Name           Type           Target    State     Host       

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

ora.DATA.dg    ora....up.type ONLINE    ONLINE    oracle     

ora....ER.lsnr ora....er.type ONLINE    ONLINE    oracle     

ora.asm        ora.asm.type   ONLINE    ONLINE    oracle     

ora.cssd       ora.cssd.type  ONLINE    ONLINE    oracle     

ora.diskmon    ora....on.type ONLINE    ONLINE    oracle     

ora.sdzy.db    ora....se.type ONLINE    ONLINE    oracle     

 

[oracle/grid]$asmcmd

ASMCMD> lsdg

State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name

MOUNTED  EXTERN  N         512   4096  1048576     20473    17842                0           17842              0             N  DATA/

 

 

SQL> select file_name,bytes/1024/1024 MB,tablespace_name from dba_data_files;

 

FILE_NAME                                             MB TABLESPACE_NAME

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

+DATA/sdzy/datafile/system.264.851788437             700 SYSTEM

+DATA/sdzy/datafile/sysaux.265.851788459             600 SYSAUX

+DATA/sdzy/datafile/undotbs1.266.851788475           850 UNDOTBS1

+DATA/sdzy/datafile/users.268.851788491                5 USERS

SQL>  select * from v$logfile;

 

    GROUP# STATUS  TYPE    MEMBER                                        IS_

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

         1         ONLINE  +DATA/sdzy/onlinelog/group_1.258.851788425    NO

         1         ONLINE  +DATA/sdzy/onlinelog/group_1.259.851788427    YES

         2         ONLINE  +DATA/sdzy/onlinelog/group_2.260.851788429    NO

         2         ONLINE  +DATA/sdzy/onlinelog/group_2.261.851788431    YES

         3         ONLINE  +DATA/sdzy/onlinelog/group_3.262.851788433    NO

         3         ONLINE  +DATA/sdzy/onlinelog/group_3.263.851788435    YES

 

 

SQL> show parameter pfile;

 

NAME                                 TYPE        VALUE

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

spfile                               string      +DATA/sdzy/spfilesdzy.ora

 

SQL> show parameter control;

 

NAME                                 TYPE        VALUE

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

control_file_record_keep_time        integer     7

control_files                        string      +DATA/sdzy/controlfile/current

                                                 .256.851788423, +DATA/sdzy/con

                                                 trolfile/current.257.851788425

 

 

SQL> select file#,status,bytes/1024/1024 MB,TS#,name from v$tempfile;

 

     FILE# STATUS          MB        TS# NAME

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

         1 ONLINE          68          3 +DATA/sdzy/tempfile/temp.267.851788481

 

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     68

Next log sequence to archive   70

Current log sequence           70

 

SQL> show parameter DB_RECOVERY_FILE_DEST;

 

NAME                                 TYPE        VALUE

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

db_recovery_file_dest                string      +DATA

db_recovery_file_dest_size           big integer 4977M

 

 

connected to target database: SDZY (DBID=1456076355)

 

RMAN>

 

3.    遷移思路:

備份引數和控制檔案

關閉資料庫,啟動到nomount狀態,恢復控制檔案

再使用backup as copy命令複製ASM資料檔案到檔案系統

 

4.    修改pfile控制檔案引數為檔案系統位置

SQL> alter system set control_files='/db/oracle/admin/sdzy/oradata/control01.ctl','/db/oracle/admin/sdzy/oradata/control02.ctl' scope=spfile;

 

5.    備份PFILE和控制檔案

SQL> create pfile='/home/oracle/pfile.ora' from spfile;

RMAN> backup current controlfile format '/home/oracle/controlfile.ctl';

 

Starting backup at 2014-07-14 23:00:27

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=28 device type=DISK

channel ORA_DISK_1: starting full datafile backup set

channel ORA_DISK_1: specifying datafile(s) in backup set

including current control file in backup set

channel ORA_DISK_1: starting piece 1 at 2014-07-14 23:00:29

channel ORA_DISK_1: finished piece 1 at 2014-07-14 23:00:30

piece handle=/home/oracle/controlfile.ctl tag=TAG20140714T230028 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01

Finished backup at 2014-07-14 23:00:30

 

 

6.    關閉資料庫

RMAN> shutdown immediate;

 

7.    利用備份修改後的pfile檔案啟動到nomount狀態

RMAN> startup nomount pfile='/home/oracle/pfile.ora';

 

connected to target database (not started)

Oracle instance started

 

Total System Global Area    1503199232 bytes

 

Fixed Size                     2213536 bytes

Variable Size               1006635360 bytes

Database Buffers             486539264 bytes

Redo Buffers                   7811072 bytes

 

 

8.    利用備份的控制檔案恢復控制檔案到pfile指定檔案

 

RMAN> restore controlfile from '/home/oracle/controlfile.ctl';

 

Starting restore at 2014-07-14 23:15:00

allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=1146 device type=DISK

 

channel ORA_DISK_1: restoring control file

channel ORA_DISK_1: restore complete, elapsed time: 00:00:01

output file name=/db/oracle/admin/sdzy/oradata/control01.ctl

output file name=/db/oracle/admin/sdzy/oradata/control02.ctl

Finished restore at 2014-07-14 23:15:02

 

 

9.    恢復資料庫到mount狀態

 

RMAN> alter database mount;

 

database mounted

released channel: ORA_DISK_1

 

 

10.         複製ASM磁碟組資料檔案到檔案系統

 

backup as copy datafile '+DATA/sdzy/datafile/system.264.851788437' format '/db/oracle/admin/sdzy/oradata/system01.dbf'; 

backup as copy datafile '+DATA/sdzy/datafile/sysaux.265.851788459' format '/db/oracle/admin/sdzy/oradata/sysaux01.dbf'; 

backup as copy datafile '+DATA/sdzy/datafile/undotbs1.266.851788475' format '/db/oracle/admin/sdzy/oradata/undotbs1.dbf'; 

backup as copy datafile '+DATA/sdzy/datafile/users.268.851788491' format '/db/oracle/admin/sdzy/oradata/users01.dbf'; 

備註:backup as copy 命令是以副本的方式備份資料庫,其作用和作業系統的COPY

命令是一樣的,只是二者的執行者不同而已。這裡必須同時制定ASM檔案的名字和

副本的名字。而且backup as copy 命令只備份資料檔案,不備份日誌檔案,也不備份臨時檔案

clip_image002

 

 

11.         修改控制檔案內部資料檔案指標

rman>switch database to copy;

 

備註:因為控制檔案內部對資料檔案的指向依然是ASM檔案的目錄路徑。我們的目的

是讓它的指向修改為檔案系統的資料庫檔案。該命令的功能正是如此。

【注意】此處不能使用alter database rename file 命令修改控制檔案內部資料檔案

的指標。因為alter database rename file命令不能跨越系統進行操作。所

不能使用其將ASM系統的ASM檔案路徑改為檔案系統的資料檔案路徑。

 

 

 

12.         修復資料庫檔案

rman>recover database;

備註:應用日誌到恢復後的資料檔案上,以實現對其的修復

 

 

13.         RESETLOGS方式開啟資料庫

rman>alter database open resetlogs;

 

 

 

14.         修改聯機日誌檔案組

 

sql>alter database add logfile group 4 '/db/oracle/admin/sdzy/oradata/redo04_01.log' size 50m;

sql>alter database add logfile group 5 '/db/oracle/admin/sdzy/oradata/redo05_01.log' size 50m;

sql>alter database add logfile group 6 '/db/oracle/admin/sdzy/oradata/redo06_01.log' size 50m;

 

sql>alter system switch logfile;

sql>alter system checkpoint;

sql>alter database drop logfile group 1;

sql>alter database drop logfile group 2;

sql>alter database drop logfile group 3;

 

【備註】因為backup as copy database 命令只複製資料檔案不復制聯機日誌檔案,所

以需要手工新增聯機日誌檔案,刪除位於ASM磁碟組的日誌檔案。在刪除過程中,

日誌檔案可能處於當前使用狀態或者是活動狀態,故分別使用如下命令進行解決:

alter system switch logfile;(日誌切換)

alter system checkpoint;(將髒資料寫入資料檔案,以使日誌檔案狀態變為非活動)

15.         新增臨時表空間檔案

SQL> alter tablespace temp add tempfile '/db/oracle/admin/sdzy/oradata/temp01.dbf' size 100M;

 

Tablespace altered.

 

SQL> alter tablespace temp drop tempfile '+DATA/sdzy/tempfile/temp.267.851788481';

 

Tablespace altered.

 

【備註】因為backup as copy database 命令只複製資料檔案不復制臨時檔案,所

 

以需要手工新增臨時檔案。

 

16.         修改歸檔路徑

事先建立歸檔目錄:

/db/oracle/admin/sdzy/oradata/arch

 

 

關閉資料庫

SQL> shutdown immediate;

 

修改備份的pfile檔案:

*.db_create_file_dest='/db/oracle/admin/sdzy/oradata'

*.db_recovery_file_dest='/db/oracle/admin/sdzy/oradata/arch'

 

利用備份的pfile檔案啟動資料庫:

SQL> startup pfile='/home/oracle/pfile.ora';

ORACLE instance started.

 

Total System Global Area 1503199232 bytes

Fixed Size                  2213536 bytes

Variable Size            1006635360 bytes

Database Buffers          486539264 bytes

Redo Buffers                7811072 bytes

Database mounted.

Database opened.

 

建立SPFILE檔案

SQL> create spfile from pfile='/home/oracle/pfile.ora';

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup;

ORACLE instance started.

 

Total System Global Area 1503199232 bytes

Fixed Size                  2213536 bytes

Variable Size            1006635360 bytes

Database Buffers          486539264 bytes

Redo Buffers                7811072 bytes

Database mounted.

Database opened.

 

 

17.         檢查遷移後的檔案路徑

確認資料檔案、歸檔、引數檔案、控制檔案、臨時檔案、日誌檔案等都遷移到檔案系統中,且資料未丟失

 

確認ASM不再使用,可以將ASM磁碟組刪除

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26217983/viewspace-1461698/,如需轉載,請註明出處,否則將追究法律責任。

相關文章