oracle中如何移動控制文件,數據文件,日誌文件

 

oracle中如何移動控制文件,數據文件,日誌文件

 

oracle9i/10G-xG中移動控制文件,數據文件,日誌文件

ORACLE數據庫由數據文件,控制文件和聯機日誌文件三種文件組成。
windows環境中用: host copy 或 host move 其它均相同。
以下是unix或linux環境中,

一.移動數據文件:

ALTER TABLESPACE方法(聯機狀態):
用此方法,要求此數據文件既不屬於SYSTEM表空間,也不屬於含有ACTIVE回滾段或臨時段的表空間。
$ sqlplus '/as sysdba'
#把需要移動的數據文件對應的表空間offline
SQL> alter tablespace ipas_acct_data offline
#把數據文件cp到想要放的目錄下。
SQL> !mv /opt/oracle/wacosdata/ipas_acct_data001.dbf /opt/oracle/nms/oradata/ipas_acct_data001.dbf
#修改表空間中數據庫文件的位置。
SQL> alter tablespace ipas_acct_data rename datafile '/opt/oracle/wacosdata/ipas_acct_data001.dbf' to '/opt/oracle/nms/oradata/ipas_acct_data001.dbf'
#把表空間online。
SQL> alter tablespace ipas_acct_data online
#查看修改結果。
SQL> select file_name from dba_data_files where tablespace_name = 'IPAS_ACCT_DATA';

ALTER DATABASE方法(脫機狀態):
用此方法,可以移動任何表空間的數據文件。
$ sqlplus '/as sysdba'
SQL> shutdown immediate
SQL> !mv /opt/oracle/oradata/wacos002.dbf /ora10g/oradata/wacos002.dbf
SQL> startup mount
SQL> alter database rename file '/opt/oracle/oradata/wacos002.dbf' to '/ora10g/oradata/wacos002.dbf';
SQL> alter database open;
SQL> set head off
SQL> SELECT file_name from dba_data_files where tablespace_name = 'WACOS';

二. 移動控制文件:

$ sqlplus '/as sysdba'
#我是用的spfile啓動的,spfile文件不能修改,所以要做這一步。
SQL> create pfile from spfile
#關閉數據庫。
SQL> shutdown immediate
#cp控制文件到目標位置。
SQL>cp /opt/oracle/oradata/control* /opt/oracle/oratest/
修改$ORACLE_HOME/dbs/init$ORACLE_SID.ora 文件中的控制文件的位置。
#啓動數據庫指定參數文件。
SQL> startup pfile='/opt/oracle/product/9.2.0.4/dbs/init$ORACLE_SID.ora'
#下次啓動數據庫是直接就可以用startup啓動了。
SQL> create spfile from pfile;

三. 移動重做日誌文件:

$ sqlplus '/as sysdba'
#關閉數據庫。
SQL> shutdown immediate
#cp日誌文件到目標位置。
SQL> !cp /opt/oracle/oradata/redo* /opt/oracle/oratest/
#讓數據庫以mount模式啓動。
SQL>startup mount;
#修改數據庫中日誌文件的位置。
SQL> alter database rename file '/opt/oracle/oradata/redo01.log' to '/opt/oracle/oratest/redo01.log'
SQL> alter database rename file '/opt/oracle/oradata/redo02.log' to '/opt/oracle/oratest/redo02.log'
SQL> alter database rename file '/opt/oracle/oradata/redo03.log' to '/opt/oracle/oratest/redo03.log'
#修改數據庫的狀態。
SQL> alter database open;
#查看修改結果。
SQL> select * from v$logfile;

 

====================================================================================
注意:TEMP數據文件不能移動,只能通過重建臨時表空間來重建,方法如下:
尤其值得注意:重建臨時表空間的大小一定要足夠大,一定要大於或等於現有臨時表空間的大小,否則會出現:提示:無法通過128(在表空間temp中)擴展 temp段。
====================================================================================
Oracle9i爲我們提供了一個全局的臨時表空間。有的時候我們會發現在做了大量的排序操作後,temp表空間並沒有去釋放,而且在更大的程度上面佔用了我們的磁盤空間,其實我們可以通過重建或者切換的手段來使我們的temp表空間得到重生。

首先我們可以先看一下,當前用戶所屬的臨時表空間有那些
SQL> select username ,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYS                            TEMP
SYSTEM                         TEMP
DBSNMP                         TEMP
HUJINPEI                       TEMP
ALAN1                          TEMP
PERFUSER                       TEMP
ALAN2                          TEMP
MYUSER                         TEMP
OUTLN                          TEMP
WMSYS                          TEMP

已選擇10行。

查看當前有那些臨時文件
SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\ICMNLSDB\TEMP_01.DBF
D:\ORACLE\ORADATA\ICMNLSDB\TEMP_02.DBF

爲了切換這個臨時文件,我們可以重新建立一個臨時表空間
SQL> create temporary tablespace temp2 tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP01.DBF' size 10M ;

表空間已創建。

SQL> alter tablespace temp2 add tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP02.DBF' size 10M;

表空間已更改。

這個時候我們就可以將剛剛建好的TEMP表空間設置爲我們數據庫默認的臨時表空間:
SQL> alter database default temporary tablespace temp2;

數據庫已更改。

SQL> select username,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ---------------------------
SYS                            TEMP2
SYSTEM                         TEMP2
DBSNMP                         TEMP2
HUJINPEI                       TEMP2
ALAN1                          TEMP2
PERFUSER                       TEMP2
ALAN2                          TEMP2
MYUSER                         TEMP2
OUTLN                          TEMP2
WMSYS                          TEMP2

已選擇10行。

當然我們還可以選擇DROP掉以前舊的TEMP的表空間
SQL> drop tablespace temp including contents ;

表空間已丟棄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章