Oracle 表空间文件迁移(亲测)

时间:2025-03-30 10:57:16

背景:由于各种原因,在实际工作中可能会出现oracle服务器数据盘空间被占满的情况,这个时候单纯的添加新磁盘,后续表空间文件放新盘的方案已经不适用了,因为源盘已经占用满了,数据库服务会异常,且之前的表空间是自增长的,会一直顶死源盘),这个时候就必须得将这部分没到最大值的表空间文件一起迁移到新盘,如下图所示,第15-17这三个表空间文件目前只有10多G,自增长最大是32G,所以就算你从其他地方清理一部分空间后,这几个文件还是会一直吃当前分区的容量,必须迁走

[oracle@database01 aq1]$ ll
总用量 498303248
-rw-r----- 1 oracle oinstall    10502144 5月  29 10:56 
-rw-r----- 1 oracle oinstall    52429312 5月  29 09:55 
-rw-r----- 1 oracle oinstall    52429312 5月  29 10:56 
-rw-r----- 1 oracle oinstall    52429312 5月  29 04:00 
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_01.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_02.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_03.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_04.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_05.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_06.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_07.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_08.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_09.dbf
-rw-r----- 1 oracle oinstall 32212262912 5月  29 10:56 TS_RZCJ_10.dbf
-rw-r----- 1 oracle oinstall 34313609216 5月  29 10:56 TS_RZCJ_11.dbf
-rw-r----- 1 oracle oinstall 34330386432 5月  29 10:56 TS_RZCJ_12.dbf
-rw-r----- 1 oracle oinstall 34330386432 5月  29 10:56 TS_RZCJ_13.dbf
-rw-r----- 1 oracle oinstall 34330386432 5月  29 10:56 TS_RZCJ_14.dbf
-rw-r----- 1 oracle oinstall 12100575232 5月  29 10:56 TS_RZCJ_15.dbf
-rw-r----- 1 oracle oinstall 11995717632 5月  29 10:56 TS_RZCJ_16.dbf
-rw-r----- 1 oracle oinstall 11995717632 5月  29 10:56 TS_RZCJ_17.dbf
-rw-r----- 1 oracle oinstall  1006641152 5月  29 10:56 
-rw-r----- 1 oracle oinstall   922755072 5月  29 10:56 
-rw-r----- 1 oracle oinstall  7455383552 5月  29 05:24 
-rw-r----- 1 oracle oinstall  5573189632 5月  29 10:56 
-rw-r----- 1 oracle oinstall     5251072 5月  29 10:56 

实际工作步骤

第一:挂盘

  1. 给服务器新增磁盘
  2. 给新磁盘分区,格式化(例如:/dev/vdb1 xfs格式,详细步骤略)
  3. 创建见挂载点目录,(mkdir /u02)
  4. 将新分区挂载到挂载点,并写入开机自动挂载  echo '/dev/vdb1  /u01  xfs defaults  0    0' >>/etc/fstab
  5. 激活挂载:mount -a

第二:创建新表空间文件存放目录

创建目录:mkdir -p  /u02/app/oradata

更改目录属组(具体用户和属组参考源目录,例如: chown -R  oracle:oinstall  /u02/app/)

第三步:切换oracle用户,关闭监听,关闭数据库,挂载数据库

关闭监听

#切换到oracle用户
[root@database01 ~]# su - oracle

#关闭监听
[oracle@database01 ~]$ lsnrctl stop

关闭数据库

[oracle@database01 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Mon May 29 10:56:23 2023

Copyright (c) 1982, 2009, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

 第三步:移动需要移动的表空间文件到新目录

进入源表空间文件所在目录,将需要移动的表空间文件移动到新目录,并更改新目录下文件的属组信息

[oracle@database01 aq1]$ mv TS_RZCJ_15.dbf /u02/app/oradata/
[oracle@database01 aq1]$ mv TS_RZCJ_16.dbf /u02/app/oradata/
[oracle@database01 aq1]$ mv TS_RZCJ_17.dbf /u02/app/oradata/
[oracle@database01 oradata]$ chown -R  oracle:oinstall  /u02/app/)

第四步:挂起数据库,并修改表空间文件信息

挂起数据库

SQL> startup mount
ORACLE instance started.

Total System Global Area 1.3362E+10 bytes
Fixed Size		    2217952 bytes
Variable Size		 6912215072 bytes
Database Buffers	 6375342080 bytes
Redo Buffers		   72069120 bytes
Database mounted.

修改表空间文件信息

语法:alter database rename file ‘表空间文件源路径’  to  '新路径'


SQL> alter database rename file '/u01/app/oradata/aq1/TS_RZCJ_15.dbf' to 
SQL> alter database rename file '/u01/app/oradata/aq1/TS_RZCJ_15.dbf' to '/u02/app/oradata/TS_RZCJ_15.dbf';

Database altered.

SQL> alter database rename file '/u01/app/oradata/aq1/TS_RZCJ_16.dbf' to '/u02/app/oradata/TS_RZCJ_16.dbf';

Database altered.

SQL> alter database rename file '/u01/app/oradata/aq1/TS_RZCJ_17.dbf' to '/u02/app/oradata/TS_RZCJ_17.dbf';

Database altered.

第五步:打开数据库,并启动监听

打开数据库

SQL> alter database open;

Database altered.

SQL> quit 

启动监听

[oracle@database01 ~]$ lsnrctl status

第六:验证数据服务和数据