Oracle 11G RAC For ASM 利用RMAN COPY進行存儲遷移

轉自:https://blog.csdn.net/wanbin6470398/article/details/78654645

一、需求背景
客戶數據庫存儲空間接近存滿,需購置一臺新的存儲,進行數據遷移,客戶允許少量停機時間。

二、實施方法討論
利用ASM rebalance 進行遷移 
可以實現0宕機進行遷移,過程簡單,但遷移時間週期太長。

利用rman copy進行遷移 
需要少量停機時間,遷移時間短,過程複雜。

結合客戶的需求,最終採用的是rman copy進行存儲遷移。

三、實施項目步驟
添加新ASM磁盤
備份
數據遷移
刪除原存儲
3.1 添加新ASM盤
3.1.1 查詢原ASM磁盤信息
運行以下sql命令

SET PAGES 1000
SET LINES 1000
COL PATH FOR A30
SELECT A.GROUP_NUMBER,
       B.NAME ASM_NAME,
       A.NAME DISK_NAME,
       A.FAILGROUP,
       A.PATH,
       B.TYPE,
       A.TOTAL_MB,
       A.FREE_MB
  FROM V$ASM_DISK A, V$ASM_DISKGROUP B
 WHERE A.GROUP_NUMBER = B.GROUP_NUMBER;

3.1.2 劃分磁盤
存儲工程師安照需求劃分存儲,並採用多路徑軟件。

略 
3.1.3 綁定ASM 盤
根據不同的操作系統,使用不同的方法進行綁定。

綁定過程略


3.2 備份
備份包括ocr、votedisk

3.2.1 備份ocr與votedisk
 # ocrconfig -manualbackup    --手工備份 (需root用戶)

 # ocrconfig -showbackup      --查看備份

 # ocrconfig -restore <filename>  --恢復ocr


11G 中只需只需上面的命令,就能同時備份ocr與vote

3.3 數據遷移
3.3.1 創建ASM Diskgroup
利用asmca命令創建以下diskgroup:
ocrdg                                        --存放ocr與vote
newdata                                      --存放數據文件

3.3.2 遷移ocr,vote
添加ocr信息至ocrdg上(root用戶)
# ocrconfig -add  +OCRDG

檢查ocr
# ocrcheck 

查看votedisk信息(grid用戶)
$ crsctl query css votedisk

遷移votedisk(grid用戶)
$ crsctl replace votedisk +OCRDG


3.3.3 創建asm實例spfile至ocrdg上
SQL> create pfile='/home/grid/asmspfile.ora' from spfile;
SQL> create spfile='+OCRDG' from pfile='/home/grid/asmspfile.ora';

3.3.4 遷移數據庫文件至新磁盤上
3.3.4.1 創建數據庫spfile至newdata上
SQL> create pfile='/home/oracle/orcl_pfile.ora' from spfile='+DATADG/orcl/spfileorcl.ora';
SQL> create spfile='+NEWDATA' from pfile='/home/oracle/orcl_pfile.ora';

3.3.4.2 查詢數據文件信息
 SQL> select ''''||file_name||'''' from dba_data_files; 

3.3.4.3 利用rman copy備份數據庫
$ vi rman_copy.sh


----------


export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
rman target / nocatalog log=/tmp/rman_copy.log<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
copy 
datafile '+DATADG/orcl/datafile/system.259.874699969'   to '+NEWDATA',
datafile '+DATADG/orcl/datafile/sysaux.260.874699995'   to '+NEWDATA',
datafile '+DATADG/orcl/datafile/undotbs1.261.874700013' to '+NEWDATA',
datafile '+DATADG/orcl/datafile/undotbs2.263.874700041' to '+NEWDATA',
datafile '+DATADG/orcl/datafile/users.264.874700049'    to '+NEWDATA';
}
EOF

rman target / nocatalog log=/tmp/rman_copy.log append <<EOF 
copy current controlfile to '+NEWDATA';
EOF

--賦予執行權限
$ chmod +x rman_copy.sh     

3.3.4.4 拷貝控制文件,並確認控制文件新的存放位置
ASMCD> cd +newdata/orcl/CONTROLFILE
ASMCMD> ls 
Backup.261.960651757
ASMCMD> cp Backup.261.960651757 control01.dbf
ASMCMD> cp Backup.261.960651757 control02.dbf

3.3.4.5 修改spfile參數
#control_files:
SQL> alter system set control_files='+newdata/orcl/CONTROLFILE/control01.dbf','+newdata/orcl/CONTROLFILE/control02.dbf' scope=spfile;

#db_create_file_dest
SQL> alter system set db_create_file_dest='+NEWDATA' SCOPE=SPFILE;

#archive:
SQL> alter system set log_archive_dest_1='LOCATION=+NEWDATA'

3.3.4.6 利用集羣命令,更改數據庫狀態(oracle用戶)
停止數據庫
$ srvctl stop database -d orcl

啓動至mount狀態
$ srvctl start database -d orcl -o mount

SQL> show parameter control_files

3.3.4.7 rename數據庫
數據文件
SQL> alter database rename file '+DATADG/orcl/datafile/sysaux.260.874699995' to '+newdata/orcl/datafile/SYSAUX.258.960651703';
SQL> alter database rename file '+DATADG/orcl/datafile/system.259.874699969' to '+newdata/orcl/datafile/SYSTEM.256.960651621';
SQL> alter database rename file '+DATADG/orcl/datafile/undotbs1.261.874700013' to '+newdata/orcl/datafile/UNDOTBS1.257.960651621';
SQL> alter database rename file '+DATADG/orcl/datafile/undotbs2.263.874700041' to '+newdata/orcl/datafile/UNDOTBS2.259.960651707';
SQL> alter database rename file '+DATADG/orcl/datafile/users.264.874700049' to '+newdata/orcl/datafile/USERS.260.960651735';

temp文件
SQL> alter database rename file '+DATADG/orcl/tempfile/temp.262.874700019' to '+newdata';

3.3.4.8 recover 數據庫
$ rman target /
RMAN> recover database;

3.3.4.9 以open resetlogs方式打開數據庫
SQL> alter database open resetlogs;

3.3.4.10 修改redo日誌
--增加redo日誌組
alter database add logfile thread 1 group 5 '+Newdata' size 50m;
alter database add logfile thread 1 group 6 '+Newdata' size 50m;
alter database add logfile thread 2 group 7 '+Newdata' size 50m;
alter database add logfile thread 2 group 8 '+Newdata' size 50m;

--刪除redo日誌組
select GROUP#,status from v$log;

當status狀態爲inactive和unused狀態時可以刪除。

alter database drop logfile group 4;
alter database drop logfile group 2;
alter database drop logfile group 1;
alter database drop logfile group 3;

3.3.4.11 集羣修改信息
$ srvctl modify database -d orcl -n orcl -p +NEWDATA/orcl/spfileorcl.ora

$ srvctl modify database -d orcl -n orcl -a NEWDATA

3.3.4.12 以集羣方式啓動數據庫
$ srvctl stop database -d orcl
$ srvctl start database -d orcl

3.4 刪除原存儲
--刪除原OCR,vote磁盤組
# ocrconfig -delete +CRSDG
# ocrcheck
確認信息
# crsctl query css votedisk

--dismount disk(每個節點)
$ sqlplus / as sysasm
SQL> ALTER DISKGROUP CRSDG DISMOUNT; 
SQL> alter diskgroup DATADG dismount;

--drop disk(任一節點執行)
$ sqlplus / as sysasm
SQL> drop diskgroup CRSDG force including contents;
SQL> drop diskgroup DATADG force including contents;

--delete resource(任一節點執行)
$ crsctl delete resource ora.NEWOCR.dg  -----是NEWOCR還是CRSDG,待驗證
$ crsctl delete resource ora.DATADG.dg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章