如何删除表空间的数据文件
10个回答
展开全部
新增加的表空间数据文件误删除(利用创建表空间前的控制文件)
===========================================================
利用表空间文件创建前的备份控制文件恢复,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 - Production
CORE10.2.0.1.0 Production
TNSfor 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTLVersion 10.2.0.1.0 - Production
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 dual;
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 - Production 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:oracleproduct10.2.0adminorcludumporcl_ora_3276.trc:
FriAug 20 11:04:04 2004
Errorsin file c:oracleproduct10.2.0adminorcludumporcl_ora_3276.trc:
FriAug 20 11:04:04 2004
Errorsin file c:oracleproduct10.2.0adminorcludumporcl_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 copy 于20-8月 -07
使用通道ORA_DISK_1
已交叉检验的 2 对象
完成implicit crosscheck copy 于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会自动创建丢失的数据文件恢复
===========================================================
利用表空间文件创建前的备份控制文件恢复,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 - Production
CORE10.2.0.1.0 Production
TNSfor 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTLVersion 10.2.0.1.0 - Production
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 dual;
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 - Production 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:oracleproduct10.2.0adminorcludumporcl_ora_3276.trc:
FriAug 20 11:04:04 2004
Errorsin file c:oracleproduct10.2.0adminorcludumporcl_ora_3276.trc:
FriAug 20 11:04:04 2004
Errorsin file c:oracleproduct10.2.0adminorcludumporcl_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 copy 于20-8月 -07
使用通道ORA_DISK_1
已交叉检验的 2 对象
完成implicit crosscheck copy 于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会自动创建丢失的数据文件恢复
展开全部
你的数据库是Oracle吗,我的是,如果是,我有完整的数据库操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的意思是不是,想要删除表空间并且删除物理文件?
首先用管理员登陆。然后执行下面sql。
drop tablespace tablespace_name including contents and datafiles;
如果其实提示文件被占用的话就要先进入服务(services.msc)把oracle相关进程停一下,然后删除,删除之后再重启服务。
希望能帮到你。
首先用管理员登陆。然后执行下面sql。
drop tablespace tablespace_name including contents and datafiles;
如果其实提示文件被占用的话就要先进入服务(services.msc)把oracle相关进程停一下,然后删除,删除之后再重启服务。
希望能帮到你。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果不是Oracle11gR2版本,数据文件是无法删除的,要删除数据文件连同表空间一起删除。
Oracle11gR2版可以删除数据文件。但你给的题目没有正确答案。
Oracle11gR2版删除数据文件的步骤如下:
1、保证表空间处在联机状态;
2、通过SQL语句删除数据文件;
3、删除数据文件语法:ALTER TABLESPACE 表空间名 DROP DATAFILE 数据文件名;
Oracle11gR2版可以删除数据文件。但你给的题目没有正确答案。
Oracle11gR2版删除数据文件的步骤如下:
1、保证表空间处在联机状态;
2、通过SQL语句删除数据文件;
3、删除数据文件语法:ALTER TABLESPACE 表空间名 DROP DATAFILE 数据文件名;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果不是Oracle11gR2版本,数据文件是无法删除的,要删除数据文件连同表空间一起删除。
Oracle11gR2版可以删除数据文件。但你给的题目没有正确答案。
Oracle11gR2版删除数据文件的步骤如下:
1、保证表空间处在联机状态;
2、通过SQL语句删除数据文件;
3、删除数据文件语法:ALTER TABLESPACE 表空间名 DROP DATAFILE 数据文件名;
Oracle11gR2版可以删除数据文件。但你给的题目没有正确答案。
Oracle11gR2版删除数据文件的步骤如下:
1、保证表空间处在联机状态;
2、通过SQL语句删除数据文件;
3、删除数据文件语法:ALTER TABLESPACE 表空间名 DROP DATAFILE 数据文件名;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询