qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          批量遷移Oracle數(shù)據(jù)文件,日志文件及控制文件

           有些時(shí)候需要將Oracle的多個(gè)數(shù)據(jù)文件以及日志文件重定位或者遷移到新的分區(qū)或新的位置,比如磁盤(pán)空間不足,或因?yàn)樘厥庑枨?。?duì)于這種情形可以采取批量遷移的方式將多個(gè)數(shù)據(jù)文件或者日志文件實(shí)現(xiàn)一次性遷移。當(dāng)然備份恢復(fù)也是其中的方式之一。本文主要描述如何使用批量方式來(lái)遷移數(shù)據(jù)文件,日志文件。如需要也可以將整個(gè)數(shù)據(jù)庫(kù)遷移到新的位置以及重命名數(shù)據(jù)庫(kù)。

            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ù)庫(kù)/u02/database/SYBO2SZ下的所有文件遷移到一個(gè)新的目錄/u02/database/SY5221BK下面。

            源路徑:數(shù)據(jù)庫(kù)SYBO2SZ所有的數(shù)據(jù)文件,日志文件,控制文件全部位于SYBO2SZ下的相應(yīng)子目錄。

            新路徑:數(shù)據(jù)庫(kù)SYBO2SZ所有的數(shù)據(jù)文件,日志文件,控制文件全部移動(dòng)到SY5221BK相應(yīng)的子目錄下。

            2、當(dāng)前數(shù)據(jù)庫(kù)文件位置(來(lái)源于數(shù)據(jù)字典)

          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、創(chuàng)建相應(yīng)的目錄

          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



           4、實(shí)施遷移

          sys@SYBO2SZ> startup mount force;   --->切換數(shù)據(jù)庫(kù)到mount狀態(tài)
          ORACLE instance started.

          Database mounted.
          sys@SYBO2SZ> @/users/robin/dba_scripts/custom/sql/transfer_db_files -->調(diào)用腳本進(jìn)行數(shù)據(jù)及日志文件的遷移

          Step 1, Coping file to destination from source
          ============================================

          Step 2, updating files to control file
          ============================================

          sys@SYBO2SZ> alter database open;   -->切換數(shù)據(jù)庫(kù)到open狀態(tài)

          Database altered.

          sys@SYBO2SZ> @dba_files_all_2.sql   -->驗(yàn)證切換結(jié)果

          Tablespace Name / File Class  Filename                                                     File Size Auto
          ----------------------------- ---------------------------------------------------------------------- ----
          GOEX_ACCOUNT_IDX              /u02/database/SY5221BK/oradata/SY5221BK_account_idx.dbf     16,777,216 YES
          --..........                        .................
          TEMP                          /u02/database/SY5221BK/temp/tempSY5221BK.dbf               432,013,312 YES
          UNDOTBS1                      /u02/database/SY5221BK/undo/undotbsSY5221BK.dbf            429,916,160 YES
          UNDOTBS2                      /u02/database/SY5221BK/undo/undotbsSY5221BK2.dbf           314,572,800 YES
          [ ONLINE REDO LOG ]           /u02/database/SY5221BK/redolog/log3aSY5221BK.log            20,971,520
          [ ONLINE REDO LOG ]           /u02/database/SY5221BK/redolog/log3bSY5221BK.log            20,971,520
          [ ONLINE REDO LOG ]           /u02/database/SY5221BK/redolog/log4aSY5221BK.log            20,971,520
          [ ONLINE REDO LOG ]           /u02/database/SY5221BK/redolog/log4bSY5221BK.log            20,971,520
          -------------
          sum                                                                                    5,107,376,128

          41 rows selected.

          --如果僅僅是遷移數(shù)據(jù)文件以及日志文件則上述步驟完成即可
          --如果需要修改相關(guān)的參數(shù)文件以及遷移控制文件則繼續(xù)下面的步驟
          --由于控制文件的在mount狀態(tài)下被校驗(yàn),因此我們?cè)趎omount狀態(tài)下來(lái)處理

          sys@SYBO2SZ> shutdown immediate;

          sys@SYBO2SZ> startup nomount;

          -->修改參數(shù)文件之前先備份spfile
          sys@SYBO2SZ> create pfile='/users/oracle/OraHome10g/dbs/initSYBO2SZ_bak.ora' from spfile;

          File created.

          -->下面對(duì)相關(guān)的參數(shù)文件的路徑進(jìn)行修改,如果不需要修改參數(shù),則跳過(guò)下面的步驟
          sys@SYBO2SZ> show parameter dump

          NAME                                 TYPE        VALUE
          ------------------------------------ ----------- ------------------------------
          background_core_dump                 string      partial
          background_dump_dest                 string      /u02/database/SYBO2SZ/bdump
          core_dump_dest                       string      /u02/database/SYBO2SZ/cdump
          max_dump_file_size                   string      UNLIMITED
          shadow_core_dump                     string      partial
          user_dump_dest                       string      /u02/database/SYBO2SZ/udump

          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
          ------------------------------------ ----------- ------------------------------
          db_recovery_file_dest                string      /u02/database/SYBO2SZ/flash_re
          covery_area
          db_recovery_file_dest_size           big integer 1G

          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
          ------------------------------------ ----------- ------------------------------
          log_archive_dest_1                   string      LOCATION=/u02/database/SYBO2SZ
          /archive/
          log_archive_dest_10                  string
          sys@SYBO2SZ> alter system set log_archive_dest_1='LOCATION=/u02/database/SY5221BK/archive' scope=both;

          System altered.

          sys@SYBO2SZ> show parameter UTL_FILE_DIR

          NAME                                 TYPE        VALUE
          ------------------------------------ ----------- ------------------------------
          utl_file_dir                         string      /u02/database/SYBO2SZ/udump

          sys@SYBO2SZ> alter system set UTL_FILE_DIR='/u02/database/SY5221BK/udump' scope=both;
          alter system set UTL_FILE_DIR='/u02/database/SY5221BK/udump' scope=both
          *
          ERROR at line 1:
          ORA-02095: specified initialization parameter cannot be modified  -->該參數(shù)不能修改內(nèi)存值


          sys@SYBO2SZ> alter system set UTL_FILE_DIR='/u02/database/SY5221BK/udump' scope=spfile;

          System altered.

          -->下面對(duì)控制文件位置進(jìn)行修改
          sys@SYBO2SZ> show parameter control_f

          NAME                                 TYPE        VALUE
          ------------------------------------ ----------- ------------------------------
          control_file_record_keep_time        integer     7
          control_files                        string      /u02/database/SYBO2SZ/controlf
          /cntl1SYBO2SZ.ctl, /u02/databa
          se/SYBO2SZ/controlf/cntl2SYBO2
          SZ.ctl, /u02/database/SYBO2SZ/
          controlf/cntl3SYBO2SZ.ctl

          -->將控制文件復(fù)制到新位置
          sys@SYBO2SZ> ho cp /u02/database/SYBO2SZ/controlf/cntl1SYBO2SZ.ctl /u02/database/SY5221BK/controlf/cntl1SY5221BK.ctl

          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
          -->Blog   : http://blog.csdn.net/robinson_0612

          -->通過(guò)修改control_files參數(shù)來(lái)修改控制文件位置
          sys@SYBO2SZ> alter system set control_files='/u02/database/SY5221BK/controlf/cntl1SY5221BK.ctl',
          2  '/u02/database/SY5221BK/controlf/cntl2SY5221BK.ctl','/u02/database/SY5221BK/controlf/cntl3SY5221BK.ctl'
          3  scope=spfile;

          System altered.

          sys@SYBO2SZ> shutdown immediate;

          sys@SYBO2SZ> startup mount;

          SQL> show parameter control_f

          NAME                                 TYPE        VALUE
          ------------------------------------ ----------- ------------------------------
          control_file_record_keep_time        integer     7
          control_files                        string      /u02/database/SY5221BK/control
          f/cntl1SY5221BK.ctl, /u02/data
          base/SY5221BK/controlf/cntl2SY
          5221BK.ctl, /u02/database/SY52
          21BK/controlf/cntl3SY5221BK.ct
          l

          sys@SYBO2SZ> show parameter dump
          background_core_dump                 string      partial
          background_dump_dest                 string      /u02/database/SY5221BK/bdump
          core_dump_dest                       string      /u02/database/SY5221BK/cdump
          max_dump_file_size                   string      UNLIMITED
          shadow_core_dump                     string      partial
          user_dump_dest                       string      /u02/database/SY5221BK/udump

          sys@SYBO2SZ> alter database open;

          Database altered.


           5、遷移腳本

          sys@SYBO2SZ> ho more /users/robin/dba_scripts/custom/sql/transfer_db_files.sql
          Prompt
          Prompt Step 1, Coping file to destination from source
          Prompt ============================================
          Prompt
          set linesize 200
          set heading off verify off feedback off termout off pagesize 999
          define src_dir='SYBO2SZ'
          define tar_dir='SY5221BK'
          spool /tmp/cp_files.sql
          SELECT 'ho cp ' || name || ' ' || REPLACE (name, '&src_dir', '&tar_dir')
          FROM v$datafile
          UNION ALL
          SELECT 'ho cp ' || name || ' ' || REPLACE (name, '&src_dir', '&tar_dir')
          FROM v$tempfile
          UNION ALL
          SELECT 'ho cp ' || MEMBER || ' ' || REPLACE (MEMBER, '&src_dir', '&tar_dir') FROM v$logfile;
          spool off;

          @/tmp/cp_files.sql

          set termout on
          Prompt
          Prompt  Step 2, updating files to control file
          Prompt ============================================
          Prompt
          set termout off
          spool /tmp/update_cntl.sql
          SELECT    'alter database  rename file '''
          || name
          || '''  to '''
          || REPLACE (name, '&src_dir', '&tar_dir')
          || ''''
          || ';'
          FROM v$datafile
          UNION ALL
          SELECT    'alter database rename file '''
          || name
          || '''  to '''
          || REPLACE (name, '&src_dir', '&tar_dir')
          || ''''
          || ';'
          FROM v$tempfile
          UNION ALL
          SELECT    'alter database rename file '''
          || MEMBER
          || ''' to '''
          || REPLACE (MEMBER, '&src_dir', '&tar_dir')
          || ''''
          || ';'
          FROM v$logfile;
          spool off;
          set termout on;
          @/tmp/update_cntl.sql
          set heading on verify on feedback on termout on

            6、后記

            a、數(shù)據(jù)遷移前建議先備份數(shù)據(jù)庫(kù)

            b、我們?cè)谶w移中使用了復(fù)制(cp)方式,實(shí)際上可以直接使用移動(dòng)方式(mv)

            c、需要理解數(shù)據(jù)庫(kù)的啟動(dòng)的幾個(gè)階段。即nomount狀態(tài)時(shí)不加載控制文件,mount狀態(tài)時(shí)不加載數(shù)據(jù)文件及日志文件

            d、對(duì)于數(shù)據(jù)庫(kù)啟動(dòng)階段的深刻理解,有助于弄清楚什么狀態(tài)下我們能做什么,不能做什么

            e、對(duì)于控制文件位置以及參數(shù)中相關(guān)dump文件位置可以直接通過(guò)編輯pfile文件來(lái)完成。上例使用的是修改spfile文件

            f、遷移腳本可以根據(jù)需要進(jìn)行相應(yīng)的修改,注意我們定義了src_dir與tar_dir

            g、可將數(shù)據(jù)庫(kù)源文件夾重命名,重啟數(shù)據(jù)庫(kù)(open),open會(huì)校驗(yàn)所有文件,以防止遷移中的部分文件丟失,無(wú)誤后可刪除源文件夾

            h、如果需要修改數(shù)據(jù)庫(kù)名,則可以通過(guò)nid來(lái)完成,相當(dāng)于生成了一個(gè)新的數(shù)據(jù)庫(kù)

          posted on 2013-06-13 10:27 順其自然EVO 閱讀(385) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫(kù) 、DB2

          <2013年6月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 三台县| 师宗县| 马鞍山市| 韩城市| 梁河县| 沐川县| 民和| 九江市| 山西省| 海丰县| 思茅市| 阿荣旗| 安龙县| 皮山县| 兴城市| 陆丰市| 天津市| 长寿区| 屯门区| 科尔| 葵青区| 五家渠市| 石河子市| 息烽县| 什邡市| 巴南区| 普宁市| 嘉定区| 鸡东县| 黄骅市| 甘泉县| 射阳县| 平遥县| 敦煌市| 乐至县| 额尔古纳市| 平罗县| 炎陵县| 衡东县| 安化县| 红原县|