zoukankan      html  css  js  c++  java
  • 数据库迁移至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》 

  • 相关阅读:
    9.16动手又动脑
    C#中集合的交集:Intersect问题
    LeetCode Easy: 27. Remove Element
    LeetCode Easy: 26.Remove Duplicates from Sorted Array
    LeetCode Easy: 21. Merge Two Sorted Lists
    LeetCode Easy: 20. Valid Parentheses
    LeetCode Easy: 14. Longest Common Prefix
    LeetCode Easy: 13. Roman to Integer
    LeetCode Easy: Palindrome Number
    DL: 初试 tensorflow
  • 原文地址:https://www.cnblogs.com/polestar/p/3033322.html
Copyright © 2011-2022 走看看