zoukankan      html  css  js  c++  java
  • 【ASM】使用RMAN迁移数据库至ASM实例

    本篇演示将单实例下的数据库迁移至ASM环境。

    一 软件环境
    • Oracle VM Virtualbox 5.2.8
    • Oracle Linux 6.5
    • Oracle 11.2.0.4
    二 主机设置

    1 创建用户和组
    [root@strong ~]# groupadd asmadmin
    [root@strong ~]# groupadd asmdba
    [root@strong ~]# groupadd asmoper
    [root@strong ~]# useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
    [root@strong ~]# passwd grid
    Changing password for user grid.
    New password: 
    BAD PASSWORD: it is too short
    BAD PASSWORD: is too simple
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    2 修改Oracle用户组
    [root@strong ~]# id oracle
    uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba),502(oper)
    [root@strong ~]# usermod -G dba,asmadmin,asmdba,oper oracle
    [root@strong ~]# id oracle
    uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba),502(oper),503(asmadmin),504(asmdba)
    3 配置内核参数
    在 /etc/security/limits.conf配置文件增加下面的内容。
    [root@strong ~]# vim /etc/security/limits.conf
    grid soft nproc 2047  
    grid hard nproc 16384  
    grid soft nofile 1024  
    grid hard nofile 65536  
    4 创建目录
    [root@strong ~]# mkdir -p /u01/app/grid
    [root@strong ~]# chown -R grid:oinstall /u01/app/grid/
    [root@strong ~]# chmod -R 775 /u01/app/grid/
    5 设置环境变量
    [root@strong ~]# su - grid
    在.bash_profile增加如下内容。
    [grid@strong ~]$ vim .bash_profile
    ORACLE_BASE=/u01/app/grid
    export ORACLE_BASE
    ORACLE_SID=+ASM
    export ORACLE_SID
    
    export ORACLE_TERM=xterm
    ORACLE_HOME=/u01/app/grid/product/11.2.0/grid
    export ORACLE_HOME
    PATH=$ORACLE_HOME/bin:$PATH 
    export PATH  
    [grid@strong ~]$ . .bash_profile 
    [grid@strong ~]$ echo $ORACLE_SID 
    +ASM
    三 ASM配置(udev)

    1 Linux系统关闭情况下增加4块磁盘

    2 创建分区
    [root@strong ~]# fdisk /dev/sdb 
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xc5819521.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-1566, default 1): 
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-1566, default 1566): 
    Using default value 1566
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    [root@strong ~]# 
    注:同样的方法分别对/dev/sdc、/dev/sdd、/dev/sde创建分区。
    创建完后查看磁盘配置
    [root@strong ~]# fdisk -l |grep /dev/sd
    Disk /dev/sda: 53.7 GB, 53687091200 bytes
    /dev/sda1               1        3917    31457280   83  Linux
    /dev/sda2            3917        4439     4194304   82  Linux swap / Solaris
    /dev/sda3   *        4439        6528    16776192   83  Linux
    Disk /dev/sdb: 12.9 GB, 12884901888 bytes
    /dev/sdb1               1        1566    12578863+  83  Linux
    Disk /dev/sdc: 12.9 GB, 12884901888 bytes
    /dev/sdc1               1        1566    12578863+  83  Linux
    Disk /dev/sdd: 12.9 GB, 12884901888 bytes
    /dev/sdd1               1        1566    12578863+  83  Linux
    Disk /dev/sde: 12.9 GB, 12884901888 bytes
    /dev/sde1               1        1566    12578863+  83  Linux
    3 获取块设备信息
    [root@strong ~]# /sbin/scsi_id -g -u /dev/sdb
    1ATA_VBOX_HARDDISK_VB570f119a-101734d2
    [root@strong ~]# /sbin/scsi_id -g -u /dev/sdc
    1ATA_VBOX_HARDDISK_VB9845df4e-dd4ce3ba
    [root@strong ~]# /sbin/scsi_id -g -u /dev/sdd
    1ATA_VBOX_HARDDISK_VB61473db8-e1b5de18
    [root@strong ~]# /sbin/scsi_id -g -u /dev/sde
    1ATA_VBOX_HARDDISK_VB73f89770-56738154
    4 创建配置文件
    [root@strong ~]# vim /etc/scsi_id.config
    
    options=-g
    5 创建规则文件
    [root@strong ~]# vim /etc/udev/rules.d/99-oracle-asmdevices.rules
    
    KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK", NAME="asm-disk1", OWNER="grid", GROUP="asmadmin", MODE="0660KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB570f119a-101734d2", NAME="asm-disk1", OWNER="grid", GROUP="asmadmin", MODE="0660"KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB9845df4e-dd4ce3ba", NAME="asm-disk2", OWNER="grid", GROUP="asmadmin", MODE="0660"KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB61473db8-e1b5de18", NAME="asm-disk3", OWNER="grid", GROUP="asmadmin", MODE="0660"
    KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="1ATA_VBOX_HARDDISK_VB73f89770-56738154", NAME="asm-disk4", OWNER="grid", GROUP="asmadmin", MODE="0660"
    6 更新块分区
    [root@strong ~]# /sbin/partprobe /dev/sdb1
    [root@strong ~]# /sbin/partprobe /dev/sdc1
    [root@strong ~]# /sbin/partprobe /dev/sdd1
    [root@strong ~]# /sbin/partprobe /dev/sde1
    7 查看所有者和权限
    [root@strong ~]# ll /dev/asm-disk*
    brw-rw----. 1 grid asmadmin 8, 17 May 25 21:51 /dev/asm-disk1
    brw-rw----. 1 grid asmadmin 8, 33 May 25 21:51 /dev/asm-disk2
    brw-rw----. 1 grid asmadmin 8, 49 May 25 21:51 /dev/asm-disk3
    brw-rw----. 1 grid asmadmin 8, 65 May 25 21:51 /dev/asm-disk4
    四 Oracle ASM安装

    1 上传并解压Grid软件
    [grid@strong ~]$ cd /u01/app/grid/
    [grid@strong grid]$ mkdir soft
    [grid@strong grid]$ cd soft/
    [grid@strong soft]$ ll
    total 1177008
    -rw-r--r--. 1 grid oinstall 1205251894 May 25 21:55 p13390677_112040_Linux-x86-64_3of7.zip
    [grid@strong soft]$ unzip p13390677_112040_Linux-x86-64_3of7.zip 
    2 切换到软件目录进行安装

    安装过程略

    3 安装完成使用asmca创建磁盘


    五 使用RMAN迁移数据库至ASM实例

    1 查看数据文件
    [oracle@strong ~]$ ls /u01/app/oracle/oradata/orcl/
    control01.ctl  example01.dbf  redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf
    2 备份数据库(数据库处于归档模式)
    [oracle@strong ~]$ rman target /
    
    Recovery Manager: Release 11.2.0.4.0 - Production on Fri May 25 22:28:04 2018
    
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    
    connected to target database: ORCL (DBID=1503138684)
    
    RMAN> backup as copy database format '+DATA';
    
    Starting backup at 25-MAY-18
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=34 device type=DISK
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
    output file name=+DATA/orcl/datafile/system.258.977092105 tag=TAG20180525T222821 RECID=3 STAMP=977092171
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:15
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
    output file name=+DATA/orcl/datafile/sysaux.259.977092177 tag=TAG20180525T222821 RECID=4 STAMP=977092223
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:55
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbf
    output file name=+DATA/orcl/datafile/example.260.977092233 tag=TAG20180525T222821 RECID=5 STAMP=977092258
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
    output file name=+DATA/orcl/datafile/undotbs1.261.977092267 tag=TAG20180525T222821 RECID=6 STAMP=977092277
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
    channel ORA_DISK_1: starting datafile copy
    copying current control file
    output file name=+DATA/orcl/controlfile/backup.262.977092283 tag=TAG20180525T222821 RECID=7 STAMP=977092285
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    channel ORA_DISK_1: starting datafile copy
    input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
    output file name=+DATA/orcl/datafile/users.263.977092287 tag=TAG20180525T222821 RECID=8 STAMP=977092286
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
    channel ORA_DISK_1: starting full datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    including current SPFILE in backup set
    channel ORA_DISK_1: starting piece 1 at 25-MAY-18
    channel ORA_DISK_1: finished piece 1 at 25-MAY-18
    piece handle=+DATA/orcl/backupset/2018_05_25/nnsnf0_tag20180525t222821_0.264.977092287 tag=TAG20180525T222821 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
    Finished backup at 25-MAY-18
    3 修改spfile参数
    [oracle@strong ~]$ sqlplus /nolog
    
    SQL*Plus: Release 11.2.0.4.0 Production on Fri May 25 22:32:14 2018
    
    Copyright (c) 1982, 2013, Oracle.  All rights reserved.
    
    SQL> conn / as sysdba
    Connected.
    SQL> alter system set db_create_file_dest='+DATA' scope=both;
    
    System altered.
    
    SQL> alter system set db_recovery_file_dest='+RECOVERY' scope=both;
    
    System altered.
    
    SQL> alter system set db_recovery_file_dest_size=4G;
    
    System altered.
    
    SQL> alter system set db_create_online_log_dest_1='+DGLOG1' scope=both;
    
    System altered.
    
    SQL> alter system set db_create_online_log_dest_2='+DGLOG2' scope=both;
    
    System altered.
    参数说明:
    • db_create_file_dest:该参数指定了数据文件、控制文件、重做日志文件以及临时文件的默认创建位置;如果没有db_create_online_log_dest_n参数,还会在该参数指定的磁盘组中创建重做日志文件和控制文件;
    • db_recovery_file_dest:该参数指定了RMAN备份、闪回日志以及归档日志的存储位置;如果没有db_create_online_log_dest_n参数,还会在该参数指定的目录下创建一路重做日志文件;
    • db_recovery_file_dest_size:设置快闪恢复区的大小;
    • db_create_online_log_dest_n:存储重做日志和控制文件的副本,实现多路复用;
    4 迁移控制文件到ASM

    首先通过spfile创建pfile,目的是修改pfile中控制文件的参数,然后创建spfile,这样就达到了修改spfile参数的目的。
    SQL> create pfile='/home/oracle/initorcl.ora' from spfile;
    
    File created.
    删除/home/oracle/initorcl.ora控制文件的参数,关闭数据库,根据pfile创建spfile。
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> create spfile from pfile='/home/oracle/initorcl.ora';
    
    File created.
    
    SQL> startup nomount; 
    ORACLE instance started.
    
    Total System Global Area  839282688 bytes
    Fixed Size		    2257880 bytes
    Variable Size		  545262632 bytes
    Database Buffers	  289406976 bytes
    Redo Buffers		    2355200 bytes
    SQL> 
    使用RMAN恢复控制文件到新的ASM磁盘位置
    [oracle@strong ~]$ rman target /
    
    Recovery Manager: Release 11.2.0.4.0 - Production on Fri May 25 22:38:37 2018
    
    Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    
    connected to target database: ORCL (not mounted)
    
    RMAN> restore controlfile from '/u01/app/oracle/oradata/orcl/control01.ctl';
    
    Starting restore at 25-MAY-18
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=22 device type=DISK
    
    channel ORA_DISK_1: copied control file copy
    output file name=+DGLOG1/orcl/controlfile/current.256.977092733
    output file name=+DGLOG2/orcl/controlfile/current.256.977092735
    Finished restore at 25-MAY-18
    5 数据文件转到ASM磁盘
    RMAN> alter database mount;
    
    database mounted
    released channel: ORA_DISK_1
    
    RMAN> switch database to copy;
    
    datafile 1 switched to datafile copy "+DATA/orcl/datafile/system.258.977092105"
    datafile 2 switched to datafile copy "+DATA/orcl/datafile/sysaux.259.977092177"
    datafile 3 switched to datafile copy "+DATA/orcl/datafile/undotbs1.261.977092267"
    datafile 4 switched to datafile copy "+DATA/orcl/datafile/users.263.977092287"
    datafile 5 switched to datafile copy "+DATA/orcl/datafile/example.260.977092233"
    6 恢复并打开数据库
    RMAN> recover database;
    
    Starting recover at 25-MAY-18
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=22 device type=DISK
    
    starting media recovery
    media recovery complete, elapsed time: 00:00:03
    
    Finished recover at 25-MAY-18
    
    RMAN> alter database open;
    
    database opened
    7 迁移重做日志至ASM磁盘

    1)确认日志文件位置
    SQL> set linesize 200
    SQL> col member for a50
    SQL> select group#,member from v$logfile;
    
        GROUP# MEMBER
    ---------- --------------------------------------------------
    	 3 /u01/app/oracle/oradata/orcl/redo03.log
    	 2 /u01/app/oracle/oradata/orcl/redo02.log
    	 1 /u01/app/oracle/oradata/orcl/redo01.log
    2)迁移日志至ASM磁盘
    SQL> alter database add logfile member '+DGLOG1','+DGLOG2' to group 1;
    
    Database altered.
    
    SQL> alter database add logfile member '+DGLOG1','+DGLOG2' to group 2;
    
    Database altered.
    
    SQL> alter database add logfile member '+DGLOG1','+DGLOG2' to group 3;
    
    Database altered.
    3)查看日志文件
    SQL> select group#,status,member from v$logfile;
    
        GROUP# STATUS  MEMBER
    ---------- ------- --------------------------------------------------
    	 3	   /u01/app/oracle/oradata/orcl/redo03.log
    	 2	   /u01/app/oracle/oradata/orcl/redo02.log
    	 1	   /u01/app/oracle/oradata/orcl/redo01.log
    	 1 INVALID +DGLOG1/orcl/onlinelog/group_1.257.977093411
    	 1 INVALID +DGLOG2/orcl/onlinelog/group_1.257.977093415
    	 2 INVALID +DGLOG1/orcl/onlinelog/group_2.258.977093433
    	 2 INVALID +DGLOG2/orcl/onlinelog/group_2.258.977093435
    	 3 INVALID +DGLOG1/orcl/onlinelog/group_3.259.977093475
    	 3 INVALID +DGLOG2/orcl/onlinelog/group_3.259.977093477
    
    9 rows selected.
    4)删除基于文件系统的日志
    SQL> alter system switch logfile;
    
    System altered.
    
    SQL> alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo01.log';
    
    Database altered.
    
    SQL> alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo02.log';
    
    Database altered.
    
    SQL> alter system switch logfile;
    
    System altered.
    
    SQL> alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo03.log';
    
    Database altered.
    5)查看迁移后的日志
    SQL> select group#,status,member from v$logfile;
    
        GROUP# STATUS  MEMBER
    ---------- ------- --------------------------------------------------
    	 1	   +DGLOG1/orcl/onlinelog/group_1.257.977093411
    	 1	   +DGLOG2/orcl/onlinelog/group_1.257.977093415
    	 2	   +DGLOG1/orcl/onlinelog/group_2.258.977093433
    	 2	   +DGLOG2/orcl/onlinelog/group_2.258.977093435
    	 3	   +DGLOG1/orcl/onlinelog/group_3.259.977093475
    	 3	   +DGLOG2/orcl/onlinelog/group_3.259.977093477
    
    6 rows selected.
    8 ASM磁盘组中创建临时文件

    1)查看临时文件信息
    SQL> col name for a50
    SQL> select file#,ts#,name from v$tempfile;
    
         FILE#	  TS# NAME
    ---------- ---------- --------------------------------------------------
    	 1	    3 /u01/app/oracle/oradata/orcl/temp01.dbf
    2)创建临时文件
    SQL> alter tablespace temp add tempfile size 2048m;
    
    Tablespace altered.
    
    SQL> select file#,ts#,name from v$tempfile;
    
         FILE#	  TS# NAME
    ---------- ---------- --------------------------------------------------
    	 2	    3 +DATA/orcl/tempfile/temp.265.977094205
    	 1	    3 /u01/app/oracle/oradata/orcl/temp01.dbf
    3)删除旧的临时文件
    SQL> alter tablespace temp drop tempfile '/u01/app/oracle/oradata/orcl/temp01.dbf';
    
    Tablespace altered.
    
    SQL> select file#,ts#,name from v$tempfile;
    
         FILE#	  TS# NAME
    ---------- ---------- --------------------------------------------------
    	 2	    3 +DATA/orcl/tempfile/temp.265.977094205
    六 验证迁移

    启动数据库,查看各文件状态。

    1 查看控制文件参数
    SQL> show parameter control
    
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    control_file_record_keep_time	     integer	 7
    control_files			     string	 +DGLOG1/orcl/controlfile/curre
    						 nt.256.977092733, +DGLOG2/orcl
    						 /controlfile/current.256.97709
    						 2735
    control_management_pack_access	     string	 DIAGNOSTIC+TUNING
    2 查看文件信息
    SQL> col file_name for a50
    SQL> select file_name,file_id,tablespace_name,status,online_status from dba_data_files;
    
    FILE_NAME					      FILE_ID TABLESPACE_NAME		     STATUS    ONLINE_
    -------------------------------------------------- ---------- ------------------------------ --------- -------
    +DATA/orcl/datafile/users.263.977092287 		    4 USERS			     AVAILABLE ONLINE
    +DATA/orcl/datafile/undotbs1.261.977092267		    3 UNDOTBS1			     AVAILABLE ONLINE
    +DATA/orcl/datafile/sysaux.259.977092177		    2 SYSAUX			     AVAILABLE ONLINE
    +DATA/orcl/datafile/system.258.977092105		    1 SYSTEM			     AVAILABLE SYSTEM
    +DATA/orcl/datafile/example.260.977092233		    5 EXAMPLE			     AVAILABLE ONLINE
    3 查看日志信息
    SQL> select group#,member from v$logfile;
    
        GROUP# MEMBER
    ---------- --------------------------------------------------
    	 1 +DGLOG1/orcl/onlinelog/group_1.257.977093411
    	 1 +DGLOG2/orcl/onlinelog/group_1.257.977093415
    	 2 +DGLOG1/orcl/onlinelog/group_2.258.977093433
    	 2 +DGLOG2/orcl/onlinelog/group_2.258.977093435
    	 3 +DGLOG1/orcl/onlinelog/group_3.259.977093475
    	 3 +DGLOG2/orcl/onlinelog/group_3.259.977093477
    
    6 rows selected.
    4 查看控制文件信息
    SQL> select name from v$controlfile;
    
    NAME
    --------------------------------------------------
    +DGLOG1/orcl/controlfile/current.256.977092733
    +DGLOG2/orcl/controlfile/current.256.977092735
    至此,迁移完成。



  • 相关阅读:
    mysql
    jQuery选择器
    使用JavaScript操作DOM节点元素的常用方法(创建/删除/替换/复制等)
    MVC2.0==>MVC3.0
    sql 邮件发送测试情况
    C#调用存储过程
    设计模式
    sql 分页
    SQL Server 存储过程(转载)
    sqlitehelper封装
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975645.html
Copyright © 2011-2022 走看看