记 一次asm磁盘组数据迁移案例

前     言

数据库在添加数据文件时报错:ORA-01119,ORA-17520,ORA-00600错误,根据报错无法判断故障点,而且生产库无法进行其他测试,比较稳妥的办法是新建一个磁盘组,将现有的数据迁移到新的磁盘组上。

环境介绍

操作系统:solaris 11

数据库版本:11.2.0.4

数据库架构:rac

数据存储格式:asm

处理过程

1.备份数据库和控制文件

#su - oracle

$rman target /

RMAN>backup full database format '/backdb/full2018.bak';

RMAN>backup current controlfile format '/backdb/ctrlbak.ctl';

2.存储划分磁盘给服务器,共划分4个500g 的磁盘,并分别在两个节点上修改磁盘的属性,操作如下:

chown -R grid:asmadmin  /dev/rdsk/c0t600B342E749A659D6C27D56DFD0000DAd0s6

chown -R grid:asmadmin  /dev/rdsk/c0t600B342723B68C4D0579DDA8BD0000DAd0s6

chown -R grid:asmadmin  /dev/rdsk/c0t600B342946F4D73DF125D36CED0000DAd0s6

chown -R grid:asmadmin  /dev/rdsk/c0t600B34251924A80D46C1DAC5AD0000DAd0s6

chmod -R 660  /dev/rdsk/c0t600B342E749A659D6C27D56DFD0000DAd0s6

chmod -R 660  /dev/rdsk/c0t600B342723B68C4D0579DDA8BD0000DAd0s6

chmod -R 660  /dev/rdsk/c0t600B342946F4D73DF125D36CED0000DAd0s6

chmod -R 660  /dev/rdsk/c0t600B34251924A80D46C1DAC5AD0000DAd0s6


3.使用图像化界面创建磁盘组NEWDATA

#su - grid

$asmca



查看磁盘组状态正常:

$crsctl stat res -t

4.修改CONTROLFILE在参数文件中记录的位置

#su - oracle

$sqlplus / as sysdba

SQL>alter system set control_files='+NEWDATA/control01.ctl' scope=spfile;

5.备份、恢复控制文件

#su - oracle

$rman target /

$backup current controlfile format '/export/controlfile.ctl';

省略输出结果。。。。。。

关闭数据库并启动到nomount状态

>shutdown immediate

>startup nomount

恢复控制文件

#su - oracle

$rman target /

RMAN>restore controlfile from '/export/controlfile.ctl';

省略输出结果。。。。。。

数据库启动到mount状态

$sqlplus / as sysdba

>alter database mount

6.迁移数据文件到 NEWDATA

#su - oracle

$rman target /

>backup as copy database format '+NEWDATA';

省略输出结果。。。。。。

迁移单独的数据文件

RMAN>switch database to copy;

省略输出结果。。。。。。

应用online redo log 使数据文件同步

RMAN> RECOVER database;

打开数据库并重置日志

RMAN>alter database open resetlogs;

7.新建online redo logfile,并删除原来磁盘组上的online redo log

>alter database add logfile thread 1 group 4 ('+NEWDATA/ORCL/ONLINELOG/redo04.log') size 512m;

>alter database drop logfile group 1;

为全部列出。。。。。。

8.新建temp表空间,并删除原临时表空间

>alter tablespace temp add tempfile'+NEWDATA' size 10g;

>select name from v$tempfile;

>alter tablespace temp drop tempfile '原有的临时表空间';

9.创建spfile ,修改参数文件

>create pfile='/backdb/new.pfile' from sefile;

>create spfile='+NEWDATA/ORCL/spfileorcl.ora' from pfile='/backdb/new.pfile';

10.测试添加数据文件

>alter tablespace kkk add datafile '+DATA' size 30g;

11.备份控制文件

>shutdown immediate

>startup no mount

$rman target /

RMAN>restore controlfile to 'NEWDATA/control02.ctl' from '+NEWDATA/controlfile01.ctl';

RMAN>restore controlfile to 'NEWDATA/control03.ctl' from '+NEWDATA/controlfile01.ctl';

12删除原磁盘组

#su - grid

$sqlplus / as sysasm

>alter diskgroup 原磁盘组 dismount;

>drop diskgroup 原磁盘组;

⚠️ 删除前一定要和开发人员确认应用无误后再删除。

猜你喜欢

转载自blog.csdn.net/fc_barceiona/article/details/79279384