日期:2014-05-16  浏览次数:20673 次

批量迁移Oracle数据文件,日志文件及控制文件

   有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求。对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移。当然备份恢复也是其中的方式之一。本文主要描述如何使用批量方式来迁移数据文件,日志文件。如需要也可以将整个数据库迁移到新的位置以及重命名数据库。

1、环境及需求
  robin@SZDB:~> cat /etc/issue
  
  Welcome to SUSE Linux Enterprise Server 10 SP3 (x86_64) - Kernel \r (\l).
  
  robin@SZDB:~> sqlplus -v
  
  SQL*Plus: Release 10.2.0.3.0 - Production

  下面的迁移主要是将数据库/u02/database/SYBO2SZ下的所有文件迁移到一个新的目录/u02/database/SY5221BK下面。
  源路径:数据库SYBO2SZ所有的数据文件,日志文件,控制文件全部位于SYBO2SZ下的相应子目录。
  新路径:数据库SYBO2SZ所有的数据文件,日志文件,控制文件全部移动到SY5221BK相应的子目录下。
  
2、当前数据库文件位置(来源于数据字典)  
  sys@SYBO2SZ> @dba_files_all_2.sql
  
  Tablespace Name / File Class  Filename                                                      File Size Auto
  ----------------------------- ------------------------------------------------------- --------------- ----
  GOEX_ACCOUNT_IDX              /u02/database/SYBO2SZ/oradata/SYBO2SZ_account_idx.dbf        16,777,216 YES
  GOEX_ACCOUNT_TBL              /u02/database/SYBO2SZ/oradata/SYBO2SZ_account_tbl.dbf        25,165,824 YES
  GOEX_ARCHIVE_IDX              /u02/database/SYBO2SZ/oradata/SYBO2SZ_archive_idx.dbf        20,971,520 YES
   --    .........                  .........................
  SOE                           /u02/database/SYBO2SZ/oradata/soe.dbf                       934,043,648 YES
  SOEINDEX                      /u02/database/SYBO2SZ/oradata/soeindex.dbf                  713,031,680 YES
  SYSAUX                        /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbf             325,058,560 YES
  SYSTEM                        /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf                524,288,000 YES
  TBST                          /u02/database/SYBO2SZ/oradata/tbst.dbf                       10,485,760 YES
  TEMP                          /u02/database/SYBO2SZ/temp/tempSYBO2SZ.dbf                  432,013,312 YES
  UNDOTBS1                      /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ.dbf               429,916,160 YES
  UNDOTBS2                      /u02/database/SYBO2SZ/undo/undotbsSYBO2SZ2.dbf              314,572,800 YES
  [ ONLINE REDO LOG ]           /u02/database/SYBO2SZ/redolog/log3aSYBO2SZ.log               20,971,520
  [ ONLINE REDO LOG ]           /u02/database/SYBO2SZ/redolog/log3bSYBO2SZ.log               20,971,520
  [ ONLINE REDO LOG ]           /u02/database/SYBO2SZ/redolog/log4aSYBO2SZ.log               20,971,520
  [ ONLINE REDO LOG ]           /u02/database/SYBO2SZ/redolog/log4bSYBO2SZ.log               20,971,520
                                                                                        ---------------
  sum                                                                                     5,107,376,128
  
    41 rows selected.
    
3、创建相应的目录
  oracle@SZDB:/u02/database/SYBO2SZ> more mkdir_SY5221BK.sh 
  #!/bin/sh
  rm -rf /u02/database/SY5221BK/archive
  rm -rf /u02/database/SY5221BK/backup
  rm -rf /u02/database/SY5221BK/bdump
  rm -rf /u02/database/SY5221BK/cdump
  rm -rf /u02/database/SY5221BK/udump
  rm -rf /u02/database/SY5221BK/controlf
  rm -rf /u02/database/SY5221BK/oradata
  rm -rf /u02/database/SY5221BK/redolog
  rm -rf /u02/database/SY5221BK/undo
  rm -rf /u02/database/SY5221BK/temp
  rm -rf /u02/database/SY5221BK/ref_data
  rm -rf /u02/database/SY5221BK/BNR
  rm -rf /u02/database/SY5221BK/BNR/full
  rm -rf /u02/database/SY5221BK/BNR/dump
  rm -rf /u02/database/SY5221BK/dbcreatelogs 
  
  mkdir -p /u02/database/SY5221BK/flash_recovery_area 
  mkdir -p /u02/database/SY5221BK
  mkdir -p /u02/database/SY5221BK/archive
  mkdir -p /u02/database/SY5221BK/backup
  mkdir -p /u02/database/SY5221BK/bdump
  mkdir -p /u02/database/SY5221BK/cdump
  mkdir -p /u02/database/SY5221BK/udump
  mkdir -p /u02/database/SY5221BK/controlf
  mkdir -p /u02/database/SY5221BK/oradata
  mkdir -p /u02/database/SY5221BK/redolog
  mkdir -p /u02/database/SY52