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),