iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >ORA-30036: 无法按 8 扩展段解决办法
  • 1302
分享到

ORA-30036: 无法按 8 扩展段解决办法

2024-04-02 19:04:59 1302人浏览 泡泡鱼
摘要

一、故障现象:在删除一个超大表的数据时报错:ORA-30036:sql> delete fromCRT_CURING_PRESS_TEMPHISTORY 2  wher&

一、故障现象:

在删除一个超大表的数据时报错:ORA-30036:

sql> delete fromCRT_CURING_PRESS_TEMPHISTORY

 2  whereRECORD_TIME<to_date('2017-06-30','yyyy-mm-dd');

delete from CRT_CURING_PRESS_TEMPHISTORY

第 1 行出现错误:

ORA-30036: 无法按 8 扩展段 (在还原表空间'UNDOTBS1' 中)

仔细检查发现是由于undo表空间所在的数据文件已经使用达到32G所致。

二、解决办法:

1、检查undo表空间对应的数据文件目录

SQL>select tablespace_name,file_name fromdba_data_files;

2、查看undo表空间使用率:

SQL>select file_name,bytes/1024/1024from dba_data_files where tablespace_name like 'UNDOTBS%'; 

或者、

SQL>SELECT a.tablespace_name as tablespace_name,

      to_char(b.total/1024/1024,999999.99) as Total,

      to_char((b.total-a.free)/1024/1024,999999.99) as Used,

      to_char(a.free/1024/1024,999999.99) as Free,

      to_char(round((total-free)/total,4)*100,999.99) as Used_Rate

FROM (SELECT tablespace_name, sum(bytes)free FROM DBA_FREE_SPACE GROUP BY tablespace_name) a,

    (SELECT tablespace_name, sum(bytes) total FROM DBA_DATA_FILES GROUP BYtablespace_name ) b

WHERE a.tablespace_name=b.tablespace_name

  ANDa.tablespace_name='UNDOTBS1'

ORDER BY a.tablespace_name;

3、等待原UNDO表空间所有UNDO SEGMENT OFFLINE; 

SQL>select usn,xacts,status,rssize/1024/1024,hwmsize/1024/1024,shrinks from v$rollstat order by rssize;  

SQL>selectt.segment_name,t.tablespace_name,t.segment_id,t.status from dba_rollback_segst; 

4、新增undo数据文件!

SQL>alter tablespace undotbs1 add datafile'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS02.DBF' size 1000m AUTOEXTEND on next200m maxsize unlimited;

5、删除原有的UNDO表空间

SQL> create pfile from spfile; 

SQL> drop tablespace undotbs1 includinGContents; 

  最后需要在重启数据库或者重启计算机后到存储数据文件的路径下删除数据文件(为什么要手动删除呢:以上步骤只是删除了oracle中undo表空间的逻辑关系,即删除了数据文件在数据字典中的关联,不会自动删除项关联的数据文件)。 

   droptablespace undotbs1 including contents and datafiles;  


新增undo数据文件!

SQL>alter tablespace undotbs1 add datafile'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS02.DBF' size 1000m AUTOEXTEND on next200m maxsize unlimited;

3、原理通透:

UNDO 表空间用于存放UNDO数据,当执行DML操作(INSERT,UPDATE和DELETE)时,oracle会将这些操作的旧数据写入到UNDO段,在 oracle9i之前,管理UNDO数据时使用(Rollback Segment)完成的.从oracle9i开始,管理UNDO数据不仅可以使用回滚段,还可以使用UNDO表空间.因为规划和管理回滚段比较复杂,所有oracle database 10g已经完全丢弃用回滚段.并且使用UNDO表空间来管理UNDO数据.

UNDO数据也称为回滚(ROLLBACK)数据,它用于确保数据的一致性.当执行DML操作时,事务操作前的数据被称为UNDO记录.UNDO段用于保存事务所修改数据的旧值,其中存储着被修改数据块的位置以及修改前数据,

UNDO数据的作用.

1,回退事务

当执行DML操作修改数据时,UNDO数据被存放到UNDO段,而新数据则被存放到数据段中,如果事务操作存在问题,就需要回退事务,以取消事务变化.假定用户A执行了语句UPDATEemp SET sal=1000 WHERE empno=7788后发现,应该修改雇员7963的工资,而不是雇员7788的工资,那么通过执行ROLLBACK语句可以取消事务变化.当执行ROLLBACK命令时,oracle会将UNDO段的UNDO数据800(工资)写回到数据段中.

2,读一致性

用户检索数据库数据时,oracle总是使用用户只能看到被提交过的数据(读取提交)或特定时间点的数据(SELECT语句时间点).这样可以确保数据的一致性.例如,当用户A执行语句 UPDATE emp SET sal=1000 WHERE empno=7788时,UNDO记录会被存放到回滚段中,而新数据则会存放到EMP段中;假定此时该数据尚未提交,并且用户B执行SELECT salFROM emp WHERE empno=7788,此时用户B将取得UNDO数据 800,而该数据正是在UNDO记录中取得的.

3,事务恢复

事务恢复是例程恢复的一部分,它是由oracleserver自动完成的.如果在数据库运行过程中出现例程失败(如断电,内存故障,后台进程故障等),那么当重启oracle server时,后台进程SMON会自动执行例程恢复,执行例程恢复时,oracle会重新做所有未应用的记录.回退未提交事务.

4,倒叙查询(FlashBack Query)

倒叙查询用于取得特定时间点的数据库数据, 它是9i新增加的特性,假定当前时间为上午11:00,某用户在上午10:00执行UPDATE emp SET sal= 3500 WHERE empno=7788语句,修改并提交了事务(雇员原工资为3000),为了取得10:00之前的雇员工资,用户可以使用倒叙查询特征.

使用UNDO参数

 

1,UNDO_MANAGEMENT

 

该初始化参数用于指定UNDO数据的管理方式.如果要使用自动管理模式,必须设置该参数为AUTO,如果使用手工管理模式,必须设置该参数为MANUAL,使用自动管理模式时, oracle会使用undo表空间管理undo管理,使用手工管理模式时,oracle会使用回滚段管理undo数据,

 

需要注意,使用自动管理模式时,如果没有配置初始化参数UNDO_TABLESPACE,oracle会自动选择第一个可用的UNDO表空间存放UNDO数据,如果没有可用的UNDO表空间,oracle会使用SYSTEM回滚段存放UNDO记录,并在ALTER文件中记载警告.

 

2,UNDO_TABLESPACE

 

该初始化参数用于指定例程所要使用的UNDO表空间,使用自动UNDO管理模式时,通过配置该参数可以指定例程所要使用的UNDO表空间.

 

在RAC(RealApplication Cluster)结构中,因为一个UNDO表空间不能由多个例程同时使用,所有必须为每个例程配置一个独立的UNDO表空间.

 

3,UNDO_RETENTION

该初始化参数用于控制UNDO数据的最大保留时间,其默认值为900秒,从9i开始,通过配置该初始化参数,可以指定undo数据的保留时间,从而确定倒叙查询特征(FlashbackQuery)可以查看到的最早时间点.

 

建立UNDO表空间,

 

UNDO表空间专门用于存放UNDO数据,并且在UNDO表空间尚不能建立任何数据对象(表,索引,簇)

1,使用CREATE DATABASE命令建立UNDO表空间.

当使用CREATEDATABASE命令建立数据库时,通过指定UNDO TABLESPACE选项,可以建立UNDO表空间.示例如下:

CREATE DATABASE db01

UNDO TABLESPACE undotbs_01

DATAFILE ‘/u01/oracle/rbdb1/undo0101.dbf’SIZE 30M;

 

注意:UNDO TABLESPACE 子句不是必须的,如果使用自动UNDO管理模式,并且没有指定该子句,那么建立数据库时会自动生成名为SYS_UNDOTBS的UNDO表空间.

 

2,使用CREATE UNDOTABLESPACE命令建立UNDO表空间.

 

CREATE UNDO TABLESPACE undotbs2

DATAFILE ‘D:demoundotbs2.dbf’ SIZE 10M;

 

修改UNDO表空间,

使用ALTER TABLESPACE命令修改UNDO表空间.

当事务用尽了UNDO表空间后,使用ALTER TABLESPACE … ADD DATAFILE增加数据文件

当UNDO表空间所在的磁盘填满是,使用ALTER TABLESPACE … RENAME DATAFIEL 命令移动数据文件到其他磁盘上.

使用ALTER DATABASE … OFFLINE/ONLINE使表空间脱机/联机.

当数据库处于ARCHiveLOG模式时,使用ALTER TABLESPACE …BEGIN BACKUP/END BACKUP命令备份UNDO表空间.

 

切换UNDO表空间.

启动例程并打开数据库后,同一时刻特定例程只能使用一个UNDO表空间,切换UNDO表空间是指停止例程当前使用的UNDO表空间,并启动其他UNDO表空间,下面以启用undotbs2表空间为例,说明切换UNDO表空间的方法.

ALTER SYSTEM SET undo_tablespace=undotbs02;

在RAC(Real Application Cluster)机构中,不同例程必须使用独立的UNDO表空间,而不能共用同一个UNDO表空间.

 

删除UNDO表空间.

当前例程正在使用的UNDO表空间是不能被删除的,如果确定要删除当前例程正在使用的UNDO表空间,应首先切换UNDO表空间.然后删除相应的UNDO表空间.

DROP TABLESPACE undotbs1;

 

1,确定当前例程正在使用的UNDO表空间.

Show parameter undo_tablespace

 

2,显示数据库的所有UNDO表空间.

SELECT tablespace_name FROMdba_tablespacesWHERE contents=’UNDO’;

3,显示UNDO表空间统计信息.

 

使用自动UNDO管理模式时,需要合理地设置UNDO表空间的尺寸,为例合理规划UNDO表空间尺寸,应在数据库运行的高峰阶段搜集UNDO表空间的统计信息.最终根据该统计信息确定UNDO表空间的尺寸.通过查询动态性能视图V%UNDOSTAT,可以搜集UNDO统计信息.

 

SELECT TO_CHAR(BEGIN_TIME,’HH24:MI:SS’)BEGIN_TIME,

TO_CHAR(END_TIME,’HH24:MI:SS’) END_TIME,

UNDOBLKS

FROM V$UNDOSTAT;

 

BEGIN_TIME用于标识起始统计时间,END_TIME用于标识结束统计时间,UNDOBLKS用于标识UNDO数据所占用的数据块个数.oracle每隔10分钟生成一行统计信息.

 

4,显示UNDO段统计信息.

 

使用自动UNDO 管理模式时,oracle会在UNDO表空间上自动建立10个UNDO段,通过查询动态信息视图V$ROLLNAME,可以显示所有联机UNDO段的名称,通过查询动态性能视图V$ROLLLISTAT,可以显示UNDO段的统计信息.通过在V$ROLLNAME和V$ROLLLISTAT之间执行连接查询,可以监视特定UNDO段的特定信息.

 

SELECT a.name, b.xacts, b.writes, b.extents

FROM v$rollname a, v$rollstat b

WHERE a.usn=b.usn;

 

Name用于标识UNDO段的名称,xacts用于标识UNDO段所包含的活动事务个数,

Writes用于标识在undo段上所写入的字节数,extents用于标识UNDO段的区个数.

5,显示活动事务信息.

当执行DML操作时,oracle会将这些操作的旧数据放到UNDO段中,动态性能视图v$session用于显示会话的详细信息,动态性能视图v$transaction用于显示事务的详细信息,动态性能视图v$rollname用于显示联机UNDO段的名称.通过在这3个动态性能视图之间执行连接查询,可以确定正在执行事务操作的会话,事务所使用的UNDO段,以及事务所占用的UNDO块个数.

Col username fORMat a10

Col name format a10

SELECT a.username, b.name, c.used_ublk

FROM v$session a, v$rollname b,v$transaction c

WHERE a.saddr=c.ses_addr AND b.usn=c.xidusn

AND a.username='CURE';

6,显示UNDO区信息

数据字典视图dba_undo_extents用于显示UNDO表空间所有区的详细信息.包括UNDO区尺寸和状态等信息.

SELECT extend_id, bytes, status FROMdba_undo_extents

WHERE segment_name’_SYSSMU5$’;

其中,extent_id用于标识区编号,bytes用于标识区尺寸,status用于标识区状态(ACTIVE:表示该区处于活动状态,EXPIRED:标识该区未用).


您可能感兴趣的文档:

--结束END--

本文标题: ORA-30036: 无法按 8 扩展段解决办法

本文链接: https://www.lsjlt.com/news/37550.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 宝塔无法安装fileinfo扩展解决办法(小白篇)
    宝塔无法安装fileinfo扩展解决办法(小白篇) 宝塔无法php安装fileinfo扩展的方法:手动安装 重装系统登录宝塔先不要安装其他软件,先设置swap是Linux下的虚拟内存,设置内存后...
    99+
    2023-09-26
    php 服务器 linux
  • Win11无法扩展卷如何解决
    如果在Windows 11上无法扩展卷,可能是由于以下原因导致的:1. 未分配的存储空间不连续:在磁盘上,未分配的存储空间可能不会紧...
    99+
    2023-09-17
    Win11
  • php中无法开启mysql扩展如何解决
    这期内容当中小编将会给大家带来有关php中无法开启mysql扩展如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。php无法开启mysql扩展的解决方法是,编辑php.ini配置文件,去掉php_pd...
    99+
    2023-06-20
  • 无法php项目中加载扩展如何解决
    这篇文章给大家介绍无法php项目中加载扩展如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。操作环境:Windows7系统、PHP7.1、Dell G3电脑。解决PHP扩展不加载问题:方法一(已通过测试)已经内置有...
    99+
    2023-06-07
  • win10有未分配无法扩展卷如何解决
    要解决Win10中未分配无法扩展卷的问题,您可以按照以下步骤操作:1. 打开“磁盘管理”工具。可以通过按下Win + X键,然后选择...
    99+
    2023-09-17
    win10
  • Dreamweaver 8无法启动的解决方法
    这篇文章主要介绍“Dreamweaver 8无法启动的解决方法”,在日常操作中,相信很多人在Dreamweaver 8无法启动的解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Dreamweaver 8...
    99+
    2023-06-08
  • PHP数据库中无法展示爱好的解决办法
    PHP数据库中无法展示爱好的解决办法 在开发网站或应用程序时,经常会涉及到与数据库交互的操作。有时候我们需要在页面中展示用户的爱好信息,但在数据库中存储用户的爱好却不是一件简单的事情。...
    99+
    2024-02-29
    数据库 php 解决 解决方法: sql语句
  • iOS 17更新失败或无法更新怎么办?8 个解决方法快速解决!
    苹果即将在2023年9月19日发布iOS 17正式版,许多用户也都相当期待随之而来的iOS 17新功能,不过当你准备将iPhone 更新到iOS 17 版本时,可能会发生一些不可预测的iOS 17更新失败或更新卡住的问题,但不用担心,本文将...
    99+
    2023-10-12
    cocoa macos objective-c
  • Apache无法使用的解决办法
    如果Apache无法使用,可能是由于以下原因导致的:1. 端口冲突:检查其他应用程序是否正在使用Apache默认的端口(通常是端口8...
    99+
    2023-09-17
    Apache
  • java: 无法访问org.springframework.boot.SpringApplication解决办法
    java: 无法访问org.springframework.boot.SpringApplication解决办法 报错信息如下: java: 无法访问org.springframework.boot.SpringApplication 错误...
    99+
    2023-08-23
    java spring boot 开发语言
  • Win2008 无线网卡无法启用解决办法
    这是因为Server 2008默认没有安装无线上网服务造成的,解决办法如下: 桌面上右键“计算机”,管理,功能,添加功能,选中“无线WLAN服务”,一路确定。Windows...
    99+
    2023-05-25
    无线网卡 无法启用 解决办法 Win2008
  • phpmyadmin中缺少mysqli扩展的解决方法
    这篇文章给大家分享的是有关phpmyadmin中缺少mysqli扩展的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。phpMyAdmin错误 缺少 mysqli 扩展。请...
    99+
    2024-04-02
  • ora-01189故障解决办法
    ORA-01189: 文件来自于与先前文件不同的 RESETLOGSORA-01110: 数据文件 4: 'D:\ORCLDATA\XEPACS\USERS01.DBF'ORA-01189解释:Cause:...
    99+
    2024-04-02
  • pycharm无法导入lxml的解决办法
    第一种 打开PyCharm, 然后PyCharm -> Preferences -> 在搜索框中输入Project Interpreter, 转到 -> ...
    99+
    2024-04-02
  • Win7C盘不可以扩展卷该怎么办?Win7C盘扩展卷灰色没法操控的解决方案
    计算机应用久了,在所难免碰到一些电脑问题,最近就会有一部分小伙伴们体现自身C盘的扩展卷是灰的,造成没法对它进行实际操作。那麼针对这一状况需要如何解决呢?下边就以Win7为例子,为各位产生Win7C盘扩展卷灰色没法操控的解决方案,我们一起来认...
    99+
    2023-07-10
  • PHP7开启OpenSSL扩展失败的解决方法
    小编给大家分享一下PHP7开启OpenSSL扩展失败的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近学习Laravel框架,需要开启PHP的OpenS...
    99+
    2023-06-15
  • php -m没有发现扩展的解决方法
    这篇“php -m没有发现扩展的解决方法”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“php -m没有发现扩展的解决方法”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获...
    99+
    2023-06-06
  • php扩展安装不生效的解决方法
    这篇文章主要介绍php扩展安装不生效的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php扩展安装不生效的解决办法:1、指定php.ini文件来启动php-fpm服务;2、检查并修改php.ini文件,然后重...
    99+
    2023-06-09
  • css无法显示图片的解决办法
    这篇文章将为大家详细讲解有关css无法显示图片的解决办法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网...
    99+
    2023-06-14
  • uniapp中uni.switchTab无法传参的解决办法
    目录问题描述原因分析解决方案补充:解决uni.switchTab()跳转不刷新总结问题描述 在uniapp中使用uni.switchTab无法传参 uni.switchTab({ ...
    99+
    2023-01-17
    uniapp uni.switchtab uni-app传参 uniapp 无法传参
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作