1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 修改ASM磁盘组冗余模式(一):copy-switch方式

修改ASM磁盘组冗余模式(一):copy-switch方式

时间:2023-11-19 20:42:09

相关推荐

修改ASM磁盘组冗余模式(一):copy-switch方式

在使用ASM建立oracle数据库的时候,ASM磁盘组的缺省冗余为normal(两路冗余),而大多数数据库系统都是建立在RAID存储上次,在存储上已经有了一个冗余以保证数据的安全,如果在ASM中再建立一个两路冗余,一来会浪费很多的存储空间,二来也会增加很大的存储IO负载。

而现实中有一些DBA在建立数据库的时候一路next,最后导致了两级冗余,更有甚者,甚至在ASM中建立磁盘组时选择HIGH(至少3路冗余),在性能和cost都是很大的浪费,这就需要在建库后修改磁盘组的冗余模式,而oracle没有提供直接修改ASM磁盘组冗余模式的手段,我们可以借助磁盘组替换来修改冗余模式,本次实验使用rman的copy-switch方法来实现数据文件磁盘组的替换,接下来还有备份恢复方式实现数据文件磁盘组的替换以及闪回磁盘组的替换;

替换的具体步骤为:

1) 查看ASM中磁盘组及磁盘的情况:

SYS@+ASM1 SQL>select name,state,type from v$asm_diskgroup;

NAME STATE TYPE

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

RACDAT MOUNTED NORMAL

RACFRA MOUNTED NORMAL

SYS@+ASM1 SQL> select group_number,disk_number,name,path from v$asm_disk;

GROUP_NUMBER DISK_NUMBER NAME PATH

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

0 0 /dev/oracleasm/disks/VOL6

0 1 /dev/oracleasm/disks/VOL5

2 1 RACFRA_0001 /dev/oracleasm/disks/VOL4

1 1 RACDAT_0001 /dev/oracleasm/disks/VOL2

2 0 RACFRA_0000 /dev/oracleasm/disks/VOL3

1 0 RACDAT_0000 /dev/oracleasm/disks/VOL1

6 rows selected.

假设在存储级已经做了RAID,现在将用一个无冗余的磁盘组替换磁盘组RATDAT;

2) 数据库中数据库文件的存放情况:

@ SQL>conn / as sysdba

Connected.

SYS@racdb2 SQL>select name from v$datafile

union

select name from v$tempfile

union

select member from v$logfile

union

select filename from v$block_change_tracking

union

select name from v$controlfile

order by 1;

NAME

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

+RACDAT/racdb/datafile/sysaux.257.775268603

+RACDAT/racdb/datafile/system.256.775268603

+RACDAT/racdb/datafile/tbs_test.270.781050709

+RACDAT/racdb/datafile/tbs_test2.271.781050815

+RACDAT/racdb/datafile/tbs_test2.272.781050871

+RACDAT/racdb/datafile/ts_big1.269.780845025

+RACDAT/racdb/datafile/ts_big2.268.780845053

+RACDAT/racdb/datafile/undotbs1.258.775268605

+RACDAT/racdb/datafile/undotbs2.264.775269055

+RACDAT/racdb/datafile/users.259.775268605

+RACDAT/racdb/onlinelog/group_1.261.775268843

+RACDAT/racdb/onlinelog/group_2.262.775268885

+RACDAT/racdb/onlinelog/group_3.265.775269149

+RACDAT/racdb/onlinelog/group_4.266.775269189

+RACDAT/racdb/tempfile/temp.263.775268947

+RACFRA/racdb/onlinelog/group_1.257.775268863

+RACFRA/racdb/onlinelog/group_2.258.775268909

+RACFRA/racdb/onlinelog/group_3.259.775269165

+RACFRA/racdb/onlinelog/group_4.260.775269213

3) 用两块备用磁盘建一个外部冗余的磁盘组RACDAT_EXT:

SYS@+ASM1 SQL>create diskgroup racdat_ext external redundancy disk '/dev/oracleasm/disks/VOL5';

Diskgroup created.

SYS@+ASM1 SQL>alter diskgroup racdat_ext add disk '/dev/oracleasm/disks/VOL6';

Diskgroup altered.

SYS@+ASM1 SQL>select name,state,type from v$asm_diskgroup;

NAME STATE TYPE

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

RACDAT MOUNTED NORMAL

RACFRA MOUNTED NORMAL

RACDAT_EXT MOUNTED EXTERN

SYS@+ASM1 SQL>select group_number,disk_number,name,path from v$asm_disk;

GROUP_NUMBER DISK_NUMBER NAME PATH

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

2 1 RACFRA_0001 /dev/oracleasm/disks/VOL4

3 1 RACDAT_EXT_0001 /dev/oracleasm/disks/VOL6

3 0 RACDAT_EXT_0000 /dev/oracleasm/disks/VOL5

1 1 RACDAT_0001 /dev/oracleasm/disks/VOL2

2 0 RACFRA_0000 /dev/oracleasm/disks/VOL3

1 0 RACDAT_0000 /dev/oracleasm/disks/VOL1

6 rows selected.

SYS@+ASM1 SQL>select group_number,disk_number,name,path from v$asm_disk order by 1,2;

GROUP_NUMBER DISK_NUMBER NAME PATH

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

1 0 RACDAT_0000 /dev/oracleasm/disks/VOL1

1 1 RACDAT_0001 /dev/oracleasm/disks/VOL2

2 0 RACFRA_0000 /dev/oracleasm/disks/VOL3

2 1 RACFRA_0001 /dev/oracleasm/disks/VOL4

3 0 RACDAT_EXT_0000 /dev/oracleasm/disks/VOL5

3 1 RACDAT_EXT_0001 /dev/oracleasm/disks/VOL6

6 rows selected.

SYS@+ASM1 SQL>show parameter asm_diskgroup

NAME TYPE VALUE

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

asm_diskgroups string RACDAT, RACFRA, RACDAT_EXT

4) 将控制文件备份到新建的磁盘组RACDAT_EXT并修改controlfile的指向:

SYS@racdb1 SQL>alter database backup controlfile to '+RACDAT_EXT';

Database altered.

[oracle@Linux1]asmcmd

ASMCMD> ls

RACDAT/

RACDAT_EXT/

RACFRA/

ASMCMD> cd racdat_ext

ASMCMD> ls

RACDB/

ASMCMD> cd racdb

ASMCMD> ls

CONTROLFILE/

ASMCMD> cd controlfile

ASMCMD> ls

Backup.256.781102479

SYS@racdb1 SQL>show parameter control

NAME TYPE VALUE

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

control_file_record_keep_time integer 7

control_files string +RACDAT/racdb/controlfile/curr

ent.258.781288271, +RACFRA

/racdb/controlfile/current.263

.781288273

SYS@racdb1 SQL>alter system set control_files= '+RACDAT_EXT/racdb/controlfile/current.258.781288271', '+RACFRA_EXT/racdb/controlfile/current.263.781288273' SCOPE=spfile sid='*';

System altered.

SYS@racdb1 SQL>alter system set db_create_file_dest='+RACDAT_EXT' scope=spfile SID='*';

System altered.

5) 由于spfile位于将要删除的磁盘组中,因此需要先在新磁盘组中创建一个spfile;

SYS@racdb1 SQL>create pfile='/mnt/share/init_racdb.ora' from spfile;

File created.

SYS@racdb1 SQL>show parameter pfile

NAME TYPE VALUE

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

spfile string +RACDAT /racdb/spfileracdb. ora

SYS@racdb1 SQL>create spfile='+RACDAT_EXT/racdb/spfileracdb.ora' from pfile='/mnt/share/init_racdb.ora';

File created.

6) 修改各个节点的pfile中对spfile的指向

[oracle@Linux1]cd $ORACLE_HOME/dbs

[oracle@Linux1]vi initracdb1.ora

SPFILE='+RACDAT_EXT/racdb/spfileracdb.ora'

[oracle@Linux2]cd $ORACLE_HOME/dbs

[oracle@Linux2]vi initracdb2.ora

SPFILE='+RACDAT_EXT/racdb/spfileracdb.ora'

7) 修改srvconfig的spfile配置

[oracle@Linux1]srvctl config database -d racdb -a

linux1 racdb1 /u01/app/oracle/product/10.2.0/db_1

linux2 racdb2 /u01/app/oracle/product/10.2.0/db_1

(blog贴文不能超过8万字符,没办法,此处略去n段,具体见附件)

至此,已经用一个外部冗余的磁盘组RACDAT_EXT替换了一个两路冗余的磁盘组RACDAT

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。