有些时候需要将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/SY5221BK/undo
mkdir -p /u02/database/SY5221BK/temp
mkdir -p /u02/database/SY5221BK/ref_data
mkdir -p /u02/database/SY5221BK/BNR
mkdir -p /u02/database/SY5221BK/BNR/full
mkdir -p /u02/database/SY5221BK/BNR/dump
mkdir -p /u02/database/SY5221BK/dbcreatelogs
oracle@SZDB:/u02/database/SYBO2SZ> ./mkdir_SY5221BK.sh