Chinaunix首页 | 论坛 | 博客
  • 博客访问: 338637
  • 博文数量: 282
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3260
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-26 14:38
文章分类

全部博文(282)

文章存档

2011年(1)

2008年(281)

我的朋友
最近访客

分类: 服务器与存储

2008-07-28 20:45:34

     由于数据库数据量大(1TB左右),数据库采用的是裸设备。而且原有的存储无法扩容,数据库正常运行必须将数据文件必须迁移至新的存储设备上(主机不变)。
 
1.新建RMAN恢复目录数据库(实例=rman).
    第一步,在目录数据库中创建恢复目录所用表空间:
     create tablespace rman_tar datafile '/oracle/oradata/rman/rman_tar.dbf' size 20M;

    第二步,在目录数据库中创建RMAN 用户并授权:
     create user rman identified by rman default tablespace rman_tar;
    grant recovery_catalog_owner to rman;
    grant connect to rman;
    grant resource to rman;

    第三步,在目录数据库中创建恢复目录
    $rman catalog rman/rman
    如果未安装恢复目录 (执行)
    create catalog tablespace rman_tar;
2.注册目标数据库
   第一步:启动恢复管理器,并且连接目标数据库:
   $rman target catalog    ---目标数据库需要有dba权限的用户
   第二步,注册数据库:
   RMAN> register database;

3.对目标数据库进行备份
   /*在非归档模式下备份*/
   数据库状态:
        恢复目录: 打开
        目标数据库:例程启动或者数据库加载
    恢复目录数据库需要打开,目标数据库必须启动(或者加载)。因为目标数据库不在归档模式下,
所以当进行备份恢复操作的时候数据库无法打开。不可以将表空间置于热备份模式上进行等同于文件系统级的拷贝,
如果在非归档模式,数据库打开的状态下不能进行数据文件的备份。 
                                                                   ---记录备份时所有的数据文件名和对应的数据文件编号
  RMAN> run {
     3> allocate channel dev1 type disk;
     4> backup
     5>   full
     6>   tag full_db_backup
     7>   format '/oracle/backups/fullbackup'
     8>   (database);
     9> release channel dev1;
     10> }
 
4.建立空实例(实例名为aux).
   第一步:构建辅助数据库目录结构
   mkdir -p $ORACLE_BASE/oradata/aux
   mkdir $ORACLE_BASE/admin/aux
   cd  $ORACLE_BASE/admin/aux
   mkdir pfile bdump udump cdump
   第二步:环境变量的设置
     export ORACLE_SID=aux
   第三步:密码,参数,控制文件的建立
   1. $ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapwaux password=orcl
   2.cp $ORACLE_HOME/dbs/init.ora $ORACLE_BASE/admin/aux/pfile/
    
     db_block_size =
     DB_NAME=AUX
     compatible = 9.2.0.0                     /* should be the same as the target
     CONTROL_FILES=(/oracle/oradata/aux/control01.ctl,
                    /oracle/oradata/aux/control02.ctl)
     #DB_FILE_NAME_CONVERT=('/oracle/oradata/aux/','/oracle/oradata/aux/')
     #LOG_FILE_NAME_CONVERT=('/oracle/oradata/aux/redo','/oracle/oradata/aux/redo')
   3.启动aux实例
     SQL>startup nomount pfile="/oracle/admin/aux/pfile/init.ora"
   4.启动RMAN连接目标数据库,目录数据库,辅助数据库 (环境变量ORACLE_SID必须是辅助数据库名)
     RMAN> CONNECT TARGET ;   
     RMAN> CONNECT CATALOG ;
     RMAN> CONNECT AUXILIARY ;
     RMAN> CONFIGURE CHANNEL DEVICE TYPE disk CLEAR;  (清除以前channel的配置)
     RMAN> CONFIGURE DEFAULT DEVICE TYPE TO disk;
     RMAN> CONFIGURE DEVICE TYPE disk PARALLELISM 3;
     RMAN> RUN
{
  # the DUPLICATE command uses an automatic disk channel
  SET NEWNAME FOR DATAFILE 1 TO '/oracle/oradata/aux/system01.dbf';
  SET NEWNAME FOR DATAFILE 2 TO '/oracle/oradata/aux/undotbs01.dbf';
  SET NEWNAME FOR DATAFILE 3 TO '/oracle/oradata/aux/index01.dbf';
  SET NEWNAME FOR DATAFILE 4 TO '/oracle/oradata/aux/tools01.dbf';
  SET NEWNAME FOR DATAFILE 5 TO '/oracle/oradata/aux/users01.dbf';
  SET NEWNAME FOR DATAFILE 6 TO '/dev/rryxx';
  SET NEWNAME FOR DATAFILE 7 TO '/dev/rdz';
  SET NEWNAME FOR DATAFILE 8 TO '/dev/rhx';
  SET NEWNAME FOR DATAFILE 9 TO '/dev/rsf';
  SET NEWNAME FOR DATAFILE 10 TO '/dev/rpr';
  SET NEWNAME FOR DATAFILE 11 TO '/dev/rpic';
  SET NEWNAME FOR DATAFILE 12 TO '/dev/rsys';
  SET NEWNAME FOR DATAFILE 13 TO '/dev/ridx';
  DUPLICATE TARGET DATABASE TO AUX
    SKIP TABLESPACE indx
    LOGFILE
      GROUP 1 ('/oracle/oradata/aux/redo01a.log','/oracle/oradata/aux/redo01b.log') SIZE 10M REUSE,
      GROUP 2 ('/oracle/oradata/aux/redo02a.log','/oracle/oradata/aux/redo02b.log') SIZE 10M REUSE;
}
 
提示成功,数据迁移完成。
阅读(1128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~