Oracle從文件系統遷移到ASM存儲


環境:RHEL 6.4 + Oracle 11.2.0.4
需求:數據庫存儲由文件系統遷移到ASM

數據庫存儲遷移到ASM磁盤組

Reference

數據庫存儲遷移到ASM磁盤組

實驗環境前期准備: - 文件系統數據庫模擬環境《[Oracle 11g靜默安裝簡明版](http://www.cnblogs.com/jyzhao/p/5001782.html)》 - ASM實例和磁盤組模擬環境《[單機靜默安裝GI軟件並創建ASM實例和ASM磁盤組](http://www.cnblogs.com/jyzhao/p/5012949.html)》

遷移前原數據庫各文件存儲信息查詢如下:

--控制文件
select name from v$controlfile;
--數據文件
select name from v$datafile;
--臨時文件
select name from v$tempfile;
--日志文件
select member from v$logfile;
--參數文件
show parameter pfile

--查詢結果如下
SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u02/oradata/jingyu/control01.ctl
/u02/app/oracle/fast_recovery_area/jingyu/control02.ctl

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u02/oradata/jingyu/system01.dbf
/u02/oradata/jingyu/sysaux01.dbf
/u02/oradata/jingyu/undotbs01.dbf
/u02/oradata/jingyu/users01.dbf

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
/u02/oradata/jingyu/temp01.dbf

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/u02/oradata/jingyu/redo03.log
/u02/oradata/jingyu/redo02.log
/u02/oradata/jingyu/redo01.log

SQL> show parameter pfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /u02/app/oracle/product/11.2.0
                                                 /dbhome_1/dbs/spfilejingyu.ora

1.1 編輯參數文件指定新的控制文件路徑

``` SQL> create pfile='/tmp/pfile.ora' from spfile; SQL> shutdown immediate -- 修改controlfile參數值 $ vi /tmp/pfile.ora controlfile='+DATA1/control01.ctl' ```

1.2 啟動數據庫到nomount模式

``` SQL> startup nomount pfile='/tmp/pfile.ora' ```

1.3 RMAN恢復控制文件

注意Oracle用戶需要有讀寫ASM磁盤的權限

RMAN> restore controlfile from '/u02/oradata/jingyu/control01.ctl';

1.4 啟動數據庫到mount模式

``` RMAN> alter database mount; ```

1.5 RMAN Copy 數據文件

``` RMAN> backup as copy database format '+DATA1'; ```

1.6 RMAN Switch 數據文件

``` RMAN> switch database to copy; ```

1.7 RMAN Switch 臨時文件,並打開數據庫

``` RMAN> run { set newname for tempfile 1 to '+DATA1'; switch tempfile all; }

RMAN> ALTER DATABASE OPEN;

<h2 id="1.8">1.8 遷移重做日志文件</h2>

set linesize 200
col member for a60
SQL> SELECT a.group#, b.member, a.status FROM v$log a, v$logfile b WHERE a.group#=b.group#;
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+DATA1' TO GROUP 1;
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+DATA1' TO GROUP 2;
SQL> ALTER DATABASE ADD LOGFILE MEMBER '+DATA1' TO GROUP 3;
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u02/oradata/jingyu/redo01.log';
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u02/oradata/jingyu/redo02.log';
SQL> ALTER SYSTEM SWITCH LOGFILE;
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u02/oradata/jingyu/redo03.log';
SQL> ALTER SYSTEM CHECKPOINT;
SQL> SELECT a.group#, b.member, a.status FROM v$log a, v$logfile b WHERE a.group#=b.group#;

<h2 id="1.9">1.9 服務器參數文件,並重啟數據庫</h2>

-- 在ASM磁盤組中創建服務器參數文件
SQL> create spfile='+DATA1' from pfile='/tmp/pfile.ora';
-- 正常關閉數據庫
SQL> shutdown immediate
-- 刪除$ORACLE_HOME/dbs/spfilejingyu.ora
$ rm $ORACLE_HOME/dbs/spfilejingyu.ora
-- 建立$ORACLE_HOME/dbs/initjingyu.ora,編輯內容指定ASM磁盤組中的服務器參數文件。
$ vi initjingyu.ora
spfile='+DATA1/JINGYU/PARAMETERFILE/spfile.266.897474951'
--啟動數據庫(會自動找到參數文件進而轉到ASM磁盤組中的服務器參數文件)
SQL> startup

<h2 id="1.10">1.10 驗證各文件存儲位置</h2>

select name from v$datafile union all
select name from v$tempfile union all
select member from v$logfile union all
select name from v$controlfile;
show parameter pfile

結果如下:

SQL> select name from v$datafile union all
2 select name from v$tempfile union all
3 select member from v$logfile union all
4 select name from v$controlfile;

NAME

+DATA1/jingyu/datafile/system.257.897474123
+DATA1/jingyu/datafile/sysaux.258.897474149
+DATA1/jingyu/datafile/undotbs1.259.897474165
+DATA1/jingyu/datafile/users.261.897474169
+DATA1/jingyu/tempfile/temp.262.897474267
+DATA1/jingyu/onlinelog/group_1.263.897474349
+DATA1/jingyu/onlinelog/group_2.264.897474359
+DATA1/jingyu/onlinelog/group_3.265.897474363
+DATA1/control01.ctl

9 rows selected.

Elapsed: 00:00:00.02
SQL> show parameter pfile

NAME TYPE VALUE


spfile string +DATA1/jingyu/parameterfile/sp
file.266.897474951

至此,數據庫存儲已經成功由文件系統全部遷移到ASM。
<h1 id="2">Reference</h1>
- Steps To Migrate/Move a Database From Non-ASM to ASM And Vice-Versa (文檔 ID 252219.1)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM