数据库空间存储已满,如何清理释放空间

您所在的位置:网站首页 linux如何清理内存空间不足数据 数据库空间存储已满,如何清理释放空间

数据库空间存储已满,如何清理释放空间

2024-07-05 08:19:41| 来源: 网络整理| 查看: 265

1.恢复改为简单模式 收缩文件 不是收缩数据库

第一种方法:清空日志。 1.打开企业管理器,直接在查询分析器里执行:(如果是FULL完整类型,修改为SIMPLE简单类型)

alter database [数据库名] set recovery simple 

或者 右键你要压缩的数据库--属性--选项--恢复模式--简单

2.第二种方法:清理事务日志,压缩文件

--查询数据库内存 SELECT  ROUND(CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0,0) + 1  ,*  FROM sys.database_files

--压缩文件

DBCC SHRINKFILE('EverproOA_ldf',5000) ---------------------  作者:Ok北京青年520  来源:CSDN  原文:https://blog.csdn.net/qq_27252063/article/details/79065365 

2.把无用的index删除掉

 

问题现象:在维护项目时经常出现系统不能登录,前台提示ORA-00257,判断是数据库归档空间已满

技术分析:登录到数据库,查看归档配置

SQL> archive log list; Database log mode      Archive Mode Automatic archival     Enabled Archive destination    USE_DB_RECOVERY_FILE_DEST

查看具体归档目录

SQL>show parameter db_recovery; NAME                                 TYPE             VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest                string           /u01/app/oracle/flash_recovery_area db_recovery_file_dest_size           big integer       10G

查看归档已占用的空间(select * from V$FLASH_RECOVERY_AREA_USAGE),归档空间已经近10G空间。

解决方案:因当时客户要求紧急,临时的解决方案是增加归档目录空间,增加后前台业务可以正常运行。

SQL> alter system set db_recovery_file_dest_size=30G scope=both;

1. 查看备份方案:因客户方已有专业的备份软件,每天备份并删除备份之前的归档日志文件,所以备份方案不需要修正。

SQL> select name,completion_time,status from v$archived_log;

2. 检查归档日志的增长情况,在网上参考修改查询语句,查询最近一周内,数据库归档的频率

SELECT TO_CHAR(first_time, 'MM/DD') DAY,

 SUM(DECODE(TO_CHAR(first_time, 'HH24'), '00', 1, 0)) H00,

SUM(DECODE(TO_CHAR(first_time, 'HH24'), '01', 1, 0)) H01,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '02', 1, 0)) H02,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '03', 1, 0)) H03,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '04', 1, 0)) H04,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '05', 1, 0)) H05,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '06', 1, 0)) H06,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '07', 1, 0)) H07,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '08', 1, 0)) H08,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '09', 1, 0)) H09,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '10', 1, 0)) H10,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '11', 1, 0)) H11,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '12', 1, 0)) H12,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '13', 1, 0)) H13,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '14', 1, 0)) H14,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '15', 1, 0)) H15,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '16', 1, 0)) H16,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '17', 1, 0)) H17,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '18', 1, 0)) H18,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '19', 1, 0)) H19,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '20', 1, 0)) H20,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '21', 1, 0)) H21,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '22', 1, 0)) H22,        SUM(DECODE(TO_CHAR(first_time, 'HH24'), '23', 1, 0)) H23,        COUNT(*) || '(' ||        trim(to_char(sum(blocks * block_size) / 1024 / 1024, '99,999.9')) || 'M)' TOTAL   FROM (select max(blocks) blocks,                max(block_size) block_size,                max(first_time) first_time           from v$archived_log a          where COMPLETION_TIME > sysdate - 7            and dest_id = 1          group by sequence#)  group by TO_CHAR(first_time, 'MM/DD'), TO_CHAR(first_time, 'YYYY/MM/DD')  order by TO_CHAR(first_time, 'YYYY/MM/DD') desc

 查看结果每天峰值切换频率达到近600次,

 查看数据库日志文件的大小 SQL>select distinct(bytes/1024/1024) MB from v$log;  每个在线日志文件 50 MB 大小。

所以估计峰值归档日志会达到30G,因切换日志时可能日志文件未写满,所以db_recovery_file_dest_size参数暂时调整到30G。

总结方案: 对系统日志归档大小要监控,估计相应的所需空间,避免日志空间满影响系统运行。 ---------------------  作者:guanzhong2008  来源:CSDN  原文:https://blog.csdn.net/guanzhong2008/article/details/47781799 

3.可以看看那几张索引比较大的表,看看哪些索引是没必要的,删除掉,然后再简单模式下压缩数据库文件和日志文件。

在MySQL数据库中,如果不指定innodb_file_per_table参数,单独存在每个表的数据,MySQL的数据都会存放在ibdata1文件。 mysql ibdata1存放数据,索引等,是MYSQL的最主要的数据。

步骤:

1,备份数据库

从命令行进入MySQL Server 5.1/bin 备份全部数据库,执行命令mysqldump -q -uusername -pyourpassword --add-drop-table --all-databases > /backup/all.sql

除数据库 drop database db1; drop database db2;

此处不删除应用数据库,在全库恢复数据库时,就会报异常错误,一些表的*.ibd会报不存在。

解决方式:

movo db1 /backup/db1_bak

movo db2 /backup/db2_bak

做完此步后,然后停止数据库。

2,修改mysql配置文件

修改my.cnf文件,增加下面配置

innodb_file_per_table

对每张表使用单独的innoDB文件, 修改/etc/my.cnf文件

3,删除原数据文件

删除原来的ibdata1文件及日志文件ib_logfile*,删除data目录下的应用数据库文件夹(mysql,test,information_schema数据库本身文件夹不要删除)

4,还原数据库

启动数据库服务

从命令行进入MySQL Server 5.1/bin 还原全部数据库,执行命令mysql -uusername -pyourpassword < /all.sql

大公告成。

经过以上几步后,可以看到新的ibdata1文件就只有几十M了,数据及索引都变成了针对单个表的小ibd文件了,它们在相应数据库的文件夹下面。

转自:http://www.cnblogs.com/alang85/archive/2012/11/28/2792183.html

4.做日志收缩或者分离

 

转载说明: 以下方法我已经试验过了,的确是可行的:

$  uname -a Linux minjing 3.5.0-44-generic #67-Ubuntu SMP Tue Nov 12 19:36:14 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux $ dpkg --get-selections|grep linux-image linux-image-3.5.0-17-generic install linux-image-3.5.0-39-generic install linux-image-3.5.0-40-generic install linux-image-3.5.0-41-generic install linux-image-3.5.0-42-generic install linux-image-3.5.0-43-generic install linux-image-3.5.0-44-generic install linux-image-extra-3.5.0-17-generic install linux-image-extra-3.5.0-39-generic install linux-image-extra-3.5.0-40-generic install linux-image-extra-3.5.0-41-generic install linux-image-extra-3.5.0-42-generic install linux-image-extra-3.5.0-43-generic install linux-image-extra-3.5.0-44-generic install linux-image-generic install $ sudo apt-get remove linux-image-3.5.0-17-generic

$sudo apt-get remove linux-image-3.5.0-39-generic

$sudo apt-get remove linux-image-3.5.0-40-generic

$sudo apt-get remove linux-image-3.5.0-41-generic

$sudo apt-get remove linux-image-3.5.0-42-generic

$sudo apt-get remove linux-image-3.5.0-43-generic

原文链接:

http://blog.csdn.net/hadahuluwa/article/details/7435070

在安装ubuntu11.10的时候,给/boot文件目录分配空间的时候,是100M,/boot可以单独分成一个区,也可以不单独分,在/(根目录)下也会自动为其创建一个boot目录。顺便提一下,linux分区是树结构的,/为根目录,在其目录下会分各个执行不同工作的目录,所以在分区的时候完全可以只分一个根分区和一个swap(虚拟内存)分区。如果分的细微一点,为/boot单独分区的话,100M足够,boot文件里面存放的是系统引导文件和内核的一些东西,这些东西100M是足够容纳的。而大家都知道linux内核一直在更新,跟新后,旧的内核就不在使用,但旧的内核文件还在boot里面,占据着空间,更新几次过后boot文件就会被占满,显示boot磁盘空间不足。这时为了更新需要将不用的内核文件删除,释放空间。 方法: 1: 在终端下察看已经安装的旧的内核: ctrl+alt+t——>进入终端——>输入命令:dpkg --get-selections|grep linux 如下:

linux-后面带image的是旧的内核。因为我已经将旧的内核删除了,所以后面显示deinstall,不删除的话是install。 我们要做的就是将后面带image的linux内核删除。 2:删除操作: sudo apt-get remove linux-image-(版本号)(就是上面带image的版本) 有卸载不完全的(有提示),可以用 sudo apt-get autoremove来删除。 Ok,这样boot空间就大大的有啦,呵呵。。。。。。

另外:根据另一篇文章的推荐:

可以使用一款优化软件如ubuntu-tweak  里面有个系统清道夫 可以帮助用户清理缓存、旧内核等,这个还没有实验过.

参见:

http://blog.sina.com.cn/s/blog_6b7bd17e010157sh.html ---------------------  作者:yypony  来源:CSDN  原文:https://blog.csdn.net/yypony/article/details/17260153 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭