修改同一个表空间的数据文件的名称和位置,可以表空间级别进行,因为这样对系统的影响降到最小,具体步骤为:
方法一:
1.将数据文件所属表空间设置为脱机状态
2.在操作系统中改变数据文件的名称或者位置[需要DBA手动更改操作系统中数据文件的名称和位置]
3.执行ALTER TABLESPACE ...RENAME DATAFILE...TO语句,修改数据字典和控制文件中与该数据文件相关的信息
4.将数据文件所述表空间设置为联机状态
案例1:Oracle表空间所在的硬盘空间不足,需要将表空间迁移到空间较大的硬盘。
【查询所有的表空间以及表空间所在地址:select * from dba_data_files;】
将数据库表空间的数据文件HRTEST1_1.dbf文件移动到D:\app\danser\oradata\removed目录中去。
- ALTER TABLESPACE HRTEST1 OFFLINE;
2.HOST COPY D:\APP\DANSER\ORADATA\TABLESPACETEST01\HRTEST1_1.DBF D:\app\danser\oradata\removed\HRTEST1_1.DBF;
3. ALTER TABLESPACE HRTEST1 RENAME DATAFIL 'D:\APP\DANSER\ORADATA\TABLESPACETEST01\HRTEST1_1.DBF' to 'D:\app\danser\oradata\removed\HRTEST1_1.DBF';
4.ALTER TABLESPACE SYSTEM ONLINE;
5.经查询发现出现了两个相同的数据文件,(其实,第二步是“复制-粘贴[复制数据文件到新的位置]”的概念?待佐证)
TIP: 在改变数据文件的名称或位置时,Oracle只是改变记录在控制文件和数据字典中的数据文件信息,实际上并不会改变操作系统数据文件的名称和位置。
6.可能出现的问题:
如果出现错误:ora-01113 文件n 需要介质修复,在cmd窗口使用sys/system登录,使用recover datafile n;语句恢复。
例如:
ora-01113 文件10 需要介质修复,输入语句:recover datafile 10;
7.方法二:
关闭数据库[SHOWDOWN IMMEDIATE];
复制数据文件到新的位置[HOST COPY...];
启动数据库到加载(mount)状态[STARTUP MOUNT];
在操作系统中修改数据文件的名称或位置,执行 ALTER DATABASE...RENAME FILE ... TO语句,修改数据字典和控制文件中的这些数据文件相关信息[ALTER DATABASE RENAME FILE ... TO ...];
打开数据库[ALTER DATABASE OPEN];