前言:
在数据库运行、管理、维护维优过程中,有可能会碰到需要移动数据文件到其他硬盘或目录的情况。
删除或移动数据文件,都不像在操作系统中使用rm或cp命令那么简单。如果只是简单的rm或cp数据文件,
那么数据库运行时会因为找不到正确的数据文件位置而报错。这是因为数据文件的位置和信息都被记录
据操作。 @H_301_7@
(一) 方法一:offline表空间 @H_301_7@**************************************************************
* 主要步骤: *
* 1、offline表空间:alter tablespace tablespace_name offline;*
* 2、复制数据文件到新的目录; *
* 3、rename修改表空间,并修改控制文件; *
* 4、online表空间; *
************************************************************** @H_301_7@
以更改表空间zerone的数据文件/opt/Oracle/oradata/ZERONE01.DBF的位置为例 @H_301_7@1、offline表空间zerone,使表空间zerone离线
----------------------------------------
sql> alter tablespace zerone offline;
表空间已更改。 @H_301_7@ @H_301_7@2、复制数据文件到新的目录
----------------------
注:
* 1、如检查新目录/home/oracle/oradata/zerone是否存在,不存在则创建此路径,并更改目录属性:
* # mkdir -p /home/oracle/oradata/zerone
* # chown -R oracle:oinstall /home/oracle/oradata/zerone
复制数据文件
# cp /opt/oracle/oradata/ZERONE01.DBF /home/oracle/oradata/zerone/ZERONE01.DBF
# chown oracle:oinstall /home/oracle/oradata/zerone/ZERONE01.DBF @H_301_7@
3、rename修改表空间数据文件为新的位置,并修改控制文件
--------------------------------------------------
sql> alter tablespace zerone rename datafile '/opt/oracle/oradata/ZERONE01.DBF' to '/home/oracle/oradata/zerone/ZERONE01.DBF';
表空间已更改。 @H_301_7@
4、online表空间
---------------------
sql> alter tablespace zerone online;
表空间已更改。 @H_301_7@检查:
sql> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/oradata/zerone/ZERONE01.DBF @H_301_7@
sql> select file_name,tablespace_name from dba_data_files where tablespace_name='ZERONE';
FILE_NAME TABLESPACE_NAME
------------------------------------------------------------------------------------------------
ZERONE /home/oracle/oradata/zerone/ZERONE01.DBF
@H_301_7@
(二) 方法二:sql修改数据文件位置 @H_301_7@
*************************************
* 主要步骤:
* 1、关闭数据库;
* 2、复制数据文件到新的位置;
* 3、启动数据库到mount状态;
* 4、通过sql修改数据文件位置;
* 5、打开数据库;
************************************* @H_301_7@
1、关闭数据库
---------------------------
sql> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。 @H_301_7@
2、复制数据文件到新的位置;
---------------------------
同方法一 @H_301_7@3、启动数据库到mount状态;
----------------------------
sql> startup mount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 96470372 bytes
Database Buffers 67108864 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。 @H_301_7@4、通过sql修改数据文件位置;
-------------------------------
sql> alter database rename file '/opt/oracle/oradata/ZERONE01.DBF' to '/home/oracle/oradata/zerone/ZERONE01.DBF';
数据库已更改。 @H_301_7@
5、打开数据库;
-------------------------------
sql> alter database open;
数据库已更改。
301_7@
如何查看数据文件属于哪个表空间
(1) 查看永久表空间的数据文件对应的表空间
sql> select TABLESPACE_NAME from dba_data_files where FILE_NAME='数据文件全路径';