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 閱讀(180) 評論(0)  編輯  收藏 所屬分類: 數據庫

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

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 贡山| 汉沽区| 柘城县| 弥渡县| 大理市| 横峰县| 林芝县| 西充县| 洛浦县| 襄汾县| 喀喇| 沁阳市| 清新县| 县级市| 沁源县| 苏州市| 东明县| 宜阳县| 门头沟区| 平湖市| 卓资县| 常熟市| 阿合奇县| 中山市| 台南县| 云阳县| 赣榆县| 金堂县| 孟村| 青田县| 桂林市| 阿拉善右旗| 望都县| 仙桃市| 剑川县| 普定县| 平南县| 雷州市| 涪陵区| 钟山县| 遵义县|