轉:Oracle刪除資料檔案
在我們詳細介紹之前,我們必須說清楚一點:Oracle不提供如刪除表、檢視一樣刪除資料檔案的方法,資料檔案是表空間的一部分,所以不能“移走”表空間。
一、使用offline資料檔案的方法
非歸檔模式使用:alter database datafile '...' offline drop;
歸檔模式使用: alter database datafile '...' offline;
說明:
1) 以上命令只是將該資料檔案OFFLINE,而不是在資料庫中刪除資料檔案。該資料檔案的資訊在控制檔案種仍存在。查詢v$datafile,仍顯示該檔案;
2) 歸檔模式下offline和offline drop效果是一樣的;
3) offline後,存在此datafile上的物件將不能訪問;
4) noarchivelog模式下,只要online redo日誌沒有被重寫,可以對這個檔案recover後進行online操作。
[@more@]實際使用案例:
直接刪除資料檔案後無法進入系統的解決方案
正常情況下,刪除表空間的正確方法為:
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
如果沒有透過以上命令刪除而直接刪除了資料檔案,將導致資料庫無法開啟。
如果直接刪除了資料檔案
普通使用者登入時,則報錯:
ORA-01033: ORACLE initialization or shutdown in progress
sys使用者可以正常登入
但進行操作時(SELECT count(1) FROM user_tables),則會報錯:
ORA-01219: 資料庫未開啟: 僅允許在固定表/檢視中查詢
如果執行命令alter database open以開啟資料庫時,又報如下錯:
ORA-01157: 無法標識/鎖定資料檔案 12 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 12: 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TSTEST001.DBF'
說明資料庫沒找到這個資料檔案
因為資料檔案在沒有被offline的情況下物理刪除了,導致oracle的資料不一致,因此啟動失敗.
透過以下方法即可解決
解決方法:
sqlplus sys/orcl@orcl as sysdba;
SQL> alter database datafile 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TSTEST001.DBF' offline drop;
SQL> alter database open;
SQL> drop tablespace CTBASEDATA;
二、Oracle 10G R2開始,可以採用:Alter tablespace tablespace_name drop datafile file_name;來刪除一個空資料檔案,並且相應的資料字典資訊也會清除:
sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files
2 where tablespace_name='USERS';
FILE_ID FILE_NAME TABLESPACE_NAME
------- -------------------------------------------- ------------------
4 /u01/app/oracle/oradata/orcl/users01.dbf USERS
sys@ORCL>alter tablespace users add datafile
2 '/u01/app/oracle/oradata/orcl/users02.dbf' size 5M autoextend off;
Tablespace altered.
sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files
2 where tablespace_name='USERS';
FILE_ID FILE_NAME TABLESPACE_NAME
------- -------------------------------------------- -------------------
4 /u01/app/oracle/oradata/orcl/users01.dbf USERS
9 /u01/app/oracle/oradata/orcl/users02.dbf USERS
sys@ORCL>drop table test;
Table dropped.
sys@ORCL>create table test tablespace users
2 as
3 select * from dba_objects;
Table created.
sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents
2 where file_id=9;
SEGMENT_NAME FILE_ID BLOCKS
------------------------------ ---------- ----------
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 8
TEST 9 128
TEST 9 128
17 rows selected.
sys@ORCL>alter table test move tablespace PERFSTAT; --把表移動到其它表空間
Table altered.
sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents
2 where file_id=9;
no rows selected
sys@ORCL>alter tablespace users drop datafile
2 '/u01/app/oracle/oradata/orcl/users02.dbf';
Tablespace altered.
sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files
2 where tablespace_name='USERS';
FILE_ID FILE_NAME TABLESPACE_NAME
------- -------------------------------------------- ---------------------
4 /u01/app/oracle/oradata/orcl/users01.dbf USERS
三、oracle 10g可以刪除臨時表空間的檔案
alter database tempfile '/home/oracle/temp01.dbf' drop including datafiles;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14663377/viewspace-1059621/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 刪除資料檔案Oracle
- oracle刪除資料檔案Oracle
- oracle徹底刪除資料檔案Oracle
- Oracle資料庫意外刪除資料檔案的恢復(轉載)Oracle資料庫
- Oracle10g刪除資料檔案Oracle
- Oracle恢復誤刪除的資料檔案Oracle
- 刪除空資料檔案
- linux中誤刪除oracle資料檔案的恢復操作(轉)LinuxOracle
- oracle誤刪除表空間的資料檔案Oracle
- OS 刪除oracle資料檔案恢復過程Oracle
- Oracle資料恢復 - Linux / Unix 誤刪除的檔案恢復(轉)Oracle資料恢復Linux
- oracle刪除(釋放)資料檔案/表空間流程Oracle
- oracle 失誤刪掉資料檔案後,刪除表空間操作Oracle
- gulp刪除檔案和資料夾
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- oracle 小議如何從表空間 刪除 資料檔案Oracle
- Oracle 刪除資料後釋放資料檔案所佔磁碟空間Oracle
- 【轉載】Oracle Data Guard 主庫 歸檔檔案 刪除策略Oracle
- RM 刪除資料檔案恢復操作
- 10G刪除空資料檔案
- linux中誤刪除oracle資料檔案的恢復操作LinuxOracle
- 【轉載】Oracle Data Guard 備庫 歸檔檔案 刪除指令碼Oracle指令碼
- 1.7.8. 刪除資料庫密碼檔案資料庫密碼
- 資料檔案誤刪除(DM_單機)
- FileUtils類建立、刪除檔案及資料夾
- centos徹底刪除資料夾、檔案命令CentOS
- 恢復rm -f物理刪除資料檔案
- 恢復被rm意外刪除資料檔案
- 刪除檔案
- Oracle11g資料庫引數檔案誤刪除恢復Oracle資料庫
- oracle資料檔案被誤刪除後的災難處理方法Oracle
- lsof恢復oracle誤刪除檔案Oracle
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle
- 【轉】oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- oracle刪除重資料方法Oracle
- 如何刪除oracle資料庫Oracle資料庫
- 手工刪除oracle資料庫Oracle資料庫
- ORACLE刪除歸檔Oracle