实现把用户表空间中的数据文件从某一个路径移动到另一个路径(备注:本方法对SYSAUX、USERS、UNDO、TEMP表空间也适用。)
一、针对可offline的非系统表空间
以下实际案例移动oracle数据库orcl实例下test用户数据表空间(TEST_CORE表空间),将其从 /oradata/orcl/test 移动到 /oradata2/orcl/test
操作简介:
1、创建数据表空间存储路径
su - oracle
mkdir /oradata2/orcl/test -p
2、查看要改变的数据表空间文件的存储路径信息
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name=‘TEST_CORE‘;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
ONLINE_
-------
TEST_CORE
/oradata/orcl/test/test_core.dbf
ONLINE
3、将目标表空间设置为脱机状态
SQL> alter tablespace TEST_CORE offline;
4、再次查看目标表空间的状态,确保其已经是脱机状态
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name=‘TEST_CORE‘;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
ONLINE_
-------
TEST_CORE
/oradata/orcl/test/test_core.dbf
OFFLINE
5、将原来的数据文件移动(或复制)到新的路径
SQL> host mv /oradata/orcl/test/test_core.dbf /oradata2/orcl/test/test_core.dbf
备注:如果是windows server服务器则使用 host move
SQL> host move D:\oradata\orcl\test\test_core.dbf D:\oradata2\orcl\test\test_core.dbf
6、修改该表空间的数据文件路径
SQL> alter tablespace TEST_CORE rename datafile ‘/oradata/orcl/test/test_core.dbf‘ to ‘/oradata2/orcl/test/test_core.dbf‘;
7、查看该表空间修改后的信息,确保信息无误
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name=‘TEST_CORE‘;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
ONLINE_
-------
TEST_CORE
/oradata2/orcl/test/test_core.dbf
OFFLINE
8、修改该表空间为在线状态
SQL> alter tablespace TEST_CORE online;
9、查看该表空间最后结果
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name=‘TEST_CORE‘;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
ONLINE_
-------
TEST_CORE
/oradata2/orcl/test/test_core.dbf
ONLINE
二、针对系统表空间的移动
备注:使用该方法需要将数据库处于mount状态
操作简介:
1、关闭运行中的数据库
SQL> shutdown immediate;
2、启动数据库到mount状态
SQL> startup mount;
3、操作移动系统表空间(SYSTEM表空间)的数据文件
SQL> host mv /oradata/orcl/system.dbf /oradata2/orcl/system.dbf;
备注:如果是windows server服务器则使用 host move
SQL> host move D:\ORADATA\ORCL\SYSTEM.DBF D:\ORADATA2\ORCL\SYSTEM.DBF;
4、修改该表空间的数据文件路径
SQL> alter database rename file ‘/oradata/orcl/system.dbf‘ to ‘/oradata2/orcl/system.dbf‘;
5、启动数据库,打开实例
SQL> alter database open;
6、查看表空间修改结果
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name=‘SYSTEM‘;