数据库迁移:文件系统迁至ASM

数据库迁移:文件系统迁至ASM

系统环境:

操作系统:AIX5.3-08

Oracle:  Oracle 10gR2

1、实施操作,选择可行性迁移方案;

2、前期:准备工作,创建ASM磁盘组、启动ASM实例等;

3、中期:完成参数文件、控制文件、数据文件的迁移等;

4、后期:完成临时表空间、日志文件迁移等。

*****************************************************************************************

*前期目标:配置ASM、创建ASM磁盘组、启动ASM 实例

*****************************************************************************************

:/:<8>volslice list--查看阵列磁盘划分情况

:/:<1>volslice createaix203_asm -z 10gb t01

--从磁盘阵列上划分10g的磁盘空间用以迁移oracle文件系统

#lsdev |grep -i ada  --查找主机的光纤适配卡,用以绑定阵列划分的磁盘

ent2       Available 14-08         10/100 Mbps Ethernet PCI Adapter II(1410ff01)

fcs0       Available 1D-08         FC Adapter

fda0       Available 01-D1         Standard I/O Diskette Adapter

#lscfg -vpl fcs0 --找到光纤适配卡的网络地址

Device Specific.(ZM)........3

NetworkAddress.............10000000C946257E

ROS Level and ID............02881914

:/:<>lun perm lun 10 rwwwn 10000000C946257E

--把新划分的阵列磁盘空间10绑定到光纤适配卡上,权限设为可读可写

#cfgmgr -v

--新添加设备后,不能直接被读取到,需要执行此命令,让其读取ODM库,从而来查找新添加磁盘的配置、驱动信息

--此命令在主机重启时也会自动执行

--此次实施时,手动执行此命令后无效,重启主机后才识别到新添加的阵列设备

#lsdev -c disk  --查看新添加阵列磁盘是否被成功识别,hdisk2为新添加的磁盘设备

hdisk0 Available 1S-08-00-8,0 Other SCSI Disk Drive

hdisk1 Available 1D-08-02     OtherFC SCSI Disk Drive

hdisk2Available 1D-08-02     Other FC SCSI DiskDrive

#

#smit vg  --使用smit命令在新添加的阵列设备上创建卷组oradata,pp大小指定64m

--在新建卷组上创建逻辑卷disk1、disk2、disk3,大小指定3g(即48个pp)

#mklv -y disk1 -t raw oradata 48 hdisk2;

#mklv -y disk2 -t raw oradata 48 hdisk2;

#mklv -y disk3 -t raw oradata 48 hdisk2;

#cd /dev  --进入到设备目录/dev下

#chown oracle:oinstall rdisk*  --为创建的裸设备修改所有者

#chmod 660 rdisk*              --为创建的裸设备修改访问权限

#ls -l | grep rdisk            --查看修改后的裸设备权限

crw-rw----    1 oracle  oinstall     51,  1 May 29 17:43 rdisk1

crw-rw----    1 oracle  oinstall     51,  2 May 29 17:43 rdisk2

crw-rw----    1 oracle  oinstall     51,  3 May 29 17:43 rdisk3

$cd /u01/app/oracle/product/10.2.0/db_1/dbs/--以oracle用户身份到初始化参数路径下

$vi init+ASM.ora   --编辑ASM初始化参数

*.background_dump_dest=‘/u01/app/oracle/admin/+ASM/bdump‘

*.core_dump_dest=‘/u01/app/oracle/admin/+ASM/cdump‘

*.instance_type=‘asm‘

*.large_pool_size=12M

*.remote_login_passwordfile=‘SHARED‘

*.user_dump_dest=‘/u01/app/oracle/admin/+ASM/udump‘

$mkdir -p /u01/app/oracle/admin/+ASM/udump 
--创建udump目录,用户进程的追踪目录

$mkdir -p /u01/app/oracle/admin/+ASM/bdump  --创建bdump目录,后台进程的追踪目录

$mkdir -p /u01/app/oracle/admin/+ASM/cdump 
--创建cdump目录,内核进程的追踪目录

#cd /u01/app/oracle/product/10.2.0/db_1/bin

--以root身份到bin目录下执行localconfig脚本,用以启动CSS

#./localconfig delete    --先执行清除脚本

StoppingCSSD.

Unableto communicate with the CSS daemon.

Shutdownhas begun. The daemons should exit soon.

#./localconfig add      --再执行添加脚本

Successfullyaccumulated necessary OCR keys.

CreatingOCR keys for user ‘root‘, privgrp ‘system‘..

Operationsuccessful.

Configurationfor local CSS has been initialized

StaleCSS daemon is running... killing it now

Addingto inittab

Startupwill be queued to init within 30 seconds.

Checkingthe status of new Oracle init process...

Expectingthe CRS daemons to be up within 600 seconds.

CSS isactive on these nodes.

aix203

CSS isactive on all nodes.

OracleCSS service is installed and running under init(1M)

[[email protected]]$export ORACLE_SID=+ASM   --添加ASM实例名

[[email protected]]$sqlplus ‘/as sysdba‘

SQL> startup nomount;       --启动ASM实例到nomount

SQL> select instance_name,status from v$instance; 
--查询ASM实例状态

INSTANCE_NAME    STATUS

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

+ASM             STARTED

SQL> alter system set ASM_DISKSTRING=‘/dev/rdisk*‘;

--ASM_DISKSTRING参数设置,使ASM可以找到裸设备创建磁盘组

--创建ASM磁盘组为DATA

SQL> create diskgroup DATA normalredundancy

2  FAILGROUP DATA1 disk‘/dev/rdisk1‘

3  FAILGROUP DATA2 disk ‘/dev/rdisk2‘

4 FAILGROUP DATA3 disk ‘/dev/rdisk3‘;

SQL> alter diskgroup DATA check all;          --检查磁盘组的统一性

SQL> select name,state from v$asm_diskgroup;   --查看磁盘组状态,已经mounted

NAME               STATE

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

DATA               MOUNTED

*****************************************************************************************

*中期目标:原库做好冷备、利用RMAN转储文件至ASM(参数文件、控制文件、数据文件)

*****************************************************************************************

--关库,为数据库做一次全备

SQL> create pfile=‘/home/oracle/bak/initmetro.ora‘ from spfile;--备份参数文件

SQL> shutdown immediate;    --关库

SQL> startup mount;         --启库到mount状态,做一次全备

RMAN> backup full database format‘/backup/datafile_bak/level0_%s_%d.bak‘;
--备份数据文件

RMAN> backup archivelog all format ‘/backup/arch_bak/arc_%s_%p_%c‘;

--备份归档文件,因之前删除过无用归档,致使有过期归档文件产生

RMAN-00571:===========================================================

RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571:===========================================================

RMAN-03002:failure of backup command at 05/29/2014 15:36:44

RMAN-06059:expected archived log not found, lost of archived log compromisesrecoverability

ORA-19625:error identifying file /arch/1_190_821107190.dbf

ORA-27037:unable to obtain file status

IBM AIXRISC System/6000 Error: 2: No such file or directory

Additionalinformation: 3

RMAN> crosscheck archivelog all; --检查归档的连续性

releasedchannel: ORA_DISK_1

allocatedchannel: ORA_DISK_1

channelORA_DISK_1: sid=132 devtype=DISK

validationfailedfor archived log

archivelog filename=/arch/1_190_821107190.dbf recid=191 stamp=821547060

RMAN> delete expired archivelog all; --删除过期归档

RMAN> backup archivelog all format ‘/backup/arch_bak/arc_%s_%p_%c‘;

--再次执行备份归档文件,成功完成

SQL>startup nomount;           --启库到nomount状态

[[email protected]]$rman target /  --登录到rman

--做一次冷备,备份到ASM磁盘组

RMAN> run{

2> ALLOCATE CHANNEL c1 DEVICE TYPE DISK;

3> ALLOCATE CHANNEL c2 DEVICE TYPE DISK;

4> backup as copy database format=‘+DATA‘;

5> release channel ch1;

6> release channel ch2;

7> }

RMAN> restore spfile to ‘+DATA/spfilemetro.ora‘; 
--转储spfile文件到ASM

SQL>shutdown immediate;

[aix203 oracle:/oracle]vi /u01/app/oracle/product/10.2.0/db_1/dbs/initmetro.ora

--修改$ORACLE_HOME下pfile文件,并将spfile文件重命名,令其使用pfile启动

SPFILE=‘+DATA/spfilemetro.ora‘

SQL> startup mount;                  --此时查看spfile应该为ASM下的spfile启动

SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST=‘+DATA‘;
--修改数据文件指向路径为ASM

SQL> ALTER SYSTEM SET CONTROL_FILES=‘DATA‘ SCOPE=SPFILE;--修改控制文件指向路径

SQL> startup nomount;                --重启库到nomount状态

RMAN> restore controlfile from‘/u01/app/oracle/oradata/metro/control01.ctl‘;

--此时控制文件中的信息已经指向ASM,用rman完成将控制文件转储到ASM

RMAN> mount database;               --将数据库启动到mount状态

RMAN> switch database to copy;

releasedchannel: ORA_DISK_1

RMAN-00571:===========================================================

RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571:===========================================================

RMAN-03002:failure of switch to copy command at 05/29/2014 18:49:14

RMAN-06571:datafile 1 does not have recoverable copy

--到nomount状态下,重新做一次冷备

RMAN> run{

2> allocate channel c1 device type disk;

3> allocate channel c2 device type disk;

4> backup as copy database format ‘+DATA‘;

5> }

RMAN> mount database;

RMAN> switch database to copy; --再次执行,依旧报错

releasedchannel: ORA_DISK_1

RMAN-00571:===========================================================

RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571:===========================================================

RMAN-03002:failure of switch to copy command at 05/29/2014 18:58:14

RMAN-06571:datafile 1 does not have recoverable copy

--尝试单独备份datafile1,报错依旧

--尝试重新转储控制文件,重新备份,报错依旧

--尝试重新创建磁盘阵列,重新创建卷组、逻辑卷、磁盘组,重新转储参数文件、控制文件、重新备份,报错依旧

--尝试重新创建磁盘阵列,重新规划容错策略,重新转储参数文件、控制文件、重新备份,报错依旧

--尝试使用手工操作将数据文件指向对应ASM,如下操作

SQL> alter database rename file‘+DATA/metro/datafile/system.257.848858337‘ to ‘+DATA/METRO/DATAFILE/SYSTEM.264.848860609‘;    --指向system表空间文件

SQL> alter database rename file‘/u01/app/oracle/oradata/metro/undotbs01.dbf‘ to‘+DATA/METRO/DATAFILE/UNDOTBS1.266.848860809‘;  --指向undo表空间文件

SQL> alter database rename file ‘/u01/app/oracle/oradata/metro/sysaux01.dbf‘to ‘+DATA/METRO/DATAFILE/SYSAUX.263.848860607‘;    --指向sysaux表空间文件

SQL> alter database rename file‘/u01/app/oracle/oradata/metro/users01.dbf‘ to‘+DATA/METRO/DATAFILE/USERS.267.848860815‘;     --指向users表空间文件

SQL> alter database rename file‘/u01/app/oracle/oradata/metro/example01.dbf‘ to‘+DATA/METRO/DATAFILE/EXAMPLE.265.848860723‘;   --指向example表空间文件

SQL> alter database open;

--启库,因所转储的数据文件为统一的SCN,但与此时日志SCN不符,需做不完全恢复

alter databaseopen

*

ERROR at line 1:

ORA-01190:control file or data file 1 is from before the last RESETLOGS

ORA-01110: data file 1: ‘+DATA/metro/datafile/system.264.848860609‘

SQL> alter database open resetlogs; --提示要做一个不完全恢复

alter databaseopen resetlogs

*

ERROR at line 1:

ORA-01139:RESETLOGS option only valid after an incomplete database recovery

SQL> recover database until cancel; --做一个不完全恢复

ORA-00279:change 862849 generated at 05/29/2014 18:22:44 needed for thread 1

ORA-00289:suggestion : /u01/app/oracle/arch1/1_15_848741495.dbf

ORA-00280:change 862849 for thread 1 is in sequence #15

Specify log:{<RET>=suggested | filename | AUTO | CANCEL}

auto   --自动查找所需日志sequence,未果

ORA-00279:change 863386 generated at 05/29/2014 19:40:54 needed for thread 1

ORA-00289:suggestion : /u01/app/oracle/arch1/1_1_848864454.dbf

ORA-00280:change 863386 for thread 1 is in sequence #1

ORA-00278: logfile ‘/u01/app/oracle/arch1/1_15_848741495.dbf‘ no longer needed

for thisrecovery

ORA-00308:cannot open archived log ‘/u01/app/oracle/arch1/1_1_848864454.dbf‘

ORA-27037:unable to obtain file status

IBM AIX RISCSystem/6000 Error: 2: No such file or directory

Additionalinformation: 3

SQL> recover database until cancel;

--再次执行不完全恢复,查看到提示需要日志sequence #为1

ORA-00279: change 863386 generated at 05/29/2014 19:06:03 needed forthread 1

ORA-00289: suggestion : /u01/app/oracle/arch1/1_1_848864454.dbf

ORA-00280: change 863386 for thread 1 is in sequence #1

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

SQL> set linesize 300

SQL> select * from v$log;     --查询sequence #为1的日志组为第2日志组

GROUP#   THREAD#  SEQUENCE#      BYTES   MEMBERS ARC STATUS          FIRST_CHANGE# FIRST_TIM

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

1          1          0  52428800          2 YESUNUSED                       0

3          1          0  52428800          2 YES UNUSED                       0

2         1  
       1   52428800          2 NO CURRENT                 86338629-MAY-14

SQL> select * from v$logfile;  --查找到第2日志组中的日志成员

GROUP# STATUS  TYPE    MEMBER                            IS_

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

3       ONLINE          /u01/app/oracle/oradata/metro/redo03.log    NO

2       ONLINE          /u01/app/oracle/oradata/metro/redo02.log    NO

1                                   ONLINE         /u01/app/oracle/oradata/metro/redo01.log    NO

1                                   ONLINE         /disk1/metro/redofile/redo01a.log              NO

2       ONLINE          /disk1/metro/redofile/redo02a.log           NO

3       ONLINE          /disk1/metro/redofile/redo03a.log           NO

--把查找到的对应日志sequence #为1的日志组成员填写至此,即为redo02.log

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

/u01/app/oracle/oradata/metro/redo02.log  

Log applied.

Media recovery complete.

SQL> select status fromv$instance;

STATUS

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

MOUNTED

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> alter database open resetlogs;

SQL> select status fromv$instance;

STATUS

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

OPEN

SQL> select NAME from v$datafile;

NAME

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

+DATA/METRO/DATAFILE/SYSTEM.264.848860609

+DATA/METRO/DATAFILE/UNDOTBS1.266.848860809

+DATA/METRO/DATAFILE/SYSAUX.263.848860607

+DATA/METRO/DATAFILE/USERS.267.848860815

+DATA/METRO/DATAFILE/EXAMPLE.265.848860723

--至此,数据文件转储到ASM

*****************************************************************************************

后期目标:迁移临时表空间、日志文件至ASM

*****************************************************************************************

SQL> select NAME fromv$tempfile;  --查看临时表空间位置

NAME

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

/u01/app/oracle/oradata/metro/temp01.dbf

SQL> selectname,status,enabled from v$tempfile;  
--查看临时表空间状态

NAME                               STATUS   ENABLED

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

/u01/app/oracle/oradata/metro/temp01.dbf  ONLINE   READ WRITE

SQL> alter tablespace tempadd tempfile ‘+DATA‘;  --添加ASM临时表空间

SQL> alter tablespace temp drop tempfile‘/u01/app/oracle/oradata/metro/temp01.dbf‘;--删除原临时表空间

--下面来对日志文件进行迁移

SQL> set linesize 120

SQL> select * from v$log;  --查看当前日志组状态

GROUP#    THREAD#  SEQUENCE#     BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

1          1          0  52428800          2 YESUNUSED                       0

2          1          1  52428800          2 NO  CURRENT                 863885 29-MAY-14

3          1          0  52428800          2 YES UNUSED                       0

--添加3组日志

SQL> alter database addlogfile ‘+DATA‘ SIZE 50m;

SQL> alter database addlogfile ‘+DATA‘ SIZE 50m;

SQL> alter database addlogfile ‘+DATA‘ SIZE 50m;

SQL> selectl.group#,l.sequence#,f.member as name,l.status,l.archived from v$logl,v$logfile f

2  where f.group#=l.group#

3 order by 1;--查看当日日志使用状态

GROUP#  SEQUENCE# NAME                         STATUS           ARC

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

1          0 /disk1/metro/redofile/redo01a.log         UNUSED           YES

1          0/u01/app/oracle/oradata/metro/redo01.log   UNUSED           YES

2          1/disk1/metro/redofile/redo02a.log          CURRENT          NO

2          1 /u01/app/oracle/oradata/metro/redo02.log   CURRENT          NO

3          0/disk1/metro/redofile/redo03a.log          UNUSED           YES

3          0/u01/app/oracle/oradata/metro/redo03.log    UNUSED           YES

4          0 +DATA/metro/onlinelog/group_4.274.848866UNUSED           YES

125

5          0+DATA/metro/onlinelog/group_5.275.848866 UNUSED           YES

171

6          0+DATA/metro/onlinelog/group_6.276.848866 UNUSED          YES

215

进行多次归档,切换当前日志组,使用‘ alterdatabase drop logfile’命令将原日志组删除,保留新建的ASM日志组,即完成将日志文件迁移到ASM。

SQL> selectl.group#,l.sequence#,f.member as name,l.status,l.archived from v$logl,v$logfile f

2  where f.group#=l.group#

3  order by 1;

GROUP# SEQUENCE# NAME      STATUS           ARC

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

1          2/disk1/metro/redofile/redo01a.log       INACTIVE         YES

1          2/u01/app/oracle/oradata/metro/redo01.log INACTIVE         YES

2          7 /disk1/metro/redofile/redo02a.log        CURRENT          NO

2          7/u01/app/oracle/oradata/metro/redo02.log CURRENT          NO

3          3/disk1/metro/redofile/redo03a.log       INACTIVE         YES

3          3 /u01/app/oracle/oradata/metro/redo03.logINACTIVE         YES

4          4+DATA/metro/onlinelog/group_4.274.848866 INACTIVE         YES

125

5          5+DATA/metro/onlinelog/group_5.275.848866 INACTIVE         YES

171

6          6+DATA/metro/onlinelog/group_6.276.848866 INACTIVE         YES

215

举例:

删除原日志组使用命令:

SQL>alter database drop logfile group 1;

后续跟进:

在进行switch命令时报错,后查明发现是一个细节之处做得不对,即向ASM转储数据文件时应处于mount状态,这样才会更新控制文件中的信息,之前多次尝试均是在nomount下做的备份,将文件转储到ASM下的。重新实验,在mount下转储,发现不再报错,问题解决。

数据库迁移:文件系统迁至ASM

时间: 2024-10-06 08:48:10

数据库迁移:文件系统迁至ASM的相关文章

将文件系统数据库迁移到ASM中

使用裸设备配置ASM实例 http://www.cnblogs.com/myrunning/p/4270849.html 1.查看我们创建的磁盘组 [[email protected] ~]$ export ORACLE_SID=+ASM [[email protected] ~]$ sqlplus '/as sysdba' SQL*Plus: Release 10.2.0.4.0 - Production on Mon Feb 2 13:37:25 2015 Copyright (c) 198

使用RMAN迁移文件系统数据库到ASM

--================================== -- 使用RMAN迁移文件系统数据库到ASM --================================== 在实际的工作过程中,由于ASM磁盘管理的便利性,因此很多时候需要将文件系统的数据库迁移到ASM,本文演示了如何将文件系统数据库迁移到ASM实例. 有关如何创建ASM实例及ASM磁盘管理请参考 创建ASM实例及数据库 ASM 磁盘组及磁盘的管理 使用 ASMCMD 工具管理ASM实例 一.主要步骤(假定AS

Oracle ASM 迁移文件系统(File System)

项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前演练,可单独联系进行索取. 文档编号:1-1-1 同机ASM迁移文件系统 原文地址:https://www.cnblogs.com/askscuti/p/11302326.html

Oracle数据库迁移的几种方式

面试: 一.exp/imp逻辑备份与恢复: 二.Storage存储迁移: 将数据文件.控制文件.日志文件.spfile挂到新机器上,然后在新机器上启动数据库. 三.利用data guard迁移: 四.用rman做迁移: 我们常常需要对数据进行迁移,迁移到更性能配置更高级的主机OS上.迁移到远程的机房.迁移到不同的平台下,以下介绍ORACLE的几种数据库迁移方案: 一.exp/imp逻辑备份与恢复:  它是最常用最简单的方法,一般是基于应用的owner级做导出导入.  操作方法为: 在新库建立好o

数据库迁移的方法、步骤和心得

关于数据库迁移的方法.步骤和心得在项目中经常会遇到系统完全更换后的历史数据迁移问题,以示对客户历史工作的尊重,何况很多数据仍有保留的必要.那怎么做历史数据迁移呢?系统分析:1.分析原有的业务系统精确到大致的系统功能模块.大致的处理流程即可2.分析现有的业务系统精确到大致的系统功能模块.大致的处理流程即可3.分析两者自己的区别和差异大致分析一下两个业务系统之间的区别,有助于确定工作量和工作进度4.分析用户对旧有数据的需求分析对旧有数据的需求,才不至于盲目的全部性的进行迁移5.分析用户对旧有数据的处

postgresql 数据库迁移时间

上周四要做数据库迁移,要迁的pg库数据量为1165GB. 在原库上后台跑着脚本导数据到新库,先导了850M的基础表,然后用脚本导历史表: pg_dump -h 0.0.0.0 -U monitor monitor -t 'his*' | psql -h 135.32.9.99 -U postgres monitor > postgresql.log 从上周四早上10:24启动,到差不多今早10点结束.总共用时大约143个小时左右. 哇-好大一个数字! 版权声明:本文为博主原创文章,未经博主允许不

wordpress博客站点配置及数据库迁移

1.wordpress博客站点部署配置 1.1 检查环境 1.1.1 nginx.conf配置文件 ###检查nginx配置文件 [[email protected] conf]# cat nginx.conf worker_processes 1; events { worker_connections  1024; } http { log_format  main  '$remote_addr - $remote_user [$time_local]"$request" ' '$

MVC VS2012 Code First 数据库迁移教程

1.在"服务资源管理器"连接数据库 2.打开工具-Nuget程序包管理器"程序包管理器控制台" 3.控制台输入命令:PM> Enable-Misgrations 4.以项目MvcGuestbook.Models.MvcGuestbookContext为例: PM> Enable-Misgrations-ContextTypeName MvcGuestbook.Models.MvcGuestbookContext 5.更新数据库:PM>Update-

转 【TTS】AIX平台数据库迁移到Linux--基于RMAN(真实环境)

[TTS]AIX平台数据库迁移到Linux--基于RMAN(真实环境) http://www.cnblogs.com/lhrbest/articles/5186933.html 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 异构平台下传输表空间的实施 ② 传输表空间基于表空间的read only和rman2种方式 ③ 平台字节序.自包含概念 ④ expdp/impdp的应用 ⑤ 数据库迁移一般情况下应该收集哪些信息及相应的脚本