批量遷移Oracle數(shù)據(jù)文件,日志文件及控制文件
有些時候需要將Oracle的多個數(shù)據(jù)文件以及日志文件重定位或者遷移到新的分區(qū)或新的位置,比如磁盤空間不足,或因為特殊需求。對于這種情形可以采取批量遷移的方式將多個數(shù)據(jù)文件或者日志文件實現(xiàn)一次性遷移。當(dāng)然備份恢復(fù)也是其中的方式之一。本文主要描述如何使用批量方式來遷移數(shù)據(jù)文件,日志文件。如需要也可以將整個數(shù)據(jù)庫遷移到新的位置以及重命名數(shù)據(jù)庫。
1、環(huán)境及需求
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 |
下面的遷移主要是將數(shù)據(jù)庫/u02/database/SYBO2SZ下的所有文件遷移到一個新的目錄/u02/database/SY5221BK下面。
源路徑:數(shù)據(jù)庫SYBO2SZ所有的數(shù)據(jù)文件,日志文件,控制文件全部位于SYBO2SZ下的相應(yīng)子目錄。
新路徑:數(shù)據(jù)庫SYBO2SZ所有的數(shù)據(jù)文件,日志文件,控制文件全部移動到SY5221BK相應(yīng)的子目錄下。
2、當(dāng)前數(shù)據(jù)庫文件位置(來源于數(shù)據(jù)字典)
sys@SYBO2SZ> @dba_files_all_2.sql Tablespace Name / File Class Filename File Size Auto 41 rows selected. |
3、創(chuàng)建相應(yīng)的目錄
oracle@SZDB:/u02/database/SYBO2SZ> more mkdir_SY5221BK.sh mkdir -p /u02/database/SY5221BK/flash_recovery_area oracle@SZDB:/u02/database/SYBO2SZ> ./mkdir_SY5221BK.sh |
4、實施遷移
sys@SYBO2SZ> startup mount force; --->切換數(shù)據(jù)庫到mount狀態(tài) Database mounted. Step 1, Coping file to destination from source Step 2, updating files to control file sys@SYBO2SZ> alter database open; -->切換數(shù)據(jù)庫到open狀態(tài) Database altered. sys@SYBO2SZ> @dba_files_all_2.sql -->驗證切換結(jié)果 Tablespace Name / File Class Filename File Size Auto 41 rows selected. --如果僅僅是遷移數(shù)據(jù)文件以及日志文件則上述步驟完成即可 sys@SYBO2SZ> shutdown immediate; sys@SYBO2SZ> startup nomount; -->修改參數(shù)文件之前先備份spfile File created. -->下面對相關(guān)的參數(shù)文件的路徑進(jìn)行修改,如果不需要修改參數(shù),則跳過下面的步驟 NAME TYPE VALUE sys@SYBO2SZ> alter system set background_dump_dest='/u02/database/SY5221BK/bdump' scope=both sid='*'; System altered. sys@SYBO2SZ> alter system set core_dump_dest='/u02/database/SY5221BK/cdump' scope=both sid='*'; System altered. sys@SYBO2SZ> alter system set user_dump_dest='/u02/database/SY5221BK/udump' scope=both sid='*'; System altered. sys@SYBO2SZ> show parameter db_recovery_file_dest NAME TYPE VALUE sys@SYBO2SZ> alter system set db_recovery_file_dest='/u02/database/SY5221BK/flash_recovery_area' scope=both; System altered. sys@SYBO2SZ> show parameter LOG_ARCHIVE_DEST_1 NAME TYPE VALUE System altered. sys@SYBO2SZ> show parameter UTL_FILE_DIR NAME TYPE VALUE sys@SYBO2SZ> alter system set UTL_FILE_DIR='/u02/database/SY5221BK/udump' scope=both;
System altered. -->下面對控制文件位置進(jìn)行修改 NAME TYPE VALUE -->將控制文件復(fù)制到新位置 sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/controlf/cntl1SYBO2SZ.ctl /u02/database/SY5221BK/controlf/cntl2SY5221BK.ctl sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/controlf/cntl1SYBO2SZ.ctl /u02/database/SY5221BK/controlf/cntl3SY5221BK.ctl -->Author : Robinson Cheng -->通過修改control_files參數(shù)來修改控制文件位置 System altered. sys@SYBO2SZ> shutdown immediate; sys@SYBO2SZ> startup mount; SQL> show parameter control_f NAME TYPE VALUE sys@SYBO2SZ> show parameter dump sys@SYBO2SZ> alter database open; Database altered. |
5、遷移腳本
sys@SYBO2SZ> ho more /users/robin/dba_scripts/custom/sql/transfer_db_files.sql @/tmp/cp_files.sql set termout on |
6、后記
a、數(shù)據(jù)遷移前建議先備份數(shù)據(jù)庫
b、我們在遷移中使用了復(fù)制(cp)方式,實際上可以直接使用移動方式(mv)
c、需要理解數(shù)據(jù)庫的啟動的幾個階段。即nomount狀態(tài)時不加載控制文件,mount狀態(tài)時不加載數(shù)據(jù)文件及日志文件
d、對于數(shù)據(jù)庫啟動階段的深刻理解,有助于弄清楚什么狀態(tài)下我們能做什么,不能做什么
e、對于控制文件位置以及參數(shù)中相關(guān)dump文件位置可以直接通過編輯pfile文件來完成。上例使用的是修改spfile文件
f、遷移腳本可以根據(jù)需要進(jìn)行相應(yīng)的修改,注意我們定義了src_dir與tar_dir
g、可將數(shù)據(jù)庫源文件夾重命名,重啟數(shù)據(jù)庫(open),open會校驗所有文件,以防止遷移中的部分文件丟失,無誤后可刪除源文件夾
h、如果需要修改數(shù)據(jù)庫名,則可以通過nid來完成,相當(dāng)于生成了一個新的數(shù)據(jù)庫
posted on 2013-06-13 10:27 順其自然EVO 閱讀(381) 評論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫 、DB2