Oracle删除表空间报ORA01548

由于undo表空间设置了自动增长,导致替换了好几个undo表空间,就想把原先的undo表空间删掉腾出空间

但删的时候报错

SQL> drop tablespace undotbs1 including contents and datafiles;
drop tablespace undotbs1 including contents and datafiles
*
ERROR at line 1:
ORA-01548: active rollback segment ‘_SYSSMU1_3780397527$‘ found, terminate
dropping tablespace

错误原因: 删除undo表空间中的segment需要回复 解决方法: 删除回滚段信息
这是因为分布式事务没有提交导致的吗,看看表空间段的情况

SQL> Select segment_id,segment_name,status,tablespace_name
from dba_rollback_segs where status not in(‘ONLINE‘,‘OFFLINE‘);  2

SEGMENT_ID SEGMENT_NAME           STATUS       TABLESPACE_NAME
---------- ------------------------------ ---------------- ------------------------------
    10 _SYSSMU10_3550978943$      PARTLY AVAILABLE UNDOTBS1
     9 _SYSSMU9_1424341975$       PARTLY AVAILABLE UNDOTBS1
     8 _SYSSMU8_2012382730$       PARTLY AVAILABLE UNDOTBS1
     7 _SYSSMU7_3286610060$       PARTLY AVAILABLE UNDOTBS1
     6 _SYSSMU6_2443381498$       PARTLY AVAILABLE UNDOTBS1
     5 _SYSSMU5_1527469038$       PARTLY AVAILABLE UNDOTBS1
     4 _SYSSMU4_1152005954$       PARTLY AVAILABLE UNDOTBS1
     3 _SYSSMU3_2097677531$       PARTLY AVAILABLE UNDOTBS1
     2 _SYSSMU2_2232571081$       PARTLY AVAILABLE UNDOTBS1
     1 _SYSSMU1_3780397527$       PARTLY AVAILABLE UNDOTBS1
    22 _SYSSMU22_888340975$       PARTLY AVAILABLE UNDOTBS2

SEGMENT_ID SEGMENT_NAME           STATUS       TABLESPACE_NAME
---------- ------------------------------ ---------------- ------------------------------
    21 _SYSSMU21_2646097468$      PARTLY AVAILABLE UNDOTBS2
    20 _SYSSMU20_1273092953$      PARTLY AVAILABLE UNDOTBS2
    19 _SYSSMU19_2470562502$      PARTLY AVAILABLE UNDOTBS2
    18 _SYSSMU18_420064975$       PARTLY AVAILABLE UNDOTBS2
    17 _SYSSMU17_1769081034$      PARTLY AVAILABLE UNDOTBS2
    16 _SYSSMU16_872709384$       PARTLY AVAILABLE UNDOTBS2
    15 _SYSSMU15_1829973224$      PARTLY AVAILABLE UNDOTBS2
    14 _SYSSMU14_2564326661$      PARTLY AVAILABLE UNDOTBS2
    13 _SYSSMU13_307811187$       PARTLY AVAILABLE UNDOTBS2

状态为PARTLY AVAILABLE说明还有事务没有结束,看看需要恢复的段

SQL> select SEGMENT_NAME,TABLESPACE_NAME,STATUS from dba_rollback_segs;

SEGMENT_NAME               TABLESPACE_NAME              STATUS
------------------------------ ------------------------------ ----------------
SYSTEM                   SYSTEM                  ONLINE
_SYSSMU12_4168347562$           UNDOTBS1               OFFLINE
_SYSSMU11_4050559276$           UNDOTBS1               OFFLINE
_SYSSMU10_3550978943$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU9_1424341975$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU8_2012382730$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU7_3286610060$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU6_2443381498$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU5_1527469038$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU4_1152005954$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU3_2097677531$           UNDOTBS1               PARTLY AVAILABLE

SEGMENT_NAME               TABLESPACE_NAME              STATUS
------------------------------ ------------------------------ ----------------
_SYSSMU2_2232571081$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU1_3780397527$           UNDOTBS1               PARTLY AVAILABLE
_SYSSMU25_243928486$           UNDOTBS2               OFFLINE
_SYSSMU24_4009307888$           UNDOTBS2               OFFLINE
_SYSSMU23_2616232510$           UNDOTBS2               OFFLINE
_SYSSMU22_888340975$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU21_2646097468$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU20_1273092953$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU19_2470562502$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU18_420064975$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU17_1769081034$           UNDOTBS2               PARTLY AVAILABLE

SEGMENT_NAME               TABLESPACE_NAME              STATUS
------------------------------ ------------------------------ ----------------
_SYSSMU16_872709384$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU15_1829973224$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU14_2564326661$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU13_307811187$           UNDOTBS2               PARTLY AVAILABLE
_SYSSMU35_65240735$           UNDOTBS3               ONLINE
_SYSSMU34_3144578968$           UNDOTBS3               ONLINE
_SYSSMU33_3204464002$           UNDOTBS3               ONLINE
_SYSSMU32_3560741359$           UNDOTBS3               ONLINE
_SYSSMU31_3558146288$           UNDOTBS3               ONLINE
_SYSSMU30_2956244594$           UNDOTBS3               ONLINE
_SYSSMU29_2102016512$           UNDOTBS3               ONLINE

SEGMENT_NAME               TABLESPACE_NAME              STATUS
------------------------------ ------------------------------ ----------------
_SYSSMU28_1084061334$           UNDOTBS3               ONLINE
_SYSSMU27_2646077545$           UNDOTBS3               ONLINE
_SYSSMU26_2780995135$           UNDOTBS3               ONLINE

发现undotbs1,2中的回滚段status为PARTLY AVAILABLE /NEED RECOVERY这时如果有rman备份可以利用rman恢复

没有的通过设置参数文件值解决:

SQL> create pfile from spfile;

添加该参数,并将需要恢复的段名放进去

corrupted_rollback_segments=(_SYSSMU10_3550978943$,
_SYSSMU9_1424341975$,
_SYSSMU8_2012382730$,
_SYSSMU7_3286610060$,
_SYSSMU6_2443381498$,
_SYSSMU5_1527469038$,
_SYSSMU4_1152005954$,
_SYSSMU3_2097677531$,
_SYSSMU2_2232571081$,
_SYSSMU1_3780397527$,
_SYSSMU22_888340975$,
_SYSSMU21_2646097468$,
_SYSSMU20_1273092953$,
_SYSSMU19_2470562502$,
_SYSSMU18_420064975$,
_SYSSMU17_1769081034$,
_SYSSMU16_872709384$,
_SYSSMU15_1829973224$,
_SYSSMU14_2564326661$,
_SYSSMU13_307811187$)

SQL> create spfile from pfile;

重启数据库,并重新删掉表空间

SQL> startup
ORACLE instance started.

Total System Global Area 6680915968 bytes
Fixed Size            2213936 bytes
Variable Size         5234493392 bytes
Database Buffers     1409286144 bytes
Redo Buffers           34922496 bytes
Database mounted.
Database opened.
SQL> drop tablespace undotbs1 including contents and datafiles;

Tablespace dropped.

SQL> drop tablespace undotbs2 including contents and datafiles;

Tablespace dropped.

SQL>

时间: 2024-12-29 06:51:08

Oracle删除表空间报ORA01548的相关文章

oracle 删除表空间及数据文件方法

drop tablespace tablespace_name;--删除非空表空间,但是不包含物理文件drop tablespace tablespace_name including contents;--删除空表空间,包含物理文件drop tablespace tablespace_name including datafiles;--删除非空表空间,包含物理文件drop tablespace tablespace_name including contents and datafiles;

Oracle创建表空间报错:O/S-Error: (OS 3) 系统找不到指定的路径

创建sql:         CREATE TABLESPACE TBSP_1 DATAFILE 'E:/oracle/product/10.2.0/tablespaces/weblogic.dbf'SIZE 10M; 但是出现了以下错误信息:         错误信息:         ORA-01119: 创建数据库文件 'E:/oracle/product/10.2.0/tablespaces/weblogic.dbf' 时出错         ORA-27040: 文件创建错误, 无法创

实战:oracle删除表空间的shell脚本

#!/bin/bash #[email protected] #drop tablespace if [ $# -ne 1 ]; then echo "Usage: $0 TABLESPACE_NAME " exit 1 fi #configure oracle env:about oracle envs, username and password ORACLE_SID=orcl ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 ora_

oracle 11g 手动删除表空间文件导致数据库报错处理方法

简单说下原因:当时图方便没进数据库,直接在datafile目录下删除了表空间对应的数据文件 导致后来数据库报错,并且不能删除表空间 错误如下:ORA-01116:error in opening database ****ORA-01110:data file 54:'/home3/datafile/arrange/NewArrange.dbf'ORA-27041:unable to open fileLinux Error:2: No Such file or directoryAdditio

ORACLE 11G收缩表空间报错 ORA-03297: file contains used data beyondrequested RESIZE value

测试环境磁盘空间不足,所以drop一些无用的大表,但是发现空间没有变化,df -h还是没有释放出磁盘空间来. SQL> set line 200 SQL> set pagesize 200 SQL> col name format A150 1,查看表空间使用情况 SQL> SELECTUPPER(F.TABLESPACE_NAME) "表空间名", 2 D.TOT_GROOTTE_MB "表空间大小(M)", 3 D.TOT_GROOTTE

oracle中删除表空间提示ORA-00604和ORA-38301

今天需要在本机上腾出空间,发现oracle中有一个dbf文件占了约30G,这个数据文件对应的用户平时很少使用的,于是就想对它进行处理-删除表空间操作. 本机的数据库是32位的10.2.0.1.0,表空间为TEST_TB存在若干个表数据.刚开始时用dba角色的system用户,直接执行 drop tablespace test_tb including contents and datafiles; 提示: ORA-00604:递归SQL级别1出现错误 ORA-38301:无法对回收站中的对象执行

oracle下正确删除表空间的方法

Oracle因为本身的多重验证机制所有在删除表空间时不像MySQL中删除database一样,可以通过外部的删除直接删除掉database文件夹就可以删除掉database,当然这两者是2种不同的东西,在此仅用于举例说明.在Oracle中表空间相当于系统中的硬盘,Oracle可以通过修改配置表空间来对Oracle下的数据进行存储,所以在Oracle下表空间是非常重要的,尤其是在表空间文件处理不当都会造成Oracle的不稳定,在此就说一说如何正确的删除Oracle的表空间. 删除表空间时,需要确定

oracle创建表空间、创建用户、授权、夺权、删除用户、删除表空间

表空间定义 表空间是为了统一ORACLE物理和逻辑上的结构而专门建立的,从物理上来说,一个表空间是由具体的一个或多个磁盘上数据文件构成的(至少1对1,可以1对多),从逻辑上来说一个表空间是由具体的一个或多个用户模式下的表,索引等等里面的数据所构成的. 创建表空间:首先连接到拥有dba权限的用户下.例如system [sql] view plaincopy SQL> create tablespace baicheng datafile 'f:\baicheng.dbf' size 25M; Ta

Oracle菜鸟之如何创建和删除表空间

1.创建临时表空间 创建表空间时,dbf文件一般存放在datafile文件的存放目录下(一般是在实例名命名的文件夹下面) 可以通过 select * from v$datafile;查看所有数据文件的存放位置 create temporary tablespace 表空间名 tempfile '/data/oradata/CHUANSHU/datafile/tmp_文件名.dbf' size 50M autoextend on next 1M maxsize 1024M extent manag