Oracle 10g 表空間物理位置轉移

上週五花了多個小時,專門來明白了下ORACLE表空間轉移的知識,因爲測試站點ORACLE所在的硬盤只剩下十幾M的空間了。因而我將表空間轉移到另一個硬盤,流程以下: sql

  操做環境: 數據庫

  數據庫:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 oracle

  表空間:USERS 測試

  轉移前運用的數據庫文件:C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF spa

  轉移後運用的數據庫文件:D:\DB Data\Oracle\orcl\USERS01.DBF it

  扼要操做步驟: io

  第一步:登錄數據庫 table

  第二步:停止數據庫 file

  第三步:在open方式下啓動數據庫 select

  第四步:將表空間(USERS)脫機

  第五步:手工將表空間所運用的數據庫文件(C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF),

  複製到你要轉移的目錄(D:\DB Data\Oracle\orcl\USERS01.DBF),

  第六步:將表空間與新目錄下的數據庫文件關聯

  第七步:將表空間聯機,提交,OK,完成。

  細緻SQL:

  第一步:

  C:\>sqlplus /nolog

  SQL> conn / as sysdba

  第二步:

  SQL> shutdown immediate

  第三步:

  SQL> startup open

  第四步:

  SQL> alter tablespace eucrmspace offline;

  第五步:

  手工拷貝數據庫文件到你想抵達的目錄下。

  第六步:【操做先後可以用SQL來查詢表空間所運用的數據庫文件的改變狀況:select name from v$datafile;】

  SQL> alter tablespace eucrmspace rename datafile

  'C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF'    to  ' D:\DB Data\Oracle\orcl\USERS01.DBF';

  第七步:

  SQL> alter tablespace eucrmspace online;

  SQL>commit;

  SQL>exit;

  留意:

  1.    轉移表空間時,請確保不要對該表空間執行任何寫操做(如項目順序仍在運轉),不然可以後面報錯

  我測試了下,邊轉移邊對該表空間執行寫操做,結果在執行第六步時,報錯了:

  ERROR 位於第 1 行:

  ORA-01113: 文件 11 需要介質恢復

  ORA-01110: 數據文件 11: 'D:\DB Data\Oracle\orcl\USERS01.DBF '

  2.第五步(複製文件操做),必需是在第四步以後,不然第六步可以會報錯,錯誤信息同上差很少

3.假設第六步報錯了,只好這樣恢復:將現在運用的數據庫文件(D:\DB Data\Oracle\orcl\USERS01.DBF),從新復原成以前所運用的數據庫文件(C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF),即從新執行第5、6、七步,只不過第五步的SQL稍微改下。

  …….

  SQL>rollback;

  SQL> alter tablespace eucrmspace rename datafile

  ' D:\DB Data\Oracle\orcl\USERS01.DBF'    to  'C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF';

  ……

  下面是完壁的操做命令:

  C:\Documents and Settings\XXX>sqlplus /nolog

  SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 11月 15 16:29:14 2010

  Copyright (c) 1982, 2005, Oracle.  All rights reserved.

  SQL> conn / as sysdba

  已銜接。

  SQL> shutdown immediate

  數據庫之前關閉。

  之前卸載數據庫。

  ORACLE 例程之前關閉。

  SQL> startup open

  ORACLE 例程之前啓動。

  Total System Global Area  612368384 bytes

  Fixed Size                  1250428 bytes

  Variable Size              83889028 bytes

  Database Buffers          520093696 bytes

  Redo Buffers                7135232 bytes

  數據庫裝載終了。

  數據庫之前翻開。

  SQL> alter tablespace users offline;

  表空間已修改。

  SQL> select name from v$datafile;

  NAME

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF

  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF

  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF

  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF

  SQL> alter tablespace USERS rename datafile 'C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF' to 'D:\DB Data\Oracle\orcl\USERS01.DBF';

  表空間已修改。

  SQL> select name from v$datafile;

  NAME

  --------------------------------------------------------------------------------

  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF

  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF

  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF

  D:\DB DATA\ORACLE\ORCL\USERS01.DBF

  SQL> alter tablespace users online;

  表空間已修改。

  SQL> commit;

  提交完成。

相關文章
相關標籤/搜索