【DBA笔记3】Oracle之表空间使用率满及空间不足解决方案(上)

这篇具有很好参考价值的文章主要介绍了【DBA笔记3】Oracle之表空间使用率满及空间不足解决方案(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

问题背景:

问题描述:

解决方案:

操作步骤:

一、查询对应表空间使用情况

二、修改对应表空间 


问题背景:

有项目上出现前台业务功能报错,怀疑是数据库GS表空间满

ORA-01653:unable to extend table GSP### by 7 in tablespace GS

问题描述:

错误的具体内容如下:
ORA-01653: unable to extend table GSP###  by 7 in tablespace GS
翻译:GSP###表在GS表空间不能扩展,应该是表空间不足导致。

原因:

一:表空间的自动扩展功能没有开;

二:表空间自动扩展开了,但是数据文件已自动扩展到上限,最大32G

三:服务器磁盘空间不够用了,数据文件所在的磁盘目录下没有空间了

解决方案:

先查看Oracle数据库表空间大小,然后看一下表空间下的所有的数据文件的自动扩展功能是否打开;若已经打开了看是不是达到了自动扩展的上限,若上限了需要增加数据文件,若没上限那么我们就需要扩大表空间。

操作步骤:

一、查询对应表空间使用情况

 查询表空间使用情况,该sql无需修改

SELECT a.tablespace_name "表空间名",

a.bytes / 1024 / 1024 "表空间大小(M)",

(a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)",

b.bytes / 1024 / 1024 "空闲空间(M)",

round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "使用比"

FROM (SELECT tablespace_name, sum(bytes) bytes

FROM dba_data_files

GROUP BY tablespace_name) a,

(SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest

FROM dba_free_space

GROUP BY tablespace_name) b

WHERE a.tablespace_name = b.tablespace_name

ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC

 发现GSP## 表空间使用比为99.99%(>90%),继续查看该表空间有几个数据文件,该sql需要改tablespace_name

SELECT file_name,

tablespace_name,

bytes / 1024 / 1024 "bytes MB",

maxbytes / 1024 / 1024 "maxbytes MB"

FROM dba_data_files

WHERE tablespace_name = '表空间名称';

 继续查询是否是自动扩展,改tablespace_name

SELECT file_id, file_name, tablespace_name, autoextensible, increment_by

FROM dba_data_files

WHERE tablespace_name = '表空间名称'

ORDER BY file_id desc;

 autoextensible"列对应的值是YES还是NO,若是NO,说明该表空间的自动扩展功能没有开,改成YES就可以了。

二、修改对应表空间 

 
之后有两种改法:一种是增大数据文件大小,一种是增加数据文件数量。

第一种方法:增大数据文件大小

首先找出该表空间对应的数据文件及全路径,该路径对应FILE_NAME字段。

SELECT * FROM dba_data_files t WHERE t.tablespace_name='表空间名称';

修改文件大小 

alter database datafile '全路径的数据文件名称' resize ***M;

第二种方法:增加数据文件数量 

首先要确认再增加一个数据文件,磁盘空间是否足够

 【用操作系统UNIX、Linux中的df -g命令(查看下可以使用的磁盘空间大小)】
新增一个数据文件,全路径的数据文件名称为该新增数据文件的全路径文件名称。大小为***M,自动扩展功能打开,且该数据文件的最大扩展值为20G。

alter tablespace 表空间名称 add datafile '全路径的数据文件名称' size ***M

autoextend on maxsize 20G;

 验证已经增加的数据文件,现在应看到GS表空间下有新建的数据文件,且GS表空间使用占比降了下来了。

SELECT file_name, file_id, tablespace_name

FROM dba_data_files

WHERE tablespace_name = '表空间名称'

到这里问题应该已经解决,再回头去验证前端功能就可以了。

PS:分享一些自己总结的关于表空间比较实用的几个sql,下节分享下通过job任务自动增加数据文件的方案

--查看现所有表空间使用率(包含临时表空间)
select * from (
Select a.tablespace_name,
(a.bytes- b.bytes) "表空间使用大小(BYTE)",
a.bytes/(1024*1024*1024) "表空间大小(GB)",
b.bytes/(1024*1024*1024) "表空间剩余大小(GB)",
(a.bytes- b.bytes)/(1024*1024*1024) "表空间使用大小(GB)",
to_char((1 - b.bytes/a.bytes)*100,'99.99999') || '%' "使用率"
from (select tablespace_name,
sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name,
sum(bytes) bytes
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
union all
select c.tablespace_name,
d.bytes_used "表空间使用大小(BYTE)",
c.bytes/(1024*1024*1024) "表空间大小(GB)",
(c.bytes-d.bytes_used)/(1024*1024*1024) "表空间剩余大小(GB)",
d.bytes_used/(1024*1024*1024) "表空间使用大小(GB)",
to_char(d.bytes_used*100/c.bytes,'99.99999') || '%' "使用率"
from
(select tablespace_name,sum(bytes) bytes
from dba_temp_files group by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used
from v$temp_extent_pool group by tablespace_name) d
where c.tablespace_name = d.tablespace_name
)
order by tablespace_name;

--查询现所有表空间文件存放目录,file_name 就是文件存放路径
select b.file_id,b.file_name 数据文件路径,
       b.tablespace_name 表空间名称,
       b.autoextensible,
       b.bytes / 1024 / 1024 大小M,
       (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024 已使用M,
       substr((b.bytes - sum(nvl(a.bytes, 0))) / (b.bytes) * 100, 1, 5) 利用率
from dba_free_space a, dba_data_files b
where a.file_id = b.file_id
group by b.file_id,b.tablespace_name, b.file_name, b.bytes,b.autoextensible
order by b.file_id;

--单纯删除表空间
drop tablespace 表空间名称;

--删除表空间及内容(表空间名称要大写)
drop tablespace "表空间名称" including contents;

--完全删除(表空间 + 数据文件)
drop tablespace "表空间名称" including contents and datafiles cascade constraints;

--创建表空间
create tablespace 表空间名称
logging 
datafile '数据文件路径' 
size 25000m 
autoextend on 
next 100m maxsize 30000m 
extent management local;

--更改表空间数据文件大小及设置自动扩展
alter database datafile 原数据文件路径 autoextend on;
alter database datafile 原数据文件路径 resize 1024M;

--为表空间增加新的数据文件并设置自动扩展(表空间满32G后不能再自动扩展)
alter tablespace '表空间名称' add datafile '新数据文件路径' size 1000m autoextend on next 100m;

--查看当前数据库默认临时表空间:
select * from database_properties
where property_name='DEFAULT_TEMP_TABLESPACE';

--获取当时创建某一表空间的语句
SELECT dbms_metadata.get_ddl('TABLESPACE', '表空间名称') FROM dual;

--为TEMP临时表空间增加新的数据文件并设置自动扩展
alter tablespace TEMP add tempfile '/****' size 1000m autoextend on next 100m;


 文章来源地址https://www.toymoban.com/news/detail-420200.html


 

到了这里,关于【DBA笔记3】Oracle之表空间使用率满及空间不足解决方案(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python-在系统托盘显示CPU使用率和内存使用率

    一、添加轮子 1.添加托盘区图标库  infi.systray 2.添加图像处理库  Pillow 3.添加  psutil  来获取CPU、内存信息 二、完整代码 三、实际效果展示

    2024年02月05日
    浏览(67)
  • io使用率高运行堵塞怎么解决?linux系统由io使用率高引起的运行堵塞的解决方法

    1.在宝塔查看服务器负载100%,而cpu和内存使用率都正常 输入top命令查看平均负载:

    2024年02月15日
    浏览(40)
  • Delphi的使用率和前景

    Delphi是一种基于Pascal语言的高级编程语言,由美国Borland公司(后来改名为CodeGear,现在归属于Embarcadero公司)开发。自1995年问世以来,Delphi已经经历了20多年的发展历程,成为了Windows平台上广泛应用的开发工具之一。本文将从Delphi的历史、特点、优缺点和应用实例等方面,探

    2024年02月13日
    浏览(39)
  • 【linux】查看CPU的使用率

    命令1:top 总体系统信息 uptime:系统的运行时间和平均负载。 tasks:当前运行的进程和线程数目。 CPU:总体 CPU 使用率和各个核心的使用情况。 内存(Memory):总体内存使用情况、可用内存和缓存。 查看 CPU 使用率 以下是一些常用的CPU使用率相关字段: %Cpu(s):显示整个系统

    2024年04月23日
    浏览(58)
  • CPU 使用率和负载Load

    优质博文:IT-BLOG-CN CPU 使用率是 CPU 处理非空闲任务所花费的时间百分比 。例如单核 CPU 1s 内非空闲态运行时间为 0.8s ,那么它的 CPU 使用率就是 80% ;双核 CPU 1s 内非空闲态运行时间分别为 0.4s 和 0.6s ,那么,总体 CPU 使用率就是 (0.4s + 0.6s) / (1s * 2) = 50% ,其中 2 表示 CPU 核数

    2024年02月03日
    浏览(50)
  • 测试:虚拟机查看CPU使用率

    Windows虚拟机 任务管理器 : 在虚拟机中,您可以打开任务管理器(Ctrl + Shift + Esc),然后在“进程”标签下查看CPU使用率。 PowerShell : 使用PowerShell命令 Get-VM | Select-Object Name, CPUUsage 可以查询虚拟机的CPU使用率。 VMware vSphere Client : 如果您的虚拟机运行在VMware环境中,可以使用

    2024年02月01日
    浏览(73)
  • qt使用QCustomplot绘制cpu和内存使用率图

                QCustomPlot是一个开源的Qt C++图表库,用于可视化数据。该库提供了多种类型的可定制的图表,包括散点图、线图、柱状图和等高线图等。它还支持自定义绘制,可以创建任意形状和大小的元素,并使其与其他元素交互。QCustomPlot易于集成到现有的Qt应用程序中

    2024年02月09日
    浏览(50)
  • linux /var分区使用率高处理

    某个数据库机器报/var分区使用率高 [root@hydb2 ~]#  df -h Filesystem                     Size  Used Avail Use% Mounted on devtmpfs                        95G   64K   95G   1% /dev tmpfs                           95G  644M   94G   1% /dev/shm tmpfs          

    2024年02月16日
    浏览(42)
  • linux top命令中 cpu 利用率/mem 使用率与load average平均负载计算方式

    top 命令是 Linux 上一个常用的系统监控工具,它经常用来监控 Linux 的系统状态,是常用的性能分析工具,能够显示较全的系统资源信息,包括系统负载,CPU 利用分布情况,内存使用,进程资源占用情况等。 如下示例: 这里主要看进程的 CPU%, MEM% 和 load averge 字段。 该字段指

    2024年02月03日
    浏览(53)
  • Android 性能优化 命令行查看CPU使用率

    本文介绍cpu使用率概念,和使用ps命令、top命令和dumpsys cpuinfo命令来查看cpu使用率,帮助我们了解应用程序在运行过程中的整体状态和各个线程状态。 CPU利用率指系统中CPU的使用情况,通常以百分比表示CPU使用率。 在多核情况下,CPU使用率指的是所有核心的平均使用率。 通

    2024年02月05日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包