oracle迁移至ASM磁盘

1、登陆+ASM实例查看ASM磁盘是否正常

[[email protected] ~]$ export ORACLE_SID=+ASM
[[email protected] ~]$ sqlplus  / as sysdba

SQL> select name,state from  v$asm_diskgroup;                                                                                                   
NAME                        STATE
---------------           -----------
DG1                         MOUNTED

2、登陆数据库prod
[[email protected] ~]$ export ORACLE_SID=prod
[[email protected] ~]$ sqlplus / as sysdba

a、查看控制文件
SQL> show parameter control_files;

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
control_files                        string
/u01/app/oracle/oradata/prod/c
ontrol01.ctl, /u01/app/oracle/
oradata/prod/control02.ctl, /u
01/app/oracle/oradata/prod/con
trol03.ctl
SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod/control01.ctl
/u01/app/oracle/oradata/prod/control02.ctl
/u01/app/oracle/oradata/prod/control03.ctl

b、查看db_create_file_dest参数
SQL> show parameter db_create_file_dest;

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
db_create_file_dest                  string

c、修改控制文件的位置

SQL>  alter system set control_files=‘+DG1‘ scope=spfile;

System altered.

SQL> alter system set db_create_file_dest=‘+DG1‘ scope=spfile;

System altered.

d、关闭数据库

SQL> shutdown immediate;

3、登陆rman

[[email protected] ~]$ export ORACLE_SID=prod
[[email protected] ~]$ rman target /

a、利用rman迁移目标数据库控制文件和数据文件

RMAN> startup nomount;

b、利用rman将文件系统上的控制文件重建控制文件到ASM磁盘的DG1上
RMAN> restore controlfile from ‘/u01/app/oracle/oradata/prod/control01.ctl‘;

c、利用rman复制数据库文件到ASM磁盘组DG1上
RMAN> alter database mount;
RMAN> run{
 allocate channel c1 type disk;
 allocate channel c2 type disk;
 allocate channel c3 type disk;
 allocate channel c4 type disk;
 backup as copy database format ‘+DG1‘;
 }

d、利用RMAN的SWITCH 命令修改控制文件内数据文件的指针,使其指向新位置
RMAN> switch database to copy;
RMAN> recover database;
RMAN> alter database open;

4、登陆数据库prod
[[email protected] ~]$ export ORACLE_SID=prod
[[email protected] ~]$ sqlplus / as sysdba

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
+DG1/prod/controlfile/backup.271.842150617

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
+DG1/prod/datafile/system.272.842151185
+DG1/prod/datafile/undotbs1.275.842151191
+DG1/prod/datafile/sysaux.273.842151185
+DG1/prod/datafile/users.276.842151211
+DG1/prod/datafile/example.274.842151187

a、迁移temp文件
SQL> select name,status,enabled from v$tempfile;

NAME
--------------------------------------------------------------------------------
STATUS                ENABLED
--------------------- ------------------------------
/u01/app/oracle/oradata/prod/temp01.dbf
ONLINE                READ WRITE

由于temp文件没有可用的数据只是缓存数据,temp可以直接添加一个新的temp文件,然后将老的temp文件删除
SQL> alter tablespace temp add tempfile ‘+DG1‘;

Tablespace altered.

SQL> alter tablespace temp drop tempfile ‘/u01/app/oracle/oradata/prod/temp01.dbf‘;

Tablespace altered.

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
+DG1/prod/tempfile/temp.279.842151759

b、迁移日志文件,在DG1创建新的日志文件,然后将老的文件删除

SQL> select group#,member from v$logfile;

GROUP#
----------
MEMBER
--------------------------------------------------------------------------------
         3
/u01/app/oracle/oradata/prod/redo03.log

2
/u01/app/oracle/oradata/prod/redo02.log

1
/u01/app/oracle/oradata/prod/redo01.log

SQL> alter database add logfile ‘+DG1‘ size 51m;

Database altered.

SQL> alter database add logfile ‘+DG1‘ size 51m;

Database altered.

SQL> alter database add logfile ‘+DG1‘ size 51m;

Database altered.

删除的时候需要日志文件组状态为inactive状态,不过删除不了,说明日志文件组不是inactive状态

SQL> select group#,status from v$log;

GROUP# STATUS
---------- ------------------------------------------------
     1 INACTIVE
         2 CURRENT
         3 INACTIVE
         4 INACTIVE
         5 INACTIVE
         6 INACTIVE
SQL> alter database drop logfile ‘/u01/app/oracle/oradata/prod/redo01.log‘;

Database altered.

SQL> alter database drop logfile ‘/u01/app/oracle/oradata/prod/redo02.log‘;
alter database drop logfile ‘/u01/app/oracle/oradata/prod/redo02.log‘
*
ERROR at line 1:
ORA-01623: log 2 is current log for instance prod (thread 1) - cannot drop
ORA-00312: online log 2 thread 1: ‘/u01/app/oracle/oradata/prod/redo02.log‘

SQL> alter database drop logfile ‘/u01/app/oracle/oradata/prod/redo03.log‘;

Database altered.

遇到删除不了时使用如下命令更改日志文件状态,知道可以删除
SQL> alter system switch logfile;
SQL> alter database drop logfile ‘/u01/app/oracle/oradata/prod/redo02.log‘;

Database altered.

查看日志文件
SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
+DG1/prod/onlinelog/group_4.280.842152057
+DG1/prod/onlinelog/group_5.281.842152065
+DG1/prod/onlinelog/group_6.282.842152075

查看迁移后的文件
SQL> select name from v$datafile union select name from v$tempfile union select name from v$controlfile union select member from v$logfile;

NAME
--------------------------------------------------------------------------------
+DG1/prod/controlfile/backup.271.842150617
+DG1/prod/datafile/example.274.842151187
+DG1/prod/datafile/sysaux.273.842151185
+DG1/prod/datafile/system.272.842151185
+DG1/prod/datafile/undotbs1.275.842151191
+DG1/prod/datafile/users.276.842151211
+DG1/prod/onlinelog/group_4.280.842152057
+DG1/prod/onlinelog/group_5.281.842152065
+DG1/prod/onlinelog/group_6.282.842152075
+DG1/prod/tempfile/temp.279.842151759

最后迁移初始化参数文件
SQL> create pfile from spfile;

File created.

SQL> create spfile=‘+DG1‘ from pfile;

File created.

重启数据库查看是否能够正常启动

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  209715200 bytes
Fixed Size                  1218556 bytes
Variable Size              71305220 bytes
Database Buffers          134217728 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.

查看迁移后的文件
SQL> select name from v$datafile union select name from v$tempfile union select name from v$controlfile union select member from v$logfile;

NAME
--------------------------------------------------------------------------------
+DG1/prod/controlfile/backup.271.842150617
+DG1/prod/datafile/example.274.842151187
+DG1/prod/datafile/sysaux.273.842151185
+DG1/prod/datafile/system.272.842151185
+DG1/prod/datafile/undotbs1.275.842151191
+DG1/prod/datafile/users.276.842151211
+DG1/prod/onlinelog/group_4.280.842152057
+DG1/prod/onlinelog/group_5.281.842152065
+DG1/prod/onlinelog/group_6.282.842152075
+DG1/prod/tempfile/temp.279.842151759

时间: 2024-10-24 21:02:29

oracle迁移至ASM磁盘的相关文章

案例:Oracle非常规恢复 ASM磁盘组diskgroup被删除使用kfed进行完美恢复

Oracle RAC环境ASM磁盘组被强制删除,使用kfed工具完美恢复误删除磁盘组案例 在某些情况下,可能因为误操作,不小先drop diskgroup,这个时候千万别紧张,出现此类故障,可以通过kfed进行完美恢复(数据0丢失).如果进一步损坏了相关asm disk,那后续恢复就很麻烦了,可能需要使用dul扫描磁盘来进行抢救性恢复,而且可能导致数据丢失. 1.创建Oracle环境中的测试磁盘组 [[email protected] ~]$ sqlplus / as sysasm SQL*Pl

对oracle用户创建asm磁盘

--root用户执行vi /etc/sysctl.conf #Install oracle settingfs.aio-max-nr = 1048576fs.file-max = 6815744#kernel.shmall = 2097152#kernel.shmmax = 4294967295kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rm

ORACLE 11G RAC ASM磁盘组全部丢失后的恢复

一.环境描述(1)Oracle 11.2.0.3 RAC ON Oracle Linux 6 x86_64,只有一个ASM外部冗余磁盘组--DATA:(2)OCR,VOTEDISK,DATAFILE,CONTROLFILE,SPFILE全部位于这个磁盘组上:二.故障描述(1)存储故障导致ASM磁盘丢失.(2)CRS因为OCR和VOTEDISK的丢失,除了OHAS还联机外,CLUSTERWARE服务都已经停止.三.备份情况(1)RMAN备份:包括controlfile,database,spfil

Oracle 11g在ASM磁盘组上添加控制文件

控制文件(Control File)是Oracle的物理文件之一,它记录了数据库的名字.数据文件的位置等信息.控制文件的重要性在于,一旦控制文件损坏,数据库将会宕机.如果没有数据库的备份和归档日志文件,数据库将无法恢复.因此,我们应该多路镜像控制文件(Multiplex Control Files),并把每个镜像的控制文件分布在不同的物理磁盘.根据经验,控制文件多路镜像以后,几个控制文件同时坏掉的可能性几乎为零.控制文件管理的重心是重在预防,而不是亡羊补牢! 今天做在测试环境为control f

Oracle RAC 删除ASM磁盘组

1.检查确认要删除的磁盘组是否在用 select * from dba_data_files; select * from dba_temp_files; select * from v$logfile; 2.先在各节点上dismount磁盘组 alter diskgroup REDO01 dismount; alter diskgroup REDO02 dismount; alter diskgroup REDODG1 dismount; 3.ASM中删除磁盘组 drop diskgroup

ASM磁盘组异机迁移

环境: Source: OS:redhat 6.3 DB:Oralce RAC 11.2.4.0 destination: OS:redhat 6.3 DB:Oralce RAC 11.2.4.0 背景:客户的PC机上面有两个实例,压力太大,需要迁移出一个实例.数据量TB级别,因为同平台,同版本,外挂存储.所以这里采用直接迁移asm磁盘组 操作前需要注意的: 1.Voting Disk是单独的盘,不包含需要迁移的数据 话不多,这里模拟出来分享给大家(PS:我的原库和目标库的主机名是一样的,第三步

RAC数据库迁移ASM磁盘组到其它存储

环境介绍: 一共有两个磁盘组:crs和data:crs使用normal冗余:data使用外部冗余. 添加新的asm磁盘过程(略) 1.迁移前 SQL> select group_number, failgroup ,name,path from v$asm_disk order by 1 GROUP_NUMBER FAILGROUP NAME PATH ------------ ------------------------------ ----------------------------

11G ORACLE RAC DBCA 无法识别asm磁盘组

ASM磁盘无法识别几种现象: 1) gi家目录或者其子目录权限错误 2)asm磁盘的权限错误 3)asm实例未启动或者asm磁盘组没有mount上 4)asm磁盘组资源没有在线 5)oracle用户的权限错误 6)oracle($ORACLE_HOME/bin)可执行文件的权限错误 OK,那我就按照上面的分析结果进行逐一排查: 1) gi家目录或者其子目录权限错误 [[email protected] ~]# ls -ld /u01/app/11.2.0/grid/drwxr-x--- 66 r

oracle 11g 使用ASM存储迁移

一.环境描述 rhel 6.6 + Oracle 11.2.0.4 存储更换,需要添加新盘,替换掉旧的存储盘,以下为测试步骤. 二.测试过程 [[email protected] ~]# cd /etc/udev [[email protected] udev]# ls makedev.d rules.d udev.conf [[email protected] udev]# cd rules.d/ [[email protected] rules.d]# ls 55-usm.rules 60-