文章目錄
前言
在單實例數據庫中可能會遇到表空間文件本地存儲空間不夠放修改表空間最大值,如果添加了卷管理的可以對本地存儲位置進行擴展,但沒有的情況就需要遷移表空間到其他位置,今天就實際按理說一下具體操作修改表空間最大值,其實這里可以有兩種這種情況的處理方法:
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
如上所示/目錄已達到98%,現實現目標將/目錄的表空間遷移到/下
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.將表空間狀態設為
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.表空間狀態設為
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