分类: Oracle
2010-11-15 19:05:53
操作环境:
数据库:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
表空间:USERS
转移前使用的数据库文件:C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF
转移后使用的数据库文件:D:\DB Data\Oracle\orcl\USERS01.DBF
简要操作步骤:
第一步:登陆数据库 第二步:停止数据库 第三步:在open模式下启动数据库 第四步:将表空间(USERS)脱机 第五步:手工将表空间所使用的数据库文件(C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF), 复制到你要转移的目录(D:\DB Data\Oracle\orcl\USERS01.DBF), 第六步:将表空间与新目录下的数据库文件关联 第七步:将表空间联机,提交,OK,完成。 |
详细SQL:
第一步: C:\>sqlplus /nolog SQL> conn / as sysdba 第二步: SQL> shutdown immediate 第三步: SQL> startup open 第四步: SQL> alter tablespace eucrmspace offline; 第五步: 手工拷贝数据库文件到你想到达的目录下。 第六步:【操作前后可以用SQL来查询表空间所使用的数据库文件的变化情况:select name from v$datafile;】 SQL> alter tablespace eucrmspace rename datafile 'C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF' to ' D:\DB Data\Oracle\orcl\USERS01.DBF'; 第七步: SQL> alter tablespace eucrmspace online; SQL>commit; SQL>exit; |
注意:
1. 转移表空间时,请确保不要对该表空间执行任何写操作(如项目程序仍在运行),否则可能后面报错 我测试了下,边转移边对该表空间执行写操作,结果在执行第六步时,报错了: ERROR 位于第 1 行: ORA-01113: 文件 11 需要介质恢复 ORA-01110: 数据文件 11: 'D:\DB Data\Oracle\orcl\USERS01.DBF ' 2.第五步(复制文件操作),必须是在第四步之后,否则第六步可能会报错,错误信息同上差不多 3.如果第六步报错了,只能这样恢复:将现在使用的数据库文件(D:\DB Data\Oracle\orcl\USERS01.DBF),重新还原成之前所使用的数据库文件(C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF),即重新执行第五、六、七步,只不过第五步的SQL稍微改下。 ……. SQL>rollback; SQL> alter tablespace eucrmspace rename datafile ' D:\DB Data\Oracle\orcl\USERS01.DBF' to 'C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF'; …… |
下面是完整的操作命令:
C:\Documents and Settings\XXX>sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 11月 15 16:29:14 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn / as sysdba 已连接。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup open ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 83889028 bytes Database Buffers 520093696 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 数据库已经打开。 SQL> alter tablespace users offline; 表空间已更改。 SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF SQL> alter tablespace USERS rename datafile 'C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF' to 'D:\DB Data\Oracle\orcl\USERS01.DBF'; 表空间已更改。 SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF D:\DB DATA\ORACLE\ORCL\USERS01.DBF SQL> alter tablespace users online; 表空间已更改。 SQL> commit; 提交完成。