文章目录
前言
在单实例数据库中可能会遇到表空间文件本地存储空间不够放,如果添加了卷管理的可以对本地存储位置进行扩展,但没有的情况就需要迁移表空间到其他位置,今天就实际按理说一下具体操作,其实这里可以有两种这种情况的处理方法:
1、表空间不变更本地存储位置,新的dbf数据文件存放到新的位置上。
2、表空间整体迁移到新挂载的路径下
提示:以下是本篇文章正文内容,下面案例可供参考
一、数据库本地迁移
1.登录对应数据库
以下数据已脱敏
SQL>sqlplus / as sysdba
2.确认表空间以及要迁移的空间
[root@inlinkdb1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.7G 0 3.7G 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 3.7G 648K 3.7G 1% /run
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/vda1 40G 12G 26G 33% /
tmpfs 756M 0 756M 0% /run/user/0
tmpfs 756M 0 756M 0% /run/user/1000
/dev/vdb1 689G 639G 16G 98% /oracle
/dev/vdb2 319G 13G 291G 5% /oracle2
如上所示/oracle目录已达到98%,现实现目标将/oracle目录的表空间迁移到/oracle2下
SQL> @/home/oracle/tbs
TABLESPACE_NAME SUM_SPACE(M) SUM_BLOCKS USED_SPACE(M) USED_RATE(%) FREE_SPACE(M)
------------------------------------------------------------ ------------ ---------- ------------- ------------ -------------
SYSTEM 350 44800 340.06 97.16 9.94
SYSAUX 2350 300800 2228.06 94.81 121.94
***DATA 10240 1310720 8833.75 86.27 1406.25
USERS 35071.25 4489120 27328.37 77.92 7742.88
WB_****** 10240 1310720 7058.37 68.93 3181.63
KETTLE_DATA 61440 7864320 29705.06 48.35 31734.94
UNDOTBS1 5770 738560 2400.81 41.61 3369.19
flexsche_data 20480 2621440 6667.19 32.55 13812.81
****_DATA 1024 131072 144.87 14.15 879.13
****_DATA 3244 415232 325.19 10.02 2918.81
***_DATE 1024 131072 13.5 1.32 1010.5
TABLESPACE_NAME SUM_SPACE(M) SUM_BLOCKS USED_SPACE(M) USED_RATE(%) FREE_SPACE(M)
------------------------------------------------------------ ------------ ---------- ------------- ------------ -------------
****_DATA 1024 131072 9.87 .96 1014.13
****_DATA 10240 1310720 4.12 .04 10235.88
****_TEMP 1024 131072 0
****DATA_TEMP 1024 131072 0
TEMP 795 101760 0
****_TEMP 1024 131072 0
WB_****_TEMP 1024 131072 0
****_TEMP 1024 131072 0
****_TEMP 1024 131072 0
****_TEMP 1024 131072 0
KETTLE_TEMP 3072 393216 0
22 rows selected.
SQL>
3.确认要迁移表空间位置
示例:USERS
SQL> select FILE_NAME,FILE_ID,TABLESPACE_NAME from dba_data_files where tablespace_name ='USERS';
FILE_NAME FILE_ID TABLESPACE_NAME
---------- ------------------------------ ---------- --------- ----
/oracle/app/oracle/oradata/****/users01.dbf 6 USERS
/oracle/app/oracle/oradata/****/users02.dbf 7 USERS
4.将表空间状态设为offline
SQL>alter tablespace USERS offline;
Tablespace altered.
5.拷贝dbf数据文件到新路径
注:USERS现有所有dbf文件都要拷贝哦
[oracle@*****db1 ~]$ cp /oracle/app/oracle/oradata/****/users01.dbf /oracle2/datafile/******
[oracle@*****db1 ~]$ cp /oracle/app/oracle/oradata/****/users02.dbf /oracle2/datafile/******
6.数据库中修改表空间指向地址
SQL>alter database rename file '/oracle/app/oracle/oradata/****/users01.dbf' to '/oracle2/datafile/******/users01.dbf';
Database altered.
SQL>alter database rename file '/oracle/app/oracle/oradata/****/users02.dbf' to '/oracle2/datafile/******/users02.dbf';
Database altered.
7.表空间状态设为online
SQL> alter tablespace USERS online;
Tablespace altered.
8.确认变更结果
SQL> select FILE_NAME,FILE_ID,TABLESPACE_NAME from dba_data_files where tablespace_name ='USERS';
FILE_NAME FILE_ID TABLESPACE_NAME
---------- ------------------------- ---------- --------------
/oracle2/datafile/******/users01.dbf 6 USERS
/oracle2/datafile/******/users02.dbf 7 USERS
9.原路径位置删除dbf数据文件
[oracle@*****db1 ~]$ rm -rf /oracle/app/oracle/oradata/****/users01.dbf
[oracle@*****db1 ~]$ rm -rf /oracle/app/oracle/oradata/****/users02.dbf