當前位置:首頁 » 網路管理 » 如何刪除表空間
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何刪除表空間

發布時間: 2022-07-17 05:24:13

1. 怎樣刪除表空間里的某個數據文件

一班來講,當你刪除表空間時如果包含刪除數據文件時,數據文件會被刪除,
drop
tablespace

including
contents
and
datafiles...如果你在刪除表空間時沒有包含including
contents
and
datafiles,而你又確定沒有表空間用到這個數據文件的話,那你可以透過作業系統命令直接刪除其中數據文件(delete...)

2. 如果要刪除某個表空間中的一個數據文件如何操作

1、先對數據進行一次完整的備份。

3. 如何刪除表空間的數據文件

新增加的表空間數據文件誤刪除(利用創建表空間前的控制文件)
===========================================================

利用表空間文件創建前的備份控制文件恢復,10g會自動創建丟失的數據文件恢復
--利用控制文件的不完全恢復,要利用刪除文件或表空間前備份的控制文件恢復

利用創建前的控制文件恢復

PENG(sys)>select* from v$version;

BANNER
----------------------------------------------------------------
OracleDatabase 10g Enterprise Edition Release 10.2.0.1.0- Prod
PL/sqlRelease 10.2.0.1.0 - Proction
CORE10.2.0.1.0 Proction
TNSfor 32-bit Windows: Version 10.2.0.1.0 - Proction
NLSRTLVersion 10.2.0.1.0 - Proction

RMAN>backup database ;

PENG(sys)>createtablespace ts_back datafile 'C:ORACLEPRODUCT10.2.0ORADATAORCLTS_BACK.DBF'size 1m autoextend on;

表空間已創建。

PENG(sys)>createtable test(a varchar2(10)) tablespace ts_back;

表已創建。

PENG(sys)>insertinto test values('test');

已創建 1 行。

PENG(sys)>commit;

提交完成。

PENG(sys)>select* from test;

A
----------
test

PENG(sys)>selectdbms_flashback.get_system_change_number from al;

GET_SYSTEM_CHANGE_NUMBER
------------------------
1878113

PENG(sys)>droptablespace ts_back including contents and datafiles;

表空間已刪除。

PENG(sys)>select* from test;
select* from test
*
第 1 行出現錯誤:
ORA-00942:表或視圖不存在

PENG(sys)>shutdownimmediate;
資料庫已經關閉。
已經卸載資料庫。
ORACLE常式已經關閉。

C:>rmantarget sys/sys@orcl36

恢復管理器:Release 10.2.0.1.0 - Proction on 星期五 8月 17 13:57:452007

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

已連接到目標資料庫 (未啟動)

RMAN>startup nomount;

已連接到目標資料庫 (未啟動)
Oracle實例已啟動

系統全局區域總計167772160 位元組

FixedSize 1247900 位元組
VariableSize 75498852 位元組
DatabaseBuffers 88080384 位元組
RedoBuffers 2945024 位元組

--找到了alert.log 的一段,需要用到創建表空間前的控制文件進行恢復C:ORACLEBACKC-497086482-20040820-04
--資料庫的dbid是497086482

FriAug 20 11:03:58 2004
Thread1 advanced to log sequence 3
Currentlog# 3 seq# 3 mem# 0: C:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG
FriAug 20 11:04:02 2004
Startingcontrol autobackup
FriAug 20 11:04:04 2004
Errorsin file c:oracleproct10.2.0adminorclumporcl_ora_3276.trc:

FriAug 20 11:04:04 2004
Errorsin file c:oracleproct10.2.0adminorclumporcl_ora_3276.trc:

FriAug 20 11:04:04 2004
Errorsin file c:oracleproct10.2.0adminorclumporcl_ora_3276.trc:

Controlautobackup written to DISK device
handle'C:ORACLEBACKC-497086482-20040820-04'
FriAug 20 11:05:20 2004

RMAN>set dbid 497086482

正在執行命令:SET DBID

RMAN>startup nomount;

Oracle實例已啟動

系統全局區域總計167772160 位元組

FixedSize 1247900 位元組
VariableSize 75498852 位元組
DatabaseBuffers 88080384 位元組
RedoBuffers 2945024 位元組

RMAN>restore controlfile from 'C:ORACLEBACKC-497086482-20040820-04' ;

啟動restore 於20-8月 -07
使用目標資料庫控制文件替代恢復目錄
分配的通道:ORA_DISK_1
通道ORA_DISK_1: sid=157 devtype=DISK

通道ORA_DISK_1: 正在復原控制文件
通道ORA_DISK_1: 恢復完成, 用時: 00:00:04
輸出文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL01.CTL
輸出文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL02.CTL
輸出文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLCONTROL03.CTL
完成restore 於20-8月 -07

RMAN>sql 'alter database mount';

sql語句: alterdatabase mount
釋放的通道:ORA_DISK_1

/*
run{
setuntil scn 1878113;
restoredatabase;
recoverdatabase;
}

*/
C:Documentsand SettingsAdministrator>sqlplus sys/sys@orcl36 as sysdba

idle>selectfile#,name from v$datafile;

FILE#
----------
NAME
----------------------------------------------------------------------------
1
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF

2
C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS02.DBF

3
C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF

4
C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF

5
C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF

6
C:ORACLEPRODUCT10.2.0ORADATAORCLPERFSTAT.DBF

7
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_ROW.DBF

8
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART1.DBF

9
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART2.DBF

10
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART3.DBF

11
C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART4.DBF

12
C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS02.DBF

已選擇12行。

RMAN>run{
2>set until scn 1878113;
3>restore database;
4>recover database;
5>}

正在執行命令:SET until clause

啟動restore 於20-8月 -07
啟動implicit crosscheck backup 於20-8月 -07
分配的通道:ORA_DISK_1
通道ORA_DISK_1: sid=155 devtype=DISK
已交叉檢驗的 6 對象
完成implicit crosscheck backup 於20-8月 -07

啟動implicit crosscheck 於20-8月 -07
使用通道ORA_DISK_1
已交叉檢驗的 2 對象
完成implicit crosscheck 於20-8月 -07

搜索恢復區域中的所有文件
正在編制文件目錄...
沒有為文件編制目錄

使用通道ORA_DISK_1

通道ORA_DISK_1: 正在開始恢復數據文件備份集
通道 ORA_DISK_1:正在指定從備份集恢復的數據文件
正將數據文件00002恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS02.DBF
正將數據文件00003恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLSYSAUX01.DBF
正將數據文件00004恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLUSERS01.DBF
正將數據文件00006恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLPERFSTAT.DBF
正將數據文件00007恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_ROW.DBF
正將數據文件00008恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART1.DBF
正將數據文件00009恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART2.DBF
正將數據文件00010恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART3.DBF
正將數據文件00011恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLTS_PART4.DBF
正將數據文件00012恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLUNDOTBS02.DBF
通道ORA_DISK_1: 正在讀取備份段C:ORACLEBACKDB_FULL_PENG_20040820_534682924_225_71FTT79C_1_1.BAK
通道ORA_DISK_1: 已恢復備份段 1
段句柄 =C:ORACLEBACKDB_FULL_PENG_20040820_534682924_225_71FTT79C_1_1.BAK 標記 =TAG20040820T110203
通道ORA_DISK_1: 恢復完成, 用時: 00:00:55
通道ORA_DISK_1: 正在開始恢復數據文件備份集
通道ORA_DISK_1: 正在指定從備份集恢復的數據文件
正將數據文件00001恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF
正將數據文件00005恢復到C:ORACLEPRODUCT10.2.0ORADATAORCLEXAMPLE01.DBF
通道ORA_DISK_1: 正在讀取備份段C:ORACLEBACKDB_FULL_PENG_20040820_534682990_226_72FTT7BE_1_1.BAK
通道ORA_DISK_1: 已恢復備份段 1
段句柄 =C:ORACLEBACKDB_FULL_PENG_20040820_534682990_226_72FTT7BE_1_1.BAK 標記 =TAG20040820T110203
通道ORA_DISK_1: 恢復完成, 用時: 00:00:45
完成restore 於20-8月 -07

啟動recover 於20-8月 -07
使用通道ORA_DISK_1

正在開始介質的恢復

存檔日誌線程 1 序列 2 已作為文件C:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG 存在於磁碟上
存檔日誌線程 1 序列 3 已作為文件C:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG 存在於磁碟上
存檔日誌文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG 線程 =1 序列 =2
存檔日誌文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG 線程 =1 序列 =3
創建數據文件 fno= 13 名稱 =C:ORACLEPRODUCT10.2.0ORADATAORCLTS_BACK.DBF
存檔日誌文件名=C:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG 線程 =1 序列 =3
介質恢復完成, 用時: 00:00:03
完成recover 於20-8月 -07

RMAN>sql 'alter database open resetlogs';

sql語句: alterdatabase open resetlogs

idle>connsys/sys@orcl36 as sysdba ;
已連接。
PENG(sys)>select* from test;

A
----------
test

--利用表空間文件創建前的備份控制文件恢復,10g會自動創建丟失的數據文件恢復

4. 如何刪除oracle臨時表空間

刪除表空間temp,但不刪除其文件
用:drop
tablespace
temp;
刪除表空間temp同時刪除表空間的數據對象
用drop
tablespace
temp
including
contents;
刪除表空間temp及其包含數據對象以及數據文件
用drop
tablespace
temp
including
contents
and
datafiles;
希望能幫助你

5. 如何刪除表空間中所有表

SELECT 'DROP TABLE ' || TABLE_NAME || ' CASCADE CONSTRAINTS' V_NAME
FROM DBA_TABLES
WHERE TABLESPACE_NAME = 'USERS';
按照表空間名查詢所有包含的表,並根據表名拼接刪除語句。
執行上面查詢語句生成的語句,即可刪除所有表。

6. oracle資料庫怎麼刪除表空間

刪除無任何數據對象的表空間:
首先使用PL/SQL界面化工具,或者使用oracle自帶的SQL
PLUS工具,連接需要刪除的表空間的oracle數據局庫。
確認當前用戶是否有刪除表空間的許可權,如果沒有
drop
tablespace,請先用更高級的用戶(如sys)給予授權或者直接用更高級的用戶。
用drop
tablespace
xxx
,刪除需要刪除的表空間。
刪除有任何數據對象的表空間
使用drop
tablespace
xxx
including
contents
and
datafiles;來刪除表空間。
注意事項:
如果drop
tablespace語句中含有datafiles,那datafiles之前必須有contents關鍵字,不然會提示ora-01911錯誤

7. 如何正確的刪除表空間數據文件

先,我新建了一個表空間並指定數據文件,語句如下:
create
tablespace
abc_data
datafile
'D:\oracle12c\oradata\orcl\abc_data.DBF'
size
50m
autoextend
on

接著,我刪除表空間
drop
tablespace
abc_data(沒有把相關的數據文件刪除)
那麼現在在D:\oracle12c\oradata\orcl下面還有abc_data.DBF這個數據文件
1、用sql刪除怎麼寫?還是能直接手動刪除?

8. oracle怎麼刪除表空間下所有的表

1、創建兩個測試表,指定表空間TEMP;

create table test_ts_1(id number) tablespace temp;

create table test_ts_2(id number) tablespace temp;

9. 怎麼刪除用戶,表空間,數據文件

Oracle 使用時間長了, 新增了許多user 和tablespace. 需要清理一下
對於單個user和tablespace 來說, 可以使用如下命令來完成。

步驟一: 刪除user

drop user ×× cascade

說明: 刪除了user,只是刪除了該user下的schema objects,是不會刪除相應的tablespace的。

步驟二: 刪除tablespace
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;

但是,因為是供開發環境來使用的db, 需要清理的user 和 table space 很多。
思路:
Export出DB中所有的user和tablespace, 篩選出系統的和有用的tablespace,把有用的信息load到一張表中去。
然後寫常式循環,把不在有用表的tablespace刪掉
1. select username,default_tablespace from dba_users;
2.

create table MTUSEFULSPACE
(
ID Number(4) NOT NULL PRIMARY KEY,
USERNAME varchar2(30),