• 数据库迁移至ASM


      本实验主要介绍将数据库迁移到ASM的过程,并不介绍ASM实例的搭建。实验环境:solaris10+oracle 10R

    1.迁移前期准备

    1.1 ASM实例搭建(略)

    1.2 磁盘分区使用说明

      RDBMS 实例 ASM实例
    /dev/dsk/c1t0d0s0 /u01/oracle  
    /dev/rdsk/c2t0d0s1   data01:数据文件,控制文件,联机日志
    /dev/rdsk/c2t1d0s1  
    /dev/rdsk/c2t2d0s1   data02:控制文件,recovery area
    /dev/rdsk/c2t3d0s1  

    2. RDBMS迁移到ASM

    2.1备份RDBMS至data01

    bash-3.00$ rman target /
    
    Recovery Manager: Release 10.2.0.2.0 - Production on Mon Apr 15 12:22:31 2013
    
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    connected to target database: SUN (DBID=1913551800)
    
    --控制文件自动备份关闭
    RMAN> show all;
    
    RMAN configuration parameters are:
    CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
    CONFIGURE BACKUP OPTIMIZATION OFF; # default
    CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
    CONFIGURE CONTROLFILE AUTOBACKUP OFF;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/ctl_%d_%F';
    CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    CONFIGURE MAXSETSIZE TO UNLIMITED; # default
    CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
    CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
    CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
    CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/oracle/dbs/snapcf_sun.f'; # default
    
    RMAN>
    --备份全库
    RMAN> backup as copy database format '+DATA01';
    
    Starting backup at 15-APR-13
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    ........
    channel ORA_DISK_1: starting datafile copy
    --在全备情况下,即使自动备份关闭,控制文件,SPFILE也会被备份 
    copying current control file
    output filename=+DATA01/sun/controlfile/backup.266.812809561 tag=TAG20130415T122257 recid=83 stamp=812809563
    channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03
    channel ORA_DISK_1: starting full datafile backupset
    channel ORA_DISK_1: specifying datafile(s) in backupset
    including current SPFILE in backupset
    channel ORA_DISK_1: starting piece 1 at 15-APR-13
    channel ORA_DISK_1: finished piece 1 at 15-APR-13
    piece handle=+DATA01/sun/backupset/2013_04_15/nnsnf0_tag20130415t122257_0.267.812809565 tag=TAG20130415T122257 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
    Finished backup at 15-APR-13

    2.2修改闪回目录及大小

     1 SQL> show parameter db_recovery_
     2 
     3 NAME                                 TYPE        VALUE
     4 ------------------------------------ ----------- ------------------------------
     5 db_recovery_file_dest                string      /u01/flash_recovery_area
     6 db_recovery_file_dest_size           big integer 2G
     7 SQL> alter system set db_recovery_file_dest='+DATA02' scope=spfile;
     8 
     9 System altered.
    10 
    11 SQL> alter system set db_recovery_file_dest_size=500M scope=spfile;
    12 
    13 System altered.
    14 
    15 SQL>

    2.3修改联机日志,自动创建数据文件目录

     1 SQL> show parameter db_create
     2 
     3 NAME                                 TYPE        VALUE
     4 ------------------------------------ ----------- ------------------------------
     5 db_create_file_dest                  string
     6 db_create_online_log_dest_1          string
     7 db_create_online_log_dest_2          string
     8 db_create_online_log_dest_3          string
     9 db_create_online_log_dest_4          string
    10 db_create_online_log_dest_5          string
    11 SQL> alter system set db_create_file_dest='+DATA01' scope=spfile;
    12 
    13 System altered.
    14 
    15 SQL> alter system set db_create_online_log_dest_1='+DATA01' scope=spfile;
    16 
    17 System altered.
    18 
    19 SQL> 

    2.4在每个联机日志组中添加一个日志文件

     1 SQL> alter database add logfile member '+DATA01' to group 1;
     2 
     3 Database altered.
     4 
     5 SQL> alter database add logfile member '+DATA01' to group 2;
     6 
     7 Database altered.
     8 
     9 SQL> alter database add logfile member '+DATA01' to group 3; 
    10 
    11 Database altered.
    12 
    13 --查看结果
    14 SQL> select group#,member from v$logfile order by 1;
    15 
    16     GROUP# MEMBER
    17 ---------- ---------------------------------------------
    18          1 /u01/oradata/sunbak/redo01.log
    19          1 +DATA01/sun/onlinelog/group_1.268.812811035
    20          2 +DATA01/sun/onlinelog/group_2.269.812811077
    21          2 /u01/oradata/sunbak/redo02.log
    22          3 +DATA01/sun/onlinelog/group_3.270.812811139
    23          3 /u01/oradata/sunbak/redo03.log
    24 
    25 6 rows selected.
    26 
    27 SQL> 
    28 
    29 4.5删除原来的联机日志
    30 --联机日志的状态必须是INACTIVE时,删除才能成功
    31 --利用以下sql,将联机日志状态变为INACTIVE(v$log.status)
    32 SQL> alter system switch logfile;
    33 SQL> alter system checkpoint;
    34 SQL> select  GROUP#,STATUS from v$log;
    35 
    36     GROUP# STATUS
    37 ---------- ----------------
    38          1 INACTIVE
    39          2 INACTIVE
    40          3 CURRENT
    41 
    42 SQL> alter database drop logfile member '/u01/oradata/sunbak/redo01.log';
    43 SQL> alter database drop logfile member '/u01/oradata/sunbak/redo02.log'; 
    44 SQL> alter database drop logfile member '/u01/oradata/sunbak/redo03.log';

    2.5 迁移临时表空间至ASM

     1 查看当前临时表空间配置
     2 SQL> select ts#,bytes/1024/1024,name from v$tempfile;
     3 
     4        TS# BYTES/1024/1024 NAME
     5 ---------- --------------- ----------------------------------------
     6          3              20 /u01/oradata/sunbak/temp01.dbf
     7 
     8 SQL> select ts#,name from v$tablespace where ts#=3;
     9 
    10        TS# NAME
    11 ---------- ----------------------------------------
    12          3 TEMP
    13 SQL> 

    2.5.1 给临时表空间添加文件

     1 SQL> alter tablespace temp add tempfile '+DATA01' size 50M;
     2 
     3 Tablespace altered.
     4 
     5 SQL> select name from v$tempfile;
     6 
     7 NAME
     8 ----------------------------------------
     9 +DATA01/sun/tempfile/temp.271.812812791
    10 /u01/oradata/sunbak/temp01.dbf
    11 
    12 SQL>

    3.把控制文件,数据文件迁移至ASM

    3.1 记录当前控制文件配置

     1 SQL> show parameter control
     2 
     3 NAME                                 TYPE        VALUE
     4 ------------------------------------ ----------- ------------------------------
     5 control_file_record_keep_time        integer     7
     6 control_files                        string      /u01/oradata/sunbak/control01.
     7                                                  ctl, /u01/oradata/sunbak/contr
     8                                                  ol02.ctl, /u01/oradata/sunbak/
     9                                                  control03.ctl
    10 SQL>

    3.2 修改控制文件的目录为'+DATA01','+DATA02'

    1 SQL> alter system set control_files='+DATA01/sun/CONTROLFILE/control01','+DATA02/sun/CONTROLFILE/control02' scope=spfile;
    2 
    3 System altered.
    4 
    5 SQL> 

    3.3 关闭数据库

    1 SQL> shutdown immediate
    2 Database closed.
    3 Database dismounted.
    4 ORACLE instance shut down.
    5 SQL>

    3.4 将数据库起到nomount状态

    1 SQL> startup nomount
    2 ORACLE instance started.
    3 
    4 Total System Global Area  289406976 bytes
    5 Fixed Size                  1279820 bytes
    6 Variable Size             109054132 bytes
    7 Database Buffers          176160768 bytes
    8 Redo Buffers                2912256 bytes
    9 SQL>

    3.5 恢复新的控制文件

     1 bash-3.00$ rman target /
     2 
     3 Recovery Manager: Release 10.2.0.2.0 - Production on Mon Apr 15 13:32:13 2013
     4 
     5 Copyright (c) 1982, 2005, Oracle.  All rights reserved.
     6 
     7 connected to target database: sun (not mounted)
     8 
     9 RMAN> restore controlfile from '/u01/oradata/sunbak/control01.ctl';
    10 
    11 Starting restore at 15-APR-13
    12 using target database control file instead of recovery catalog
    13 allocated channel: ORA_DISK_1
    14 channel ORA_DISK_1: sid=156 devtype=DISK
    15 
    16 channel ORA_DISK_1: copied control file copy
    17 output filename=+DATA01/sun/controlfile/control01
    18 output filename=+DATA02/sun/controlfile/control02
    19 Finished restore at 15-APR-13
    20 
    21 RMAN>

    3.6 将数据库启到mount

    1 RMAN> alter database mount;
    2 
    3 database mounted
    4 released channel: ORA_DISK_1
    5 
    6 RMAN>

    3.7 切换数据文件到拷贝数据文件

      switch database to copy 文档中给的解释:Renames the datafiles and control files to use the filenames of image copies of these files. RMAN switches to the latest image copy of each file.After a database switch, RMAN considers the previous database files as datafile copies.

     1 RMAN> switch database to copy;
     2 
     3 datafile 1 switched to datafile copy "+DATA01/sun/datafile/system.265.812809377"
     4 datafile 2 switched to datafile copy "+DATA01/sun/datafile/undotbs1.261.812809543"
     5 datafile 3 switched to datafile copy "+DATA01/sun/datafile/sysaux.264.812809463"
     6 datafile 4 switched to datafile copy "+DATA01/sun/datafile/users.262.812809557"
     7 datafile 5 switched to datafile copy "+DATA01/sun/datafile/example.263.812809507"
     8 datafile 6 switched to datafile copy "+DATA01/sun/datafile/sun01.260.812809551"
     9 datafile 7 switched to datafile copy "+DATA01/sun/datafile/sun02.258.812809553"
    10 datafile 8 switched to datafile copy "+DATA01/sun/datafile/sun03.257.812809557"
    11 datafile 9 switched to datafile copy "+DATA01/sun/datafile/users.259.812809559"
    12 datafile 10 switched to datafile copy "+DATA01/sun/datafile/users.256.812809561"
    13 
    14 RMAN> 

    3.8 数据库恢复:我是用备份做的迁移,恢复是必须的!

     1 RMAN> recover database;
     2 
     3 Starting recover at 15-APR-13
     4 allocated channel: ORA_DISK_1
     5 channel ORA_DISK_1: sid=156 devtype=DISK
     6 
     7 starting media recovery
     8 
     9 archive log thread 1 sequence 13 is already on disk as file /u01/admin/sun/arch/1_13_808092233.dbf
    10 archive log thread 1 sequence 14 is already on disk as file /u01/admin/sun/arch/1_14_808092233.dbf
    11 archive log thread 1 sequence 15 is already on disk as file /u01/admin/sun/arch/1_15_808092233.dbf
    12 archive log thread 1 sequence 16 is already on disk as file /u01/admin/sun/arch/1_16_808092233.dbf
    13 archive log thread 1 sequence 17 is already on disk as file /u01/admin/sun/arch/1_17_808092233.dbf
    14 archive log thread 1 sequence 18 is already on disk as file /u01/admin/sun/arch/1_18_808092233.dbf
    15 archive log thread 1 sequence 19 is already on disk as file /u01/admin/sun/arch/1_19_808092233.dbf
    16 archive log thread 1 sequence 20 is already on disk as file /u01/admin/sun/arch/1_20_808092233.dbf
    17 archive log thread 1 sequence 21 is already on disk as file /u01/admin/sun/arch/1_21_808092233.dbf
    18 archive log thread 1 sequence 22 is already on disk as file /u01/admin/sun/arch/1_22_808092233.dbf
    19 archive log filename=/u01/admin/sun/arch/1_13_808092233.dbf thread=1 sequence=13
    20 archive log filename=/u01/admin/sun/arch/1_14_808092233.dbf thread=1 sequence=14
    21 archive log filename=/u01/admin/sun/arch/1_15_808092233.dbf thread=1 sequence=15
    22 archive log filename=/u01/admin/sun/arch/1_16_808092233.dbf thread=1 sequence=16
    23 archive log filename=/u01/admin/sun/arch/1_17_808092233.dbf thread=1 sequence=17
    24 archive log filename=/u01/admin/sun/arch/1_18_808092233.dbf thread=1 sequence=18
    25 archive log filename=/u01/admin/sun/arch/1_19_808092233.dbf thread=1 sequence=19
    26 archive log filename=/u01/admin/sun/arch/1_20_808092233.dbf thread=1 sequence=20
    27 media recovery complete, elapsed time: 00:00:20
    28 Finished recover at 15-APR-13
    29 
    30 RMAN>

    4.打开数据库

    1 RMAN> alter database open;
    2 
    3 database opened
    4 
    5 RMAN>

    5.验证

     1 --控制文件
     2 SQL> select name from v$controlfile;
     3 
     4 NAME
     5 --------------------------------------------------------------------------------
     6 +DATA01/sun/controlfile/control01
     7 +DATA02/sun/controlfile/control02
     8 
     9 SQL>
    10 --数据文件
    11 SQL> select name,status from v$datafile;
    12 
    13 NAME                                          STATUS
    14 --------------------------------------------- -------
    15 +DATA01/sun/datafile/system.265.812809377     SYSTEM
    16 +DATA01/sun/datafile/undotbs1.261.812809543   ONLINE
    17 +DATA01/sun/datafile/sysaux.264.812809463     ONLINE
    18 +DATA01/sun/datafile/users.262.812809557      ONLINE
    19 +DATA01/sun/datafile/example.263.812809507    ONLINE
    20 +DATA01/sun/datafile/sun01.260.812809551      ONLINE
    21 +DATA01/sun/datafile/sun02.258.812809553      ONLINE
    22 +DATA01/sun/datafile/sun03.257.812809557      ONLINE
    23 +DATA01/sun/datafile/users.259.812809559      ONLINE
    24 +DATA01/sun/datafile/users.256.812809561      ONLINE
    25 
    26 10 rows selected.
    27 
    28 SQL>
    29 --临时表空间
    30 SQL> select name from v$tempfile;
    31 
    32 NAME
    33 ---------------------------------------------
    34 +DATA01/sun/tempfile/temp.271.812812791
    35 /u01/oradata/sunbak/temp01.dbf
    36 
    37 SQL>

    6.删除多余文件

     1 --删除原来的联机日志
     2 --联机日志的状态必须是INACTIVE时,删除才能成功
     3 --利用以下sql,将联机日志状态变为INACTIVE(v$log.status)
     4 SQL> alter system switch logfile;
     5 SQL> alter system checkpoint;
     6 SQL> select  GROUP#,STATUS from v$log;
     7 
     8     GROUP# STATUS
     9 ---------- ----------------
    10          1 INACTIVE
    11          2 INACTIVE
    12          3 CURRENT
    13 
    14 SQL> alter database drop logfile member '/u01/oradata/sunbak/redo01.log';
    15 SQL> alter database drop logfile member '/u01/oradata/sunbak/redo02.log'; 
    16 SQL> alter database drop logfile member '/u01/oradata/sunbak/redo03.log';
    17 
    18 --删除临时文件
    19 
    20 SQL> alter database tempfile '/u01/oradata/sunbak/temp01.dbf' drop;
    21 
    22 Database altered.
    23 
    24 SQL>

       至此,迁移完成。本实验主要参考:《大话 oracle rac》 

  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/polestar/p/3033322.html
Copyright © 2020-2023  润新知