Linux下Oracle数据表更换表空间

本文详细记录了在Linux系统中,由于Oracle数据库的SYSTEM、USERS、SYSAUX表空间占用过高,导致磁盘空间紧张的问题,以及如何通过创建新表空间并迁移数据表来解决这一问题的步骤。作者首先介绍了问题背景,然后逐步讲解了如何创建新的表空间,迁移数据表,重建索引,调整用户默认表空间,并收缩原有表空间文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己挖坑自己填——某某人如是说。依稀记得两年前冬去春来的时节,某某人给自己挖了一个小小的坑。岁月轮转,两年的光景,洒家来填坑了。

2017年刚刚立春,分公司服务平台准备部署上线,由于当时服务器资源紧张,数据库要和网站、商城共用一台服务器,这台服务器是Linux操作系统。当时平台组也比较忙,于是乎在对Linux一知半解,对Oracle一知半解的情况下硬着头皮在生产环境安装并创建了人生中第一个Linux下的Oracle数据库,也挖了今天要填的坑。

1、 对Linux文件系统不熟,没有关注磁盘分区情况,直接在默认分区下安装了Oracle,并创建了实例,该分区只有50G,当时还剩多少没注意。

2、 在后续使用过程中没有为项目单独创建表空间,直接使用了默认表空间,造成SYSTEM、USERS、SYSAUX表空间越来越大。

3、 后来网站和商城外包开发,他们直接用了我们这个项目的Oracle实例,作为这个实例的一个用户存在,此时我依然没有考虑到空间问题。

4、 后来同事也曾经反映过磁盘空间的问题,因为项目没上量,就直接归咎到网站和商城外包公司那边了,让他们做了清理。

2019年立春还有一个多月,新项目和服务平台共用一个数据库,做数据迁移时终于发现了空间问题。

1、 Oracle所在分区磁盘空间紧张,还剩不到6G。

clip_image001

2、 SYSTEM、USERS、SYSAUX表空间占用率太高,TEMP表空间已满。图上SYSTEM是扩容过的,没扩之前忘记截图了,扩了2G。

clip_image003

新项目上线,随着使用量上升,空间终究是个问题,因此查了查资料,在磁盘分区扩容和表空间转移两个方案中选择了把表空间转移到新的磁盘分区。具体思路及操作步骤如下:

思路:根据第一个图可知还有home分区还很大,可以在这个分区上创建新的表空间文件,然后把现有的数据表的表空间换成新的表空间,这样既可以清理出来root分区磁盘空间,也规范了以后建表使用的表空间文件。实施之前先做了个小实验,在原来表空间上创建了60万记录的表,这个时候USERS表空间变大,然后再把该表迁移到新的表空间,USERS表空间变小了。

一、第一步:使用root用户在新的分区上创建存放Oracle表空间的目录,并为Oracle用户分配目录权限。

第一次从root用户切换到orauser用户时,标识符变成了这个:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值