当前位置:首页 » 数据仓库 » 数据库表空间不足
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库表空间不足

发布时间: 2023-07-12 07:12:02

数据库表空间不足,怎么解决

以Mysql 8.0 来说,通过查看 8.0 的官方文档得知,8.0 的临时表空间分为会话临时表空间和全局临时表空间,会话临时表空间存储用户创建的临时表和当 InnoDB 配置为磁盘内部临时表的存储引擎时由优化器创建的内部临时表,当会话断开连接时,其临时表空间将被截断并释放回池中;也就是说,在 8.0 中有一个专门的会话临时表空间,当会话被杀掉后,可以回收磁盘空间;而原来的 ibtmp1 是现在的全局临时表空间,存放的是对用户创建的临时表进行更改的回滚段,在 5.7 中 ibtmp1 存放的是用户创建的临时表和磁盘内部临时表;

也就是在 8.0 和 5.7 中 ibtmp1 的用途发生了变化,5.7 版本临时表的数据存放在 ibtmp1 中,在 8.0 版本中临时表的数据存放在会话临时表空间,如果临时表发生更改,更改的 undo 数据存放在 ibtmp1 中;

总结:在 mysql5.7 时,杀掉会话,临时表会释放,但是仅仅是在 ibtmp 文件里标记一下,空间是不会释放回操作系统的。如果要释放空间,需要重启数据库;在 mysql8.0 中可以通过杀掉会话来释放临时表空间。

㈡ SQL 数据库存储空间不足

一、可能是数据库的MDF文件存放的物理磁盘空间已满,这种问题比较棘手,必须要转移数据库文件到其它磁盘
二、可能是在建立数据库时MDF指定了最大空间限制,打开企业管理器,在指定的数据库上选择属性,在数据文件中设定为文件增长不受限制或大一点数据就可以了!
我还没碰到过其它的情况,以上两点仅供参考!

㈢ oracle数据库用imp命令导入数据库时报1659的错误,怎么解决

oracle在导入数据时报1659的错误的原因主要是数据库表空间剩余空间不足引起的。

分析原因

1、表空间剩余空间不足。

使用下面语句,查看表空间剩余空间

selectUpper(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(selecttablespace_name,

round(sum(bytes)/(1024*1024),2)total_bytes,

round(max(bytes)/(1024*1024),2)max_bytes

fromsys.dba_free_space

groupbytablespace_name)f,

(selectdd.tablespace_name,

round(sum(dd.bytes)/(1024*1024),2)tot_grootte_mb

fromsys.dba_data_filesdd

groupbydd.tablespace_name)d

whered.tablespace_name=f.tablespace_name

orderbyf.tablespace_name;

表空间剩余空间不足时,可以根据原数据库表空间大小增加表空间。

altertablespace表空间名adddatafile'数据文件名'size数据文件大小;

2、剩余表空间还很多。

使用下面语句查看原数据库表表定义,找到initial_extent值大的表,将这些表的

创建语句导出后修改initial_extent值,在目标数据库中创建后再导入数据,导入时

增加参数ignore=y。

selecttable_name,initial_extent

fromuser_tables

whereinitial_extentisnotnull

orderbyinitial_extentdesc

如果找不到原数据库,可以使用

impuserid/userid@service_namefile=dmp文件名indexfile=index文件名rows=nfull=Y

命令将dmp文件中创建表的语句导入到indexfile文件中,查看indexfile如下:

REMCREATETABLE"TEST"."DM_KJKM_COPY"("KJZDMB_DM"VARCHAR2(100)

REM ENABLE,"KMID"NUMBER(20,0),"KMBM"VARCHAR2(100),"KMMC"

REMVARCHAR2(500),"KMQC"VARCHAR2(1000),"KMLB_DM"VARCHAR2(100),

REM ...

使用文本编辑工具,查找INITIAL将过大的初始值改为65536后,将REM去除后,在数据库中创建后再使用exp导入数据,导入时增加参数ignore=y。

㈣ 怎么查看数据库表空间足不足oracle

这个方法很多吧,可以使用语句查询,也可以使用oracle数据库工具查看,还可以用EM。
我这有个自己写的sql脚本,是平时自己看公司数据库表空间状态时用的。你可以参考下:
.查看所有表空间的碎片程度(值在30以下表示碎片很多)
select tablespace_name,sum(bytes),sum(free),sum(free)*100/sum(bytes) from (select
b.file_id file_ID,
b.tablespace_name tablespace_name,
b.bytes Bytes,
(b.bytes-sum(nvl(a.bytes,0))) used,
sum(nvl(a.bytes,0)) free,
sum(nvl(a.bytes,0))/(b.bytes)*100 Percent
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id) group by tablespace_name order by sum(free)*100/sum(bytes);
查看表空间是否自动扩展
select file_name,autoextensible,increment_by from dba_data_files;
表空间自动扩展
alter database datafile 'path:\datafile name' autoextend on next 1M maxsize 100M;

表空间大小
select tablespace_name,count(*),sum(blocks),sum(bytes)/1024/1024
from dba_data_files
group by tablespace_name;
使用情况
select df.tablespace_name "表空间名",totalspace "总空间M",freespace "剩余空间M",round((1-freespace/totalspace)*100,2) "使用率%"
from
(select tablespace_name,round(sum(bytes)/1024/1024) totalspace
from dba_data_files
group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace
from dba_free_space
group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name;

㈤ 数据库空间不足怎么解决

一、用户数据库搬家
操作方法有以下两种
方法1:在企业管理器中进行
(1)在企业管理器中选定要搬家的数据库名,在其上单击鼠标右键,出现如图1所示对话框。
(2)选中“所有任务”,在其子菜单中单击“分离数据库”。
(3)将该数据库的数据文件和日志文件从旧的位置(如D:\MSSQL\Data)拷贝到新的位置(如E:\SQLDataNew)。
(4)再在企业管理器中选中“数据库”文件夹,在其上单击鼠标右键,在出现的对话框中选中“所有任务”,在其子菜单中单击“附加数据库”。
(5)在出现的“附加数据库”对话框中,选择数据库的两个文件的新位置。
方法2:用SQL系统存储过程sp_detach_db/sp_attach_db实现
(1)使用下面语句分离数据库:
USE master
GO
EXEC sp_detach_db 'mydb'
GO
(2)将该数据库的数据文件和日志文件从旧的位置拷贝到新的位置。
(3)使用下面语句重新附加数据库:
USE master
GO
EXEC sp_attach_db
'mydb', 'E:\SQLDataNew\mydbdata.mdf', 'E:\SQLDataNew\mydblog.ldf''
GO
二、系统数据库搬家
1.master数据库搬家
(1)由于SQL Server每次启动的时候都需要读取master数据库,因此必须在企业管理器中改变SQL Server启动参数中master数据文件和日志文件的路径。
在 SQL Server属性的“常规”选项卡下面有一个叫做“启动参数”的按钮,单击后可以看到所示的界面。
其中,-d用来指定master数据库文件的路径,而–l用来指定master数据库日志文件的路径。
删除旧的master数据库文件和日志文件的路径,添加新的master数据文件和日志文件所在的路径,如:
-dE:\ SQLDataNew \master.mdf
-lE:\ SQLDataNew \mastlog.ldf
(2)停止SQL Server服务,将master.mdf文件和mastlog.ldf文件拷贝到新的位置,如E:\ SQLDataNew文件夹中。
(3)重新启动服务即可。
小技巧:如果在“启动参数”添加的master数据库文件和日志文件的路径或文件名有误,就会造成SQL Server启动不起来。而此时想改正错误又因SQL Server启动不了而重设不了“启动参数”。其实这两个文件路径和文件名是放置在注册表HKEY_LOCAL_MACHINE\SOFWARE\Microsoft\Miccrosoft SQL Server\你安装SQL服务器的名\MSSQLServer\Parrmeters下的参数SQLArg1和SQLArg2中,修改这两个参数的值即可。
2. msdb数据库和model数据库搬家
(1)对于msdb数据库和model数据库,我们不能在企业管理器中实现分离和附加,只能用sp_detach_db和sp_attach_db存储过程来分离和附加这两个数据库。
其中,对于msdb数据库,还应确保SQL Server代理当前没有运行,否则sp_detach_db存储过程将运行失败,并返回如下消息:
“无法除去数据库 'msdb' ,因为它当前正在使用。”
(2)调出如图4所示的“启动参数”对话框,添加新参数-T3608。这样,启动SQL Server,它就不会恢复除master之外的任何数据库。
(3)重新启动SQL Server,再用下面命令分离msdb或者model数据库:
EXEC sp_detach_db 'msdb'
GO
(4)将数据文件和日志文件移到新的位置,然后再用下面命令重新附加msdb数据库或者model数据库:
USE master
GO
EXEC sp_attach_db
'msdb', ‘E:\SQLDataNew\msdbdata.mdf', ' E:\SQLDataNew\msdblog.ldf '
GO
(5)在企业管理器中,从“启动参数”框中删除-T3608跟踪标记,再停止并重新启动SQL Server。
3. tempdb数据库搬家
对于tempdb数据库,则可以直接使用ALTER DATABASE语句来为数据文件和日志文件指定新的存放位置,如下所示:
USE master
GO
ALTER DATABASE tempdb MODIF
Y FILE (NAME=tempdev, FILENAME ='E:\SQLDataNew \tempdb.mdf')
GO
ALTER DATABASE tempdb MODIF
Y FILE(NAME=templog, FILENAME=
' E:\SQLDataNew \templog.ldf')
GO
至此,SQL Server 中数据库全部搬家完成。

㈥ oracle10g数据库如何扩充表空间

oracle10g数据库扩充表空间是通过增加数据文件的大小来实现的。
如果发现某个表空间存储空间不足时,可以为表空间添加新的数据文件,扩展表空间大小。但是一般建议预先估计表空间所需的存储空间大小,然后为它建立若干适当大小的数据文件。
以下是扩大TBS_TR_IND这个表空间的sql命令:
ALTER TABLESPACE TBS_TR_IND
ADD DATAFILE '/oradata/rTBS_TR_IND_002.dbf' --给rTBS_TR_IND_002.dbf这个数据文件增加32G空间
SIZE 32G
AUTOEXTEND OFF;
SQL> ALTER TABLESPACE TBS_EDS_DAT
ADD DATAFILE 'G:\datafile\TBS_EDS_DAT01.DBF' --给TBS_EDS_DAT01.DBF增加100M空间
SIZE 100M

㈦ linux下创建数据库磁盘空间不足

. 追加硬盘

关闭VM中的Linux操作系统,然后点击“编辑虚拟机设置”,然后追加一块硬盘(我试过了,好像追加的硬盘不能超过4GB,我追加了一块3.5GB的)

2. 给追加的硬盘分区并格式化

a. 启动VM中的Linux

b. 假定Linux中已经有一块硬盘/dev/sda,那么新增一块硬盘就是/dev/sdb,再增加一块就是/dev/sdc ...... 以此类推,

c. 以root用户登录

d. 使用 fdisk 命令对硬盘进行分区
fdisk /dev/sdb
p 打印分区表
t 转换分区表
w 写进分区表
n 新建分区 (最多4个主分区,第一个分区是/dev/sdb1,第二个是/dev/sdb2 ...... 以此类推)
d 删除分区
v 检查分区

e. 对新建的分区格式化
mkfs - 支持ext2,ext3,vfat,msdos,jfs,reiserfs等
用法1:mkfs -t
例:#mkfs -t ext3 /dev/sdb1
用法2:mkfs.
例:#mkfs.vfat /dev/sdb1

mke2fs-支持ext2/ext3文件系统
用法:mke2fs [-j]
例:#mke2fs -j /dev/sdb1
注: mke2fs加上-j的话,意思是加日志,就是ext3的分区。

3. 把追加的硬盘挂载到文件系统

mount /dev/sdb1 /oracledata
注: /oracledata目录要预先建好,如果前面的操作都成功了 df -am 命令就可以看到新挂载的硬盘了,这时候就可以正常使用了