• Oracle 11G RAC For ASM 利用RMAN COPY进行存储迁移


    转载请注明出处


    一、需求背景

    客户数据库存储空间接近存满,需购置一台新的存储,进行数据迁移,客户允许少量停机时间。
    

    二、实施方法讨论

    • 利用ASM rebalance 进行迁移
      可以实现0宕机进行迁移,过程简单,但迁移时间周期太长。

    • 利用rman copy进行迁移
      需要少量停机时间,迁移时间短,过程复杂。

    结合客户的需求,最终采用的是rman copy进行存储迁移。

    三、实施项目步骤

    • 添加新ASM磁盘
    • 备份
    • 数据迁移
    • 删除原存储

    3.1 添加新ASM盘

    3.1.1 查询原ASM磁盘信息

    运行以下sql命令

    SET PAGES 1000
    SET LINES 1000
    COL PATH FOR A30
    SELECT A.GROUP_NUMBER,
           B.NAME ASM_NAME,
           A.NAME DISK_NAME,
           A.FAILGROUP,
           A.PATH,
           B.TYPE,
           A.TOTAL_MB,
           A.FREE_MB
      FROM V$ASM_DISK A, V$ASM_DISKGROUP B
     WHERE A.GROUP_NUMBER = B.GROUP_NUMBER;
    

    3.1.2 划分磁盘

    存储工程师安照需求划分存储,并采用多路径软件。
    
    略 
    

    3.1.3 绑定ASM 盘

    根据不同的操作系统,使用不同的方法进行绑定。
    
    绑定过程略
    

    3.2 备份

    备份包括ocr、votedisk
    

    3.2.1 备份ocr与votedisk

     # ocrconfig -manualbackup    --手工备份 (需root用户)
    
     # ocrconfig -showbackup      --查看备份
    
     # ocrconfig -restore <filename>  --恢复ocr
    

    11G 中只需只需上面的命令,就能同时备份ocr与vote

    3.3 数据迁移

    3.3.1 创建ASM Diskgroup

    利用asmca命令创建以下diskgroup:
    ocrdg                                        --存放ocr与vote
    newdata                                      --存放数据文件
    

    3.3.2 迁移ocr,vote

    添加ocr信息至ocrdg上(root用户)
    # ocrconfig -add  +OCRDG
    
    检查ocr
    # ocrcheck 
    
    查看votedisk信息(grid用户)
    $ crsctl query css votedisk
    
    迁移votedisk(grid用户)
    $ crsctl replace votedisk +OCRDG
    

    3.3.3 创建asm实例spfile至ocrdg上

    SQL> create pfile='/home/grid/asmspfile.ora' from spfile;
    SQL> create spfile='+OCRDG' from pfile='/home/grid/asmspfile.ora';

    3.3.4 迁移数据库文件至新磁盘上

    3.3.4.1 创建数据库spfile至newdata上

    SQL> create pfile='/home/oracle/orcl_pfile.ora' from spfile='+DATADG/orcl/spfileorcl.ora';
    SQL> create spfile='+NEWDATA' from pfile='/home/oracle/orcl_pfile.ora';

    3.3.4.2 查询数据文件信息

     SQL> select ''''||file_name||'''' from dba_data_files; 

    3.3.4.3 利用rman copy备份数据库

    $ vi rman_copy.sh
    
    
    ----------
    
    
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
    export ORACLE_SID=orcl1
    export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
    rman target / nocatalog log=/tmp/rman_copy.log<<EOF
    run{
    allocate channel c1 type disk;
    allocate channel c2 type disk;
    copy 
    datafile '+DATADG/orcl/datafile/system.259.874699969'   to '+NEWDATA',
    datafile '+DATADG/orcl/datafile/sysaux.260.874699995'   to '+NEWDATA',
    datafile '+DATADG/orcl/datafile/undotbs1.261.874700013' to '+NEWDATA',
    datafile '+DATADG/orcl/datafile/undotbs2.263.874700041' to '+NEWDATA',
    datafile '+DATADG/orcl/datafile/users.264.874700049'    to '+NEWDATA';
    }
    EOF
    
    rman target / nocatalog log=/tmp/rman_copy.log append <<EOF 
    copy current controlfile to '+NEWDATA';
    EOF
    
    --赋予执行权限
    $ chmod +x rman_copy.sh     

    3.3.4.4 拷贝控制文件,并确认控制文件新的存放位置

    ASMCD> cd +newdata/orcl/CONTROLFILE
    ASMCMD> ls 
    Backup.261.960651757
    ASMCMD> cp Backup.261.960651757 control01.dbf
    ASMCMD> cp Backup.261.960651757 control02.dbf

    3.3.4.5 修改spfile参数

    #control_files:
    SQL> alter system set control_files='+newdata/orcl/CONTROLFILE/control01.dbf','+newdata/orcl/CONTROLFILE/control02.dbf' scope=spfile;
    
    #db_create_file_dest
    SQL> alter system set db_create_file_dest='+NEWDATA' SCOPE=SPFILE;
    
    #archive:
    SQL> alter system set log_archive_dest_1='LOCATION=+NEWDATA'
    

    3.3.4.6 利用集群命令,更改数据库状态(oracle用户)

    停止数据库
    $ srvctl stop database -d orcl
    
    启动至mount状态
    $ srvctl start database -d orcl -o mount
    
    SQL> show parameter control_files
    

    3.3.4.7 rename数据库

    数据文件
    SQL> alter database rename file '+DATADG/orcl/datafile/sysaux.260.874699995' to '+newdata/orcl/datafile/SYSAUX.258.960651703';
    SQL> alter database rename file '+DATADG/orcl/datafile/system.259.874699969' to '+newdata/orcl/datafile/SYSTEM.256.960651621';
    SQL> alter database rename file '+DATADG/orcl/datafile/undotbs1.261.874700013' to '+newdata/orcl/datafile/UNDOTBS1.257.960651621';
    SQL> alter database rename file '+DATADG/orcl/datafile/undotbs2.263.874700041' to '+newdata/orcl/datafile/UNDOTBS2.259.960651707';
    SQL> alter database rename file '+DATADG/orcl/datafile/users.264.874700049' to '+newdata/orcl/datafile/USERS.260.960651735';
    
    temp文件
    SQL> alter database rename file '+DATADG/orcl/tempfile/temp.262.874700019' to '+newdata';
    

    3.3.4.8 recover 数据库

    $ rman target /
    RMAN> recover database;
    

    3.3.4.9 以open resetlogs方式打开数据库

    SQL> alter database open resetlogs;

    3.3.4.10 修改redo日志

    --增加redo日志组
    alter database add logfile thread 1 group 5 '+Newdata' size 50m;
    alter database add logfile thread 1 group 6 '+Newdata' size 50m;
    alter database add logfile thread 2 group 7 '+Newdata' size 50m;
    alter database add logfile thread 2 group 8 '+Newdata' size 50m;
    
    --删除redo日志组
    select GROUP#,status from v$log;
    
    当status状态为inactive和unused状态时可以删除。
    
    alter database drop logfile group 4;
    alter database drop logfile group 2;
    alter database drop logfile group 1;
    alter database drop logfile group 3;
    

    3.3.4.11 集群修改信息

    $ srvctl modify database -d orcl -n orcl -p +NEWDATA/orcl/spfileorcl.ora
    
    $ srvctl modify database -d orcl -n orcl -a NEWDATA

    3.3.4.12 以集群方式启动数据库

    $ srvctl stop database -d orcl
    $ srvctl start database -d orcl
    

    3.4 删除原存储

    --删除原OCR,vote磁盘组
    # ocrconfig -delete +CRSDG
    # ocrcheck
    确认信息
    # crsctl query css votedisk
    
    --dismount disk(每个节点)
    $ sqlplus / as sysasm
    SQL> ALTER DISKGROUP CRSDG DISMOUNT; 
    SQL> alter diskgroup DATADG dismount;
    
    --drop disk(任一节点执行)
    $ sqlplus / as sysasm
    SQL> drop diskgroup CRSDG force including contents;
    SQL> drop diskgroup DATADG force including contents;
    
    --delete resource(任一节点执行)
    $ crsctl delete resource ora.NEWOCR.dg
    $ crsctl delete resource ora.DATADG.dg
    
  • 相关阅读:
    字符串比较
    LOOP AT SCREEN
    Trunc的日期用法
    【ABAP】SELECT-ENDSELECT尽量不要用
    【转】Abap For all entries in 使用
    01如何创建sequence:
    abap --MOVE-CORRESPONDING
    Abap 常用变量
    StringBuffer的用法
    Spring事务的传播方式
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514725.html
Copyright © 2020-2023  润新知