当前位置:首页 » 网络管理 » 如何删除表空间
扩展阅读
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),