溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

從故障ASM磁盤組遷移數據庫到新磁盤組

發(fā)布時間:2020-04-13 21:59:45 來源:網絡 閱讀:425 作者:背向天堂 欄目:關系型數據庫

? ?一套RHEL上的10G RAC,半年前丟了一塊磁盤。 原有系統(tǒng)是3塊150G的磁盤做的NORMAL冗余。前幾天巡檢的時候發(fā)現少了盤(~~~~~此處省略200字)。這個環(huán)境里面,ASMLIB, RAW都配了。 8塊盤, 64條路徑。

? ? 目前數據庫的容量已經200G了。 從asmcmd里面看的到的信息。2塊磁盤組總空間300G,可用空間3G。目前存儲也只有300G的可用空間。穩(wěn)妥起見,直接把原來的問題磁盤組中的數據庫遷移到新的300G的外部冗余的磁盤組中。

1??環(huán)境信息描述

1.1硬件環(huán)境

操作系統(tǒng)

RHEL 5.5 X86_64

主機

HP刀片

存儲

HP ESV400

?

1.2數據庫軟件

集群軟件版本

Oracle ?Clusterware 10.2.0.1 x86_64

數據庫版本

Oracle Database ?10.2.0.1 企業(yè)版 x86_64

數據庫補丁

10.2.0.5 x86_64

?

1.3存儲信息

多路徑設備

容量(GB

用途

裸設備信息

ocr1

1

OCR 磁盤

raw1

ocr2

1

OCR 鏡像磁盤

raw2

votingdisk1

1

表決磁盤

raw3

votingdisk2

1

表決磁盤鏡像1

raw4

votingdisk3

1

表決磁盤鏡像2

raw5

asmdisk1

150

ASM數據磁盤

raw6

asmdisk2

150

ASM數據磁盤

raw7

asmdisk3

150

ASM數據磁盤

raw8

?

MOUNT_S

HEADER_STATU

MODE_ST

STATE

TOTAL

FREE

NAME

FAILGROUP

PATH

CLOSED

MEMBER

ONLINE

NORMAL

153597

0



/dev/raw/raw7

CLOSED

FOREIGN

ONLINE

NORMAL

1019

0



/dev/raw/raw5

CLOSED

FOREIGN

ONLINE

NORMAL

1019

0



/dev/raw/raw4

CLOSED

FOREIGN

ONLINE

NORMAL

1019

0



/dev/raw/raw3

CLOSED

FOREIGN

ONLINE

NORMAL

1019

0



/dev/raw/raw2

CLOSED

FOREIGN

ONLINE

NORMAL

1019

0



/dev/raw/raw1

CACHED

MEMBER

ONLINE

NORMAL

153597

3229

BHPSDB_ASM_0000

BHPSDB_ASM_0000

/dev/raw/raw6

MISSING

UNKNOWN

OFFLINE

HUNG

153597

13761

BHPSDB_ASM_0001

BHPSDB_ASM_0001


CACHED

MEMBER

ONLINE

NORMAL

153597

3230

BHPSDB_ASM_0002

BHPSDB_ASM_0002

/dev/raw/raw8

??? /dev/raw/raw7為故障磁盤,該盤的狀態(tài)已經為MISSING。

?

1.4遷移規(guī)劃

由于原有磁盤組使用的是NORMAL冗余方式。剩余的空間只有3G。數據庫空間為200G。ASM磁盤組空間不足以存放數據庫。而且新增的磁盤只有一塊300G的盤。為避免磁盤REBALANCE出現異常。因此將300G的磁盤做成EXTERNAL冗余方式,并采用RMAN COPY的方式,將數據庫遷移到新的磁盤組。遷移成功后,在將原有的3塊150G的磁盤刪除。并創(chuàng)建一個新的EXTERNAL磁盤組備用。

2??數據庫備份

該操作由備份廠家完成。

3??ASM識別磁盤

3.1停集群環(huán)境

原有環(huán)境中使用了多路徑,裸設備映射,ASMLIB配置。ASM添加磁盤時需要進行多路徑和裸設備信息配置,為安全起見,停數據庫和集群環(huán)境后進行操作。

[oracle@bhpsdb1~]$ crs_stat –t

[oracle@bhpsdb1~]$ srvctl stop database -d bhspdb

[root@bhpsdb1 ~]#crsctl stop crs

?

3.2操作系統(tǒng)識別磁盤

由于該系統(tǒng)的磁盤路徑較多,因此識別出的磁盤設備也比較多。但是原有的磁盤都做了分區(qū)操作。因此不包含分區(qū)信息的磁盤。就是新添加的磁盤。

[root@bhpsdb1 ~]#ls -la /dev/sd* | grep -v '[0-9]$'

?

3.3配置磁盤多路徑(所有節(jié)點)

新增磁盤的WWID信息,可以通過/scsi_id –gus /block/sdnew ls -la /dev/disk/by-id 中獲取。

?

[root@bhpsdb1 ~]#scsi_id -gus /block/sdf

[root@bhpsdb1 ~]#ls -la /dev/disk/by-id

?

??? 新增紅色部分內容。

[root@bhpsdb1 ~]# vi /etc/multipath.conf

multipaths {

……

multipath{

wwid??? 36001438005deda610000600001040000

alias?? asmdisk4

}

?

}

?

3.4重啟多路徑服務(所有節(jié)點)

[root@bhpsdb1 ~]#service multipathd restart

?

3.5檢測多路徑設備狀態(tài)(所有節(jié)點)

確保新增的磁盤asmdisk4配置可以查詢到。

[root@bhpsdb1 ~]#multipath -ll

asmdisk4(36001438005deda610000600000f80000) dm-0 HP,HSV400

[size=300G][features=1queue_if_no_path][hwhandler=0][rw]

\_round-robin 0 [prio=200][active]

?\_ 0:0:3:3 sdaa 65:160 [active][ready]

?\_ 1:0:1:3 sdaq 66:160 [active][ready]

?\_ 1:0:3:3 sdbg 67:160 [active][ready]

?\_ 0:0:1:3 sdk?8:160? [active][ready]

\_round-robin 0 [prio=40][enabled]

?\_ 1:0:0:3 sdai 66:32? [active][ready]

?\_ 1:0:2:3 sday 67:32? [active][ready]

?\_ 0:0:0:3 sdc?8:32?? [active][ready]

?\_ 0:0:2:3 sds?65:32? [active][ready]

?

3.6格式化多路徑設備

格式化設備的目的是和原有的磁盤設備保持一致。SD設備格式化以后,會有一個分區(qū)信息,用于區(qū)分新掛載的普通sd磁盤。

?

??? 單個節(jié)點執(zhí)行格式化操作:

[root@bhpsdb1 ~]#ls -la /dev/mapper/*

[root@bhpsdb1 ~]#kpartx /dev/mapper/asmdisk4

?

??? 其他節(jié)點進行分區(qū)設備發(fā)現操作:

[root@bhpsdb2 ~]#partprobe

?

3.7裸設備綁定(所有節(jié)點)

編輯裸設備配置文件,添加新磁盤配置。

3.7.1配置裸設備綁定文件

[root@bhpsdb1 ~]#vi /etc/sysconfig/rawdevices

/dev/raw/raw9??? /dev/mapper/asmdisk4p1

?

3.7.2重啟裸設備服務

[root@bhpsdb1 ~]#service rawdevices restart

?

3.7.3修改裸設備權限

[root@bhpsdb1 ~]#chown oracle:oinstall /dev/raw/raw9

[root@bhpsdb1 ~]#chmod 644 /dev/raw/raw9

?

3.7.4修改系統(tǒng)啟動文件

添加新增設備的權限和屬組修改腳本。

[root@bhpsdb1 ~]#vi /etc/rc.local

/bin/chownoracle:oinstall /dev/raw/raw9

/bin/chmod644 /dev/raw/raw9

?

3.7.5檢測新增裸設備

保障裸設備的屬組為oracle:oinstall,權限為644

[root@bhpsdb1 ~]#ls -la /dev/raw/raw*

?

4??創(chuàng)建新磁盤組

4.1檢查磁盤狀態(tài)信息

[oracle@bhpsdb1 ~]$kfod a='/dev/asm*' d=all o=all s=true

?

4.2創(chuàng)建ASM磁盤組

[oracle@bhpsdb1 ~]$ export ORACLE_SID=+ASM1

[oracle@bhpsdb1 ~]$ sqlplus / as sysdba

SQL> CREATE DISKGROUP CRMDGNEWEXTERNAL REDUNDANCY DISK '/dev/asm-data3';

?

4.3其他節(jié)點掛載磁盤組

[oracle@bhpsdb2~]$ sqlplus / as sysdba

SQL> alter diskgroup CRMDGNEW mount;

?

4.4檢測磁盤組信息

[oracle@bhpsdb1~]$ asmcmd lsdg

[oracle@bhpsdb2~]$ asmcmd lsdg

?

5??遷移數據庫到新磁盤組

5.1啟動單實例到NOMOUNT

SQL> startup nomount;

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

?

5.1.1調整參數文件修改控制文件到新磁盤組

SQL> set linesize 120;

SQL> show parameter control;

SQL> alter system setcontrol_files='+CRMDGNEW/crmdb/controlfile/control01.ctl' scope=spfile;

?

5.1.2重啟實例到NOMOUNT狀態(tài)

SQL> startup force nomount;

?

5.2恢復控制文件

[oracle@bhpsdb1~]$ rman target /

RMAN> RESTORE CONTROLFILE FROM '+CRMDG/crmdb/controlfile//Current.256.901636495';

?

5.3拷貝數據庫

MOUNT數據庫實例,進行數據庫拷貝操作。

RMAN> ALTER DATABASE MOUNT;

RMAN>

RUN

{

?? ALLOCATE CHANNEL dev1 DEVICE TYPE DISK;

?? ALLOCATE CHANNEL dev2 DEVICE TYPE DISK;

?? ALLOCATE CHANNEL dev3 DEVICE TYPE DISK;

?? ALLOCATE CHANNEL dev4 DEVICE TYPE DISK;

?? BACKUP AS COPY DATABASE FORMAT '+CRMDGNEW';

}

?

5.4切換數據庫到拷貝

RMAN> SWITCH DATABASE TO COPY;

?

5.5打開數據庫

SQL> alter database open;

?

5.6打開其他實例并檢查

該操作在數據庫的其他實例進行。

SQL> STARTUP

SQL> SELECT INST_ID, STATUS FROM GV$INSTANCE;

?

5.7創(chuàng)建臨時表空間到新磁盤組

RMAN> REPORT SCHEMA;

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '+CRMDGNEW' SIZE 1G;

SQL> ALTER TABLESPACE TEMP DROP TEMPFILE'+CRMDG/crmdb/tempfile/temp.262.901636511';

?

5.8創(chuàng)建重做日志到新磁盤組

5.8.1查詢當前日志組信息

SQL> SET LINESIZE 120;

SQL> COL MEMBER FOR A80;

SELECT DISTINCT 'ALTERDATABASE DROP LOGFILE GROUP '||GROUP#||';' FROM V$LOGFILE;

?

5.8.2添加新日志組

ALTER DATABASE ADDLOGFILE THREAD 1 GROUP 5 ('+CRMDGNEW') SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 1 GROUP 6 ('+CRMDGNEW') SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 2 GROUP 7 ('+CRMDGNEW') SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 2 GROUP 8 ('+CRMDGNEW') SIZE 100M;

?

5.8.3刪除舊日志組

在刪除舊日志組之前,進行多次日志切換,保證舊日志組狀態(tài)均為INACTIVE。

SQL> SET LINESIZE 120;

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

SQL> ALTER SYSTEM CHECKPOINT GLOBAL;

SQL> SELECT * FROM V$LOG ORDER BY 1;

?

??? 下列腳本由查詢日志腳本生成:

ALTER DATABASE DROPLOGFILE GROUP 1;

ALTER DATABASE DROPLOGFILE GROUP 2;

ALTER DATABASE DROPLOGFILE GROUP 3;

ALTER DATABASE DROPLOGFILE GROUP 4;

?

5.8.4添加原有日志組

ALTER DATABASE ADDLOGFILE THREAD 1 GROUP 1 ('+CRMDGNEW') SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 1 GROUP 2 ('+CRMDGNEW') SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 2 GROUP 3 ('+CRMDGNEW') SIZE 100M;

ALTER DATABASE ADDLOGFILE THREAD 2 GROUP 4 ('+CRMDGNEW') SIZE 100M;

?

5.9修改參數文件

5.9.1備份SPFILE文件

SQL> show parameter spfile;

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

?

5.9.2生成新SPFILE文件

createspfile='+CRMDGNEW/spfilecrmdb.ora' from pfile='/home/oracle/crmdb.pfile';

?

5.9.3修改dbs目錄下的PFILE文件

[oracle@bhpsdb1~]$ cd $ORACLE_HOME/dbs

[oracle@bhpsdb1dbs]$ vi initcrmdb1.ora

SPFILE='+CRMDGNEW/spfilecrmdb.ora'

?

5.9.4重啟數據庫驗證

SQL> shutdown immediate;

SQL> startup;

6??刪除故障磁盤

以下操作需要在ASM實例環(huán)境下進行。

6.1DISMOUNT舊磁盤組

將其他實例的CRMDG磁盤組DISMOUNT。

SQL> alter diskgroup CRMDG dismount;

?

6.2刪除磁盤組下的文件

ASMCMD> cd CRMDG

ASMCMD> rm -r ./crmdb

?

6.3刪除舊磁盤組

SQL> DROP DISKGROUP CRMDG;

?

6.4檢查磁盤狀態(tài)

[oracle@bhpsdb1 ~]$kfod a='/dev/asm*' d=all o=all s=true


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI