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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle删除orcl库_oracle删除数据文件

發布時間:2025/3/12 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle删除orcl库_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操作

實際使用案例:

直接刪除數據文件后無法進入系統的解決方案

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

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;

總結

以上是生活随笔為你收集整理的oracle删除orcl库_oracle删除数据文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。