使用RMAN迁移文件系统数据库到ASM
--==================================
-- 使用RMAN迁移文件系统数据库到ASM
--==================================
在实际的工作过程中,由于ASM磁盘管理的便利性,因此很多时候需要将文件系统的数据库迁移到ASM,本文演示了如何将文件系统数据库迁移到ASM实例。
有关如何创建ASM实例及ASM磁盘管理请参考
一、主要步骤(假定ASM实例已创建)
1.计算目标数据库(文件系统)的大小
2.根据目标数据库的大小,为新ASM数据库(辅助数据库)准备可用磁盘空间
3.为辅助数据库配置初始化参数文件,密码文件,创建目录
4.备份目标数据库
5.迁移目标数据库到辅助数据库
二、实施迁移
本次迁移在同一台主机实现,因此采用不同的ORACLE_SID
环境:Oracle Linux 5.4 + Oracle 10g R2
目标数据库:orcl
辅助数据库:orclasm
1.计算目标数据库(文件系统)的大小
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orcl
SQL> select * from v$version where rownum<2;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
SQL> select sum(bytes)/1024/1024 ||'MB' from dba_segments;
SUM(BYTES)/1024/1024||'MB'
------------------------------------------
1195.5MB
2.为辅助数据库准备可用空间,下面显示DG1中有3016MB可用空间,可以满足迁移的需要
ASMCMD> ls -s
Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name
512 4096 1048576 6134 6032 0 3016 0 DG1/
512 4096 1048576 2047 1997 0 1997 0 REV/
3.配置辅助数据库
a.启动目标数据库,并为目标数据库创建pfile
[oracle@oradb ~]$ echo $ORACLE_SID
orcl
[oracle@oradb ~]$ sqlplus / as sysdba
idle> startup
sys@ORCL> create pfile from spfile;
b.复制目标数据库的pfile来生成辅助数据库的pfile并对其进行修改
[oracle@oradb dbs]$ cd $ORACLE_HOME/dbs
[oracle@oradb dbs]$ cp initorcl.ora initorclasm.ora
修改initorclasm.ora
对文件中所有的orcl使用替换命令替换为orclasm(使用vi工具 :%s/orcl/orclasm/g来替换)
修改控制文件为1个(磁盘DG1使用了normal redundancy),路径为'+DG1/orclasm/controlfile/'--使用ASM应注意目录结构的变化
修改db_recovery_file_dest路径为'+REV'
修改log_archive_dest_1路径为'LOCATION=+REV/orclasm'
修改db_create_file_dest路径为'+DG1'
增加下列参数(恢复完毕后清除)
*.db_file_name_convert=("orcl","orclasm")
*.log_file_name_convert=("orcl","orclasm")
下面列出发生变化的几个重要参数
*.audit_file_dest='/u01/app/oracle/admin/orclasm/adump'
*.background_dump_dest='/u01/app/oracle/admin/orclasm/bdump'
*.control_files='+DG1/orclasm/controlfile/control01.ctl'
*.core_dump_dest='/u01/app/oracle/admin/orclasm/cdump'
*.db_name='orclasm'
*.db_recovery_file_dest='+REV/orclasm'
*.log_archive_dest_1='LOCATION=+REV/orclasm'
*.user_dump_dest='/u01/app/oracle/admin/orclasm/udump'
*.db_create_file_dest='+DG1'
*.db_file_name_convert=("orcl","orclasm")
*.log_file_name_convert=("orcl","orclasm")
c.根据刚刚修改过的参数创建目录
[oracle@oradb ~]$ mkdir -p $ORACLE_BASE/admin/orclasm/{a,b,c,u}dump
[oracle@oradb ~]$ ls $ORACLE_BASE/admin/orclasm
adump bdump cdump udump
d.创建密码文件
[oracle@oradb dbs]$ orapwd file=$ORACLE_HOME/dbs/orapworclasm password=oracle entries=8
4.备份目标数据库
a.目标数据库应处于归档模式下
SQL> select name,log_mode from v$database;
NAME LOG_MODE
--------- ------------
ORCL ARCHIVELOG
b.连接到RMAN并进行备份,此处使用了非catalog方式
[oracle@oradb ~]$ uniread rman target sys/oracle@orcl nocatalog
RMAN> crosscheck archivelog all; --校验归档日志
RMAN> delete expired archivelog all; --删除无效的归档日志
RMAN> report obsolete;
RMAN> delete noprompt obsolete; --删除废弃的备份
RMAN> show channel; --查看缺省的备份路径
RMAN configuration parameters are:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/bk/orcl/data_%d_%U';
RMAN> show controlfile autobackup; --查看控制文件的自动备份启用情况
using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> show controlfile autobackup format; --查看控制文件的备份路径、格式
RMAN configuration parameters are:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/bk/orcl/auto_ctl_%d_%F';
RMAN> run{ --对目标数据库进行备份,此备份为0级增量包含了归档日志,控制文件spfile将自动备份
2> allocate channel ch1 device type disk;
3> backup as compressed backupset
4> incremental level 0 database format '/u01/bk/orcl/data_%d_%U'
5> plus archivelog format '/u01/bk/orcl/bk_lg_%U'
6> tag='Inc0_log';
7> release channel ch1;}
5.迁移目标数据到ASM
a.查看目标数据库的SEQUENCE,当前为10,便于恢复时指定SEQUENCE
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 9 52428800 1 YES ACTIVE 520445 30-OCT-10
2 1 10 52428800 1 NO CURRENT 520585 30-OCT-10
b.查看目标数据库的数据文件的相关信息,后续需要为datafile指定文件名
RMAN> report schema;
Report of database schema
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 480 SYSTEM *** /u01/app/oracle/oradata/orcl/system01.dbf
2 25 UNDOTBS1 *** /u01/app/oracle/oradata/orcl/undotbs01.dbf
3 240 SYSAUX *** /u01/app/oracle/oradata/orcl/sysaux01.dbf
4 5 USERS *** /u01/app/oracle/oradata/orcl/users01.dbf
5 100 EXAMPLE *** /u01/app/oracle/oradata/orcl/example01.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 20 TEMP 32767 /u01/app/oracle/oradata/orcl/temp01.dbf
c.查看asm实例是否已正常提供服务,以及磁盘的状态并启动新的orclasm实例
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string +ASM
SQL> select group_number,name,state,type,total_mb,free_mb,usable_file_mb from v$asm_diskgroup;
GROUP_NUMBER NAME STATE TYPE TOTAL_MB FREE_MB USABLE_FILE_MB
------------ ------------------------------ ----------- ------ ---------- ---------- --------------
1 DG1 MOUNTED NORMAL 6134 6032 3016
2 REV MOUNTED EXTERN 2047 1997 1997
d.启动辅助数据库到nomount状态
[oracle@oradb ~]$ export ORACLE_SID=orclasm
[oracle@oradb ~]$ sqlplus / as sysdba
idle> startup nomount
ORACLE instance started.
e.使用RMAN连接到目标数据库和辅助数据库来完成迁移
[oracle@oradb dbs]$ rman auxiliary / target sys/redhat@orcl
connected to target database: ORCL (DBID=1263182651)
connected to auxiliary database: ORCLASM (not mounted)
RMAN> run {
2> allocate auxiliary channel ach1 device type disk;
3> set until sequence 10 thread 1;
4> set newname for datafile 1 to '+DG1';
5> set newname for datafile 2 to '+DG1';
6> set newname for datafile 3 to '+DG1';
7> set newname for datafile 4 to '+DG1';
8> set newname for datafile 5 to '+DG1';
9> set newname for tempfile 1 to '+DG1';
10> duplicate target database to orclasm logfile
11> group 1('+DG1') size 5m reuse,
12> group 2('+DG1') size 5m reuse;
13> }
contents of Memory Script:
{
Alter clone database open resetlogs;
}
executing Memory Script
database opened
Finished Duplicate Db at 30-OCT-10
6.后续处理
a.查看数据库状态并关闭数据库
[oracle@oradb ~]$ export ORACLE_SID=orclasm
[oracle@oradb ~]$ sqlplus / as sysdba
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
--------- ----------
ORCLASM READ WRITE
SQL> shutdown immediate;
b.使用vi工具编辑initorclasm.ora
清除下列参数
*.db_file_name_convert=("orcl","orclasm")
*.log_file_name_convert=("orcl","orclasm")
c.启动数据库并创建spfile
SQL> startup
SQL> create spfile from pfile;
SQL> startup force; --如果是生产库建议先shutdown immediate,然后startup
7.验证迁移结果
SQL> show parameter db_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string orclasm
SQL> col name format a60
SQL> select name,status from v$datafile;
NAME STATUS
------------------------------------------------------------ -------
+DG1/orclasm/datafile/system.256.752170937 SYSTEM
+DG1/orclasm/datafile/undotbs1.259.752170937 ONLINE
+DG1/orclasm/datafile/sysaux.257.752170937 ONLINE
+DG1/orclasm/datafile/users.260.752170937 ONLINE
+DG1/orclasm/datafile/example.258.752170937 ONLINE
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 5 5242880 2 YES INACTIVE 563716 27-MAY-11
2 1 6 5242880 2 NO CURRENT 583985 27-MAY-11
SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
2 ONLINE +DG1/orclasm/onlinelog/group_2.263.752171103 NO
1 STALE ONLINE +DG1/orclasm/onlinelog/group_1.262.752171103 NO
1 STALE ONLINE +REV/orclasm/onlinelog/group_1.256.752171103 YES
2 ONLINE +REV/orclasm/onlinelog/group_2.257.752171105 YES
SQL> select file#,creation_change#, status,enabled,bytes,name from v$tempfile;
FILE# CREATION_CHANGE# STATUS ENABLED BYTES NAME
---------- ---------------- ------- ---------- ---------- --------------------------------------------------
1 464714 ONLINE READ WRITE 20971520 +DG1/orclasm/tempfile/temp.264.752171113
--如果在使用duplicate时没有生成tempfile文件,可以使用下面的方式来手动添加tempfile文件。
alter tablespace temp add tempfile '+DG1' size 100m autoextend off;
--可以添加归档目录,并修改一下归档路径
--连接到ASM实例创建归档目录
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
------------------------------ ------------
+ASM STARTED
SQL> alter diskgroup REV add directory '+REV/orclasm/arch';
Diskgroup altered.
--在orclasm实例中修改归档路径
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orclasm OPEN
SQL> alter system set log_archive_dest_1='LOCATION=+REV/orclasm/arch';
System altered.
SQL> select name from v$archived_log where rownum<2 order by stamp;
NAME
--------------------------------------------------
+REV/orclasm/1_1_752171102.arc
三、快捷参考
有关性能优化请参考
有关ORACLE体系结构请参考
Oracle 联机重做日志文件(ONLINE LOG FILE)
Oracle 实例和Oracle数据库(Oracle体系结构)
有关闪回特性请参考
Oracle 闪回特性(FLASHBACK DATABASE)
Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle 闪回特性(Flashback Query、Flashback Table)
Oracle 闪回特性(Flashback Version、Flashback Transaction)
有关基于用户管理的备份和备份恢复的概念请参考
Oracle 基于用户管理恢复的处理(详细描述了介质恢复及其处理)
有关RMAN的备份恢复与管理请参考
RMAN 备份路径困惑(使用plus archivelog时)
有关ORACLE故障请参考
对参数FAST_START_MTTR_TARGET = 0 的误解及设定
有关ASM请参考
有关SQL/PLSQL请参考
SQL 基础--> 集合运算(UNION 与UNION ALL)
SQL 基础--> 层次化查询(START BY ... CONNECT BY PRIOR)
SQL 基础--> ROLLUP与CUBE运算符实现数据汇总
有关ORACLE其它特性
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例
日志记录模式(LOGGING 、FORCE LOGGING 、NOLOGGING)
使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)
簇表及簇表管理(Index clustered tables)
ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
相关推荐
在本文中,我们将详细介绍如何使用RMAN将数据库从文件系统迁移到ASM存储系统。ASM(Automatic Storage Management)是一种高性能、可扩展的存储管理系统,能够自动管理数据库文件,提高数据库的可用性和性能。 一、...
综上所述,裸设备表空间迁移到ASM的过程涉及到多个数据库管理的操作步骤,包括查询裸设备信息、切换表空间状态、使用RMAN进行数据文件拷贝、配置ASM磁盘组以及验证迁移结果。掌握这些知识点,对于进行高效、安全的...
### Oracle单机通过RMAN迁移到RAC集群 #### 一、背景介绍 随着业务规模的不断扩大和技术的进步,原有的数据库系统可能无法满足当前的需求。为了提高系统的可用性、可扩展性和性能,通常需要将原有的单机Oracle...
总结来说,这个工程日志描述了一个Oracle数据库从传统文件系统迁移到ASM的详细流程,包括环境检查、ASM磁盘的创建以及数据库的迁移操作。整个过程展示了在AIX系统上管理Oracle数据库时,如何利用ASM提升存储管理的...
总之,基于RMAN的数据库迁移是一个复杂的过程,涉及到多个环节,包括备份、参数调整、ASM操作以及恢复等。每个步骤都需要精确执行,并且需要对Oracle数据库的管理和维护有深入的理解。在实际操作中,应遵循最佳实践...
Oracle数据库是企业级广泛使用的数据库管理系统,而将一个Oracle单机环境迁移到RAC(Real Application Clusters,实时应用集群)集群,是为了提高系统的可用性和性能。RAC允许多个实例共享同一个物理数据库,从而...
本文档详细介绍了如何使用RMAN工具将Oracle 11g的文件系统单实例数据库迁移到双机RAC ASM环境中。该过程涉及单实例数据库的备份与恢复、RAC环境的准备及原有数据库的移除等多个步骤。 #### 环境配置 - **源单实例...
对于已经在使用RAW设备的Oracle数据库,可能需要将其迁移到ASM上。这个过程涉及到将数据文件从RAW设备移动到ASM磁盘组中。 1. **RAW迁移到ASM**:首先,关闭数据库;然后使用RMAN或其他工具将RAW设备上的数据文件...
总之,Oracle RMAN提供了强大的备份和恢复能力,使得在不同环境间迁移数据库成为可能。通过合理的配置和步骤,可以有效地确保数据的安全性,并降低迁移过程中的风险。在实际操作中,还需考虑其他因素,如网络连接、...
通过使用FORMAT子句,可以改变数据文件的路径名,同时支持从ASM磁盘组复制数据文件或将数据文件复制到ASM磁盘组。 以下是一个使用RMAN进行表空间转换的例子: ```sql Z:>rman Recovery Manager: Release 10.2....
### ORACLE 数据库从AIX裸设备到ASM存储的迁移过程 #### 概述 本文主要介绍了Oracle数据库从AIX裸设备迁移到ASM(自动存储管理)存储的过程。这一迁移通常涉及从传统的直接连接存储(DAS)或网络附加存储(NAS)等裸设备...
在实践中,例如将数据库从文件系统迁移到ASM磁盘组,ASM(Automatic Storage Management)能将多个磁盘整合为逻辑卷,实现数据分布和冗余,简化文件管理。迁移步骤包括:在RMAN中备份数据库,设置冗余,创建ASM磁盘...
本文将详细介绍如何将基于裸设备(RAW device)的Oracle数据库ezhouraw迁移到Oracle自动存储管理(Automatic Storage Management, ASM)系统中。此过程主要分为三个部分:相同数据库版本下的迁移、不同版本间的迁移(10.2...
如何利用 RMAN 可传输表空间迁移数据库到不同字节序的平台 (Doc ID 1983639.1) 如何利用 RMAN 可传输表空间迁移数据库到不同字节序的平台 (Doc ID 1983639.1) 跨 OS 平台迁移 Oracle DB (Generic Platform) (Doc ID ...
创建磁盘组后,冗余级别无法更改,若需调整,需创建新的磁盘组并通过RMAN或DBMS_FILE_TRANSFER迁移数据文件。 【ASM关键进程】 ASM实例中包含了一些特有的后台进程,如: 1. **RBAL**:负责磁盘组的重新平衡,确保...
本文档旨在提供一个基于 RMAN 备份的 Oracle Data Guard RAC TO RAC 迁移方案,以便帮助 DBA schnell 和可靠地完成数据库迁移任务。该方案适用 Oracle 11g 版本,文档版本为 1.0,发布日期为 2018 年 6 月。 第一章...
这个过程可能涉及到很多细节,包括Oracle的RMAN(Recovery Manager)、ASM(Automatic Storage Management)或其他备份恢复工具的使用,以及对操作系统和网络的理解。每个步骤都需要谨慎操作,确保数据的安全和完整...
7. **数据库状态查询**:使用SQL*Plus连接到数据库,查询`v$asm_disk`视图来获取ASM磁盘的状态、冗余级别、总容量和可用空间等信息,确保ASM磁盘的健康状态。 8. **数据库恢复**:在目标RAC环境中,利用RMAN备份...
本节详细介绍如何在不更换操作系统的情况下,将正在运行的SAP数据库从文件系统迁移到ASM。 - **源系统与目标系统的配置**: - **源系统设置**:包括创建备份、调整参数文件等准备工作。 - **目标系统设置**:包括...