qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          在ORACLE中移動數據庫文件

          在ORACLE中移動數據庫文件在ORACLE中移動數據庫文件

            --ORACLE數據庫由數據文件,控制文件和聯機日志文件三種文件組成。

            --由于磁盤空間的變化,或者基于數據庫磁盤I/O性能的調整等,

            --我們可能會考慮移動數據庫文件。

            --下面以LUNIX平臺為例,分別討論三種數據庫文件的移動方法。

            一.移動數據文件:

            -- 可以用ALTER DATABASE,ALTER TABLESPACE兩種方法移動數據文件。

            1. ALTER DATABASE方法;

            -- 用此方法,可以移動任何表空間的數據文件。

          STEP 1. 下數據庫:
          $ sqlplus /nolog
          SQL> CONNECT INTERNAL;
          SQL> SHUTDOWN;
          SQL> EXIT;
          STEP 2.用操作系統命令移動數據文件:
          -- 將數據文件 'test.ora' 從/ora/oracle/data1目錄移動到/ora/oracle/data2目錄下:
          $ mv /ora/oracle/data1/test.ora /ora/oracle/data2
          STEP 3. Mount數據庫,用ALTER DATABASE命令將數據文件改名:
          $ sqlplus /nolog
          SQL> CONNECT INTERNAL;
          SQL> STARTUP MOUNT;
          SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora';
          STEP 4. 打開數據庫:.
          SQL> ALTER DATABASE OPEN;
          SQL>SELECT NAME,STATUS FROM V$DATAFILE;

            2. ALTER TABLESPACE方法:

            -- 用此方法,要求此數據文件既不屬于SYSTEM表空間,也不屬于含有ACTIVE回滾段或臨時段的表空間。

          STEP1. 將此數據文件所在的表空間OFFLINE:
          $ sqlplus /nolog
          SQL> CONNECT INTERNAL;
          SQL> ALTER TABLESPACE test OFFLINE;
          SQL> EXIT;
          STEP2. 用操作系統命令移動數據文件:
          將數據文件 'test.ora' 從/ora/oracle/
          data1目錄移動到/ora/oracle/data2目錄下:
          $ mv /ora/oracle/data1/test.ora /ora/oracle/data2
          STEP3. 用ALTER TABLESPACE命令改數據文件名:
          $ sqlplus /nolog
          SQL> CONNECT INTERNAL;
          SQL> ALTER TABLESPACE test RENAME DATAFILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora';
          STEP4. 將此數據文件所在的表空間ONLINE:
          SQL> ALTER TABLESPACE test ONLINE;
          SQL> SELECT NAME,STATUS FROM V$DATAFILE;

           二. 移動控制文件:

            -- 控制文件 在 INIT.ORA文件中指定。移動控制文件相對比較簡單,下數據庫,

            -- 編輯INIT.ORA,移動控制文件,重啟動數據庫。

          STEP 1. 下數據庫:
          $ sqlplus /nolog
          SQL> CONNECT INTERNAL;
          SQL> SHUTDOWN;
          SQL> EXIT;

          STEP 2.用操作系統命令 移動控制文件:
          --將控制文件'ctl3orcl.ora' 從/ora/oracle/data1目錄移動到/ora/oracle/data2目錄下:
          $ mv /ora/oracle/data1/ctrlorcl3.ora /ora/oracle/data2

          STEP 3. 編輯INIT.ORA文件:
          INIT.ORA文件的在$ORACLE_HOME/dbs目錄下,
          修改參數 "control_files",其中指定移動后的控制文件: 
          control_files = (/ora/oracle/data1/ctrlorcl1.ora,/ora/oracle/data1/ctrlorcl2.ora,/ora/oracle/data2/ctrlorcl3.ora)

          STEP 4. 重啟動數據庫: 
          $ sqlplus /nolog
          SQL> CONNECT INTERNAL;
          SQL> STARTUP;
          SQL>SELECT name FROM V$CONTROLFILE;
          SQL> EXIT;

            按Oracle原理,啟動過程分為三個步驟nomount/mount/open.

            PHASE0:nomount前,即數據庫完全關閉了.

            此時可以將數據庫control files/data files/redo log files在OS下用mv命令任意移動(實際上,只要未被open的文件都是可以mv的),然后根據各種file location在Oracle中的存放位置,采用不同的方式來告訴Oracle:"偶已將原文件移動到另一個地方了".

            其中初始參數文件中的control_files參數指定了具體的control file的location.所以移動了control file可在參數文件被open前直接改參數值Oracle就明白了.(PFILE/SPFILE的具體使用此處不多累贅).

          PHASE1:nomount階段. 打開了初始參數文件和backupground_dump_dest下的   alert_sid.log和background processes 的trace files.

            PHASE2:mount階段是打開了control file.

            control file中存放的東東如下:

          Database name and identifier
          Time stamp of database creation
          Tablespace names
          Names and locations of data files and redo log files
          Current redo log file sequence number
          Checkpoint information
          Begin and end of undo segments
          Redo log archive information
          Backup information

            所以偶們在PHASE0中所做操作就得在PHASE3真正open這些文件之前,告訴Oracle(因為信息記錄在control file中,所以又得在PHASE2中,control file被open后做),偶們已改了file location.

            于是可用alter database的data file clause或log file clause的rename 命令來更新control file,于是Oracle會在PHASE3時,到新file location去找相應的文件.

            PHASE3:open階段打開所有非offline的data files和redo log files.

            因為文件已打開了.所以此時,只能對已經offline或還可以offline的文件作rename操作.原理也是通過更新control file中的內容來告訴Oracle:File location has been changed.


          posted on 2013-07-31 10:20 順其自然EVO 閱讀(181) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2013年7月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盐山县| 湟源县| 大丰市| 乾安县| 冷水江市| 贵定县| 青州市| 邯郸市| 东源县| 浑源县| 奉节县| 长春市| 荥经县| 玉林市| 固阳县| 菏泽市| 濮阳县| 蓬安县| 宁阳县| 安岳县| 沂源县| 茶陵县| 厦门市| 莲花县| 木兰县| 义乌市| 霍州市| 佛坪县| 广丰县| 上杭县| 景东| 察隅县| 清徐县| 修文县| 嵊州市| 隆昌县| 平顺县| 繁昌县| 定陶县| 寿阳县| 海阳市|