自己挖坑自己填——某某人如是说。依稀记得两年前冬去春来的时节,某某人给自己挖了一个小小的坑。岁月轮转,两年的光景,洒家来填坑了。
2017年刚刚立春,分公司服务平台准备部署上线,由于当时服务器资源紧张,数据库要和网站、商城共用一台服务器,这台服务器是Linux操作系统。当时平台组也比较忙,于是乎在对Linux一知半解,对Oracle一知半解的情况下硬着头皮在生产环境安装并创建了人生中第一个Linux下的Oracle数据库,也挖了今天要填的坑。
1、 对Linux文件系统不熟,没有关注磁盘分区情况,直接在默认分区下安装了Oracle,并创建了实例,该分区只有50G,当时还剩多少没注意。
2、 在后续使用过程中没有为项目单独创建表空间,直接使用了默认表空间,造成SYSTEM、USERS、SYSAUX表空间越来越大。
3、 后来网站和商城外包开发,他们直接用了我们这个项目的Oracle实例,作为这个实例的一个用户存在,此时我依然没有考虑到空间问题。
4、 后来同事也曾经反映过磁盘空间的问题,因为项目没上量,就直接归咎到网站和商城外包公司那边了,让他们做了清理。
2019年立春还有一个多月,新项目和服务平台共用一个数据库,做数据迁移时终于发现了空间问题。
1、 Oracle所在分区磁盘空间紧张,还剩不到6G。
2、 SYSTEM、USERS、SYSAUX表空间占用率太高,TEMP表空间已满。图上SYSTEM是扩容过的,没扩之前忘记截图了,扩了2G。
新项目上线,随着使用量上升,空间终究是个问题,因此查了查资料,在磁盘分区扩容和表空间转移两个方案中选择了把表空间转移到新的磁盘分区。具体思路及操作步骤如下:
思路:根据第一个图可知还有home分区还很大,可以在这个分区上创建新的表空间文件,然后把现有的数据表的表空间换成新的表空间,这样既可以清理出来root分区磁盘空间,也规范了以后建表使用的表空间文件。实施之前先做了个小实验,在原来表空间上创建了60万记录的表,这个时候USERS表空间变大,然后再把该表迁移到新的表空间,USERS表空间变小了。
一、第一步:使用root用户在新的分区上创建存放Oracle表空间的目录,并为Oracle用户分配目录权限。
第一次从root用户切换到orauser用户时,标识符变成了这个: