日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

oracle删除数据文件

發(fā)布時(shí)間:2024/8/26 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle删除数据文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在我們?cè)敿?xì)介紹之前,我們必須說(shuō)清楚一點(diǎn):Oracle不提供如刪除表、視圖一樣刪除數(shù)據(jù)文件的方法,數(shù)據(jù)文件是表空間的一部分,所以不能“移走”表空間。

?

一、使用offline數(shù)據(jù)文件的方法

非歸檔模式使用:alter database datafile '...' offline drop;

歸檔模式使用:??alter database datafile '...' offline;

說(shuō)明:

1)?????????以上命令只是將該數(shù)據(jù)文件OFFLINE,而不是在數(shù)據(jù)庫(kù)中刪除數(shù)據(jù)文件。該數(shù)據(jù)文件的信息在控制文件種仍存在。查詢v$datafile,仍顯示該文件。

2)?????????歸檔模式下offlineoffline drop效果是一樣的

3)?????????offline后,存在此datafile上的對(duì)象將不能訪問(wèn)

4)?????????noarchivelog模式下,只要online redo日志沒(méi)有被重寫,可以對(duì)這個(gè)文件recover后進(jìn)行online操作

?

實(shí)際使用案例:

直接刪除數(shù)據(jù)文件后無(wú)法進(jìn)入系統(tǒng)的解決方案

?

正常情況下,刪除表空間的正確方法為:

DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;

?

如果沒(méi)有通過(guò)以上命令刪除而直接刪除了數(shù)據(jù)文件,將導(dǎo)致數(shù)據(jù)庫(kù)無(wú)法打開。

?

如果直接刪除了數(shù)據(jù)文件

普通用戶登錄時(shí),則報(bào)錯(cuò):

ORA-01033: ORACLE initialization or shutdown in progress

sys用戶可以正常登錄

但進(jìn)行操作時(shí)(SELECT count(1) FROM user_tables),則會(huì)報(bào)錯(cuò):

ORA-01219:?數(shù)據(jù)庫(kù)未打開:?僅允許在固定表/視圖中查詢

如果執(zhí)行命令alter database open以打開數(shù)據(jù)庫(kù)時(shí),又報(bào)如下錯(cuò):

ORA-01157:?無(wú)法標(biāo)識(shí)/鎖定數(shù)據(jù)文件?12 -?請(qǐng)參閱?DBWR?跟蹤文件

ORA-01110:?數(shù)據(jù)文件?12: 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/TSTEST001.DBF'

?

說(shuō)明數(shù)據(jù)庫(kù)沒(méi)找到這個(gè)數(shù)據(jù)文件

因?yàn)閿?shù)據(jù)文件在沒(méi)有被offline的情況下物理刪除了,導(dǎo)致oracle的數(shù)據(jù)不一致,因此啟動(dòng)失敗.

通過(guò)以下方法即可解決

?

解決方法:

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;來(lái)刪除一個(gè)空數(shù)據(jù)文件,并且相應(yīng)的數(shù)據(jù)字典信息也會(huì)清除:

?

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; --把表移動(dòng)到其它表空間

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可以刪除臨時(shí)表空間的文件

alter database tempfile '/home/oracle/temp01.dbf' drop including datafiles;

總結(jié)

以上是生活随笔為你收集整理的oracle删除数据文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。