从表空间删除数据文件前提条件
如果欲从表空间中删除数据文件,那么该数据文件必须为空,否则将报出"ORA-03262: the file is non-empty"的错误。从表空间删除数据文件步骤1.确定数据文件为空根据数据文件名称及表空间确定文件为空 SQL>SELECT distinct b.owner, b.segment_name FROM dba_data_files a, dba_extents b WHERE a.file_id = b.file_id AND a.tablespace_name ='tablespace_name' AND a.file_name ='datafile_name'; 其中,tablespace_name为数据文件所属表空间名称;datafile_name为数据文件名称。注意:确保该语句查询结果为空。否则需将该数据文件内对象移除该数据文件。2.确保对应表空间无回收对象:SQL>SELECT original_name, type, ts_name, can_purge FROM dba_recyclebin WHERE ts_name='tablespace_name'; 其中,tablespace_name为回收对象所属表空间名称。注意:确保该语句查询结果为空。否则需使用PURGE TABLE等命令清理回收对象。
3.从表空间删除数据文件登录数据库服务器,进入 sqlplus 环境,运行如下语句。 SQL>ALTER TABLESPACE tablespace_name DROP DATAFILE 'datafile_name'; 其中,tablespace_name为数据文件所属表空间名称;datafile_name为数据文件名称。注意:切勿执行中取消操作,谨记!4.监控执行过程执行过程中,可能发生长时间卡死的情况,此时应多方位排查故障。
a.查看 alert.log在执行的数据库服务器上查看对应实例的alert.log 文件。b.查看会话等待事件SQL>SELECT inst_id, sid, serial#, username, sql_id, event FROM gv$session;注意:很可能出现enq TT - contention的等待事件。应注意排查是否出现阻塞情况。c.排查阻塞情况SQL>SELECT inst_id, addr, sid, type, id1, id2, lmode, request, ctime, block FROM gv$lock WHERE (id1, id2, type) IN (SELECT id1, id2, type FROM gv$lock WHERE request>0);
如果觉得《Oracle-11g 从表空间删除数据文件》对你有帮助,请点赞、收藏,并留下你的观点哦!