精华内容
下载资源
问答
  • oracle数据库表空间清理
    千次阅读
    2019-09-14 16:29:55

    今天维护了多年的Oracle数据库突然报表空间不足95%告警,由于系统马上升级下线,上面不再批准扩展表空间了,那只能自己去清理一些历史数据。
    1、先查询表空间使用情况

    --查询表空间使用情况
    SELECT a.tablespace_name "表空间名",
           total "表空间大小",
           free "表空间剩余大小",
           (total - free) "表空间使用大小",
           total / (1024 * 1024 * 1024) "表空间大小(G)",
           free / (1024 * 1024 * 1024) "表空间剩余大小(G)",
           (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",
           round((total - free) / total, 4) * 100 "使用率 %"
      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 BY tablespace_name) b
     WHERE a.tablespace_name = b.tablespace_name;
    

    2、查询具体哪些表占用的空间较大,好针对性清理这些占用大的表

    --查询表所占空间大小
    select segment_name "表名", bytes/(1024 * 1024 * 1024) "占用(G)"
    from user_segments 
    where segment_type = 'TABLE'; 
    

    3、清理可以有drop表、truncate清空数据、delete删除数据
    4、delete和truncate有时候并不能释放表空间,需要执行以下脚本释放

    --收缩表空间
    alter table CEP.cep_archive_data enable row movement;
    alter table CEP.cep_archive_data shrink space compact;
    alter table CEP.cep_archive_data shrink space;
    alter table CEP.cep_archive_data disable row movement;
    
    更多相关内容
  • ##告警172.0.0.1_Oracle数据库读写分离–Oracle_TableSpace:UNDOTBS1使用率超过90,故障已持续0m(IP地址172.0.0.1;告警时间2020.03.11 09:47:53;检查项oracle.check[pre,UNDOTBS1] ;当前状态PROBLEM;值92 %) ...
  • oracle数据库清理临时表空间

    千次阅读 2021-05-04 04:15:21
    方法一、重启库 库重启时,Smon进程会完成临时段释放,TEMP表空间清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。 法二、Metalink给出的一个方法 ...

    方法一、重启库   库重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。   法二、Metalink给出的一个方法   修改一下TEMP表空间的storage参数,让Smon进程观注一下临时段,从而达到清理和TEMP表空间的目的。 SQL>alter tablespace temp increase 1; SQL>alter tablespace temp increase 0;   法三、常用的一个方法,具体内容如下   1、 使用如下语句a查看一下认谁在用临时段 SELECT username, sid, serial#, sql_address, machine, program, tablespace, segtype, contents FROM v$session se, v$sort_usage su WHERE se.saddr=su.session_addr   2、  那些正在使用临时段的进程 SQL>Alter system kill session 'sid,serial#';   3、  把TEMP表空间回缩一下 SQL>Alter tablespace TEMP coalesce;   法四、使用诊断事件的一种方法   1、 确定TEMP表空间的ts# SQL>select ts#, name from sys.ts$ ; TS# NAME ----------------------- 0 SYSYEM 1 RBS 2 USERS 3* TEMP 4 TOOLS 5 INDX 6 DRSYS   2、 执行清理操作 SQL>alter session set events 'immediate trace name DROP_SEGMENTS level 4' ; 说明: temp表空间的TS# 为 3*, So TS#+ 1= 4   其它: 1、 出现如上问题的原因我认为可能是由于大的排序超出了TEMP表空间的空间允许范围引起的。也可能包含着其它的异常的因素。 2、 观注TEMP等这些空间的状态是Dba日常职责之一,我们可以通过Toad、Object Browser等这些工具办到,也可以用如下的语句: SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100, 2), '990.99') "使用比", F.TOTAL_BYTES "空闲空间(M)", F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 4 DESC

    展开全文
  • oracle数据库表空间满时的处理办法

    千次阅读 2021-12-13 14:04:04
    oracle数据库表空间满时的处理办法

    处理步骤:

    1、连上数据库后查看表空间情况 

    SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
           D.TOT_GROOTTE_MB "表空间大小(M)",
           D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
           TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
                         2),
                   '990.99') "使用比",
           F.TOTAL_BYTES "空闲空间(M)",
           F.MAX_BYTES "最大块(M)"
      FROM (SELECT TABLESPACE_NAME,
                   ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
                   ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
              FROM SYS.DBA_FREE_SPACE
             GROUP BY TABLESPACE_NAME) F,
           (SELECT DD.TABLESPACE_NAME,
                   ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
              FROM SYS.DBA_DATA_FILES DD
             GROUP BY DD.TABLESPACE_NAME) D
     WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
     ORDER BY 4 DESC;

    2、当表空间不足时

    • 扩展表空间

    当表空间文件本身较小时,可以选择扩大表空间文件的大小,sql语句:

    ​​​​​​​alter database datafile 'D:\ORACLE\PRODUCT\ORADATA\TEST\USERS01.DBF' resize 50m;
    • 设置文件的自动增长

    首先选择设置自增长,sql语句:

    ALTER DATABASE DATAFILE 'E:\APP\ZHUANGB1\ORADATA\WHU\USERS01.DBF' AUTOEXTEND  ON NEXT  400M MAXSIZE UNLIMITED;
    • 增加数据文件

    在自增长失灵了之后,需要增加数据文件,sql语句:

    Alter tablespace 表空间名 add datafile ‘数据文件存放的路径’ size 数据文件大小M autoextend on next 每次自增长大小M Maxsize UNLIMITED;

    示例:

    alter tablespace USER add datafile 'E:\app\EmmaXu\product\11.1.0\db_1\database\SDE_1.dbf' size 400M autoextend off

    3、 删除表空间文件

    有时表空间文件添加错误,需要删除重新添加,sql语句:

    alter tablespace WEBS_TABLESPACE drop datafile 'F:\temp\USERS02.DBF';
    展开全文
  • Oracle清理表空间

    2021-09-16 14:27:31
    --检查高水位 SELECT table_name, ROUND ( (blocks * 8), 2) "高水位空间 k", ROUND ( (num_rows * avg_row_len / 1024), 2) "真实使用空间 k", ROUND ( (blocks * 10 / 100) * 8, 2) "预留空间(pctfree) k", ...
    --检查高水位表
     SELECT table_name,
             ROUND ( (blocks * 8), 2) "高水位空间 k",
             ROUND ( (num_rows * avg_row_len / 1024), 2) "真实使用空间 k",
             ROUND ( (blocks * 10 / 100) * 8, 2) "预留空间(pctfree) k",
             ROUND (
                (  blocks * 8
                 - (num_rows * avg_row_len / 1024)
                 - blocks * 8 * 10 / 100),
                2)
                "浪费空间 k"
        FROM user_tables
       WHERE temporary = 'N'
    ORDER BY 5 DESC;
    --查看数据库最近检查时间
    select table_name,last_analyzed from dba_tables where owner = upper('desDBaseName');
    
    --开启行移动
    alter table desTable enable ROW MOVEMENT;
    alter table desTable shrink space compact;--compact 只对空间进行紧缩,高水位不下降
    alter table desTable shrink space cascade; --级联删除
    alter table desTable shrink space;--回收空间
    --关闭行移动
    alter table desTable disable ROW MOVEMENT;
    
    --移动有用信息到临时表
    select * from tempTable
    create table tempTable as select * from desTable a
    where  exists(select 1 from ra_mer_base b where b.id=a.main_tb_id) 
    --删除目标表
    truncate table desTable;
    drop table desTable purge;
    --重建目标表(索引等信息需要重建)
    create table desTable as select * from tempTable;
    --删除临时表
    truncate table tempTable;
    drop table tempTable purge;
    
    展开全文
  • 主要介绍了Oracle数据库自带表空间的详细说明,文中给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 这里主要说的场景是磁盘空间本身很大,但表空间对应的数据文件初始化的时候就直接顶满了磁盘空间,导致经常收到磁盘空间满的报警。 一、错误信息 告警内容如下: 【发现异常】地产客储系统数据库Oracle_192.168.xx....
  • 最近调接口的时候接口访问历史报错: 检查以后发现表空间满了,随后把相应表空间进行了扩展,顺带总结了Oracle检查&调整表空间的sql语句以下:--查看某张表的表空间select table_name,tablespace_name from ...
  • 前言 在使用Oracle进行录入测试时,我们会制造许多测试数据,而使用删除后表空间的高水位依旧无法自动下调,导致出现表空间出现空白数据,影响表空间性能的同时也占用了过多的存储空间
  • 近日在维护oracle数据库时发现临时表空间的数据文件temp.dbf从最初的几个G猛增到32G,达到上了磁盘文件的上限。搜索了一下,现将查询到的临时表空间的相关资料以及处理方法简要归纳如下:1、临时表空间的作用:临时...
  • 数据库表空间满了怎么解决 1、你可以运行以下查询来检查一下系统表空间哪些比较大: SQL> select * from (select SEGMENT_NAME,sum(bytes)/1024/1024 sx from dba_segments where tablespace_name=‘SYSTEM’ ...
  • 清理oracle数据库undo表空间(oracle11g)

    千次阅读 2020-06-12 16:54:16
    创建一个命名为undotbs01.dbf的undo表空间,并设置代号为UNDOTBS1,设置起始大小为10M,最大最大为20G(最高不能超过30G);, create undo tablespace UNDOTBS1 datefile '/u02/rmts/oradata/rmts/undotbs01.dbf' size ...
  • 今天在进行Oracle数据库清空后,磁盘空间没有释放,在查了一些资料后解决该问题! 首先,我执行删除数据库用户命令:drop user username cascade; 接着,执行了删除表空间命令:drop tablespace tablespacename ...
  • oracle undo表空间清理

    2019-12-11 01:55:24
    oracle undo表空间爆满处理 产生问题的原因主要以下两点: 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况 有较大事务没有收缩或者没有提交所导制; 说明:本问题在ORACLE系统管理中属于比较...
  • ORACLE 清理SYSAUX表空间

    2021-05-04 00:50:04
    数据库检查中发现SYSAUX表空间占用过大,SYSAUX是ORACLE10G开始提供的功能,用于数据库为SYSTEM表空间减负。用以下语句查出相应的表空间值selecta.tablespace_name,trunc(sum(a.bytes)/1024/1024/1024,2) total,...
  • 应用场景:html数据库服务器A下的一张数据库表重建过,而且数据已经迁移到新表空间下,现遗留了一些原有的表空间数据文件在服务器上,耗费资源,如图所示:linux 原数据库表对应的数据文件:sql 迁移后数据文件:...
  • 1更新数据库相关数据 1.1从Oracle中删除用户和表空间 用管理员账户通过 PL/Sql连接数据库用户名 system,密 码 manager 右键点击空白处如下图选择SQL窗口 戈斗邑I呻 戈斗邑I呻 IK q-3 !je-T =#电.rill ?工具心 h-...
  • 主要给大家介绍了关于Oracle 11g如何清理数据库历史日志的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
  • 操作背景:某业务局点,oracle9208数据库+AIX5306,由于业务增长迅速,相对应的几个数据增长很快,影响系统运行速度。需要对其进行清理。由于该有大量数据如果直接执行delete操作不能很快释放所占用的表空间,需...
  • Oracle 临时表空间满的清理

    千次阅读 2021-05-01 05:58:05
    正常来说,在完成所送select语句、createindex等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段的。但有些有侯我们则会遇到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了数据库仍没有...
  • Oracle的SYSAUX表空间清理张世城【摘要】从10g开始,oracle引进了SYSAUX空间作为SYSTEM的辅助空间,用来存放EM相关的内容,以及统计信息、AWR快照、审计信息等数据。默认情况下,随着时间久了,SYSAUX空间会...
  • 表空间清理 1、先查询空间使用情况 --查询空间使用情况 SELECT a.tablespace_name "空间名", total "空间大小", free "空间剩余大小", (total - free) "空间使用大小", total / (1024 * 1024 * ...
  • 分区所影响的方面可以归类为以下几种:性能、易管理性、数据清理。  下面分别说说分区对每一项的具体影响,  性能:  这一般是分区的主要目的。分区将大变成了小,当where之后的条件体现分区字段的具体值...
  • oracle清理磁盘空间

    2021-05-02 04:35:06
    1、可以清理redo日志,参考https://www.cnblogs.com/vipsoft/archive/2012/08/09/2630664.html2、UNDOTBS01.DBF文件清理(表空间文件,主要就是为了undo,即撤销、回滚,只要有DML操作等,就会产生undo数据,久而久之...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,303
精华内容 8,121
关键字:

oracle数据库表空间清理