1.获取数据库相关信息
首先要查看一下数据库的文件内容和位置:
1) 数据文件: SQL> select name as datafile from v$datafile;
datafile --------------------------------------------------------------------------------
D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/SYSTEM01.DBF D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/UNDOTBS01.DBF D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/SYSAUX01.DBF D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/USERS01.DBF 2) 临时文件: SQL> select name as tempfile from v$tempfile;
tempfile --------------------------------------------------------------------------------
D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/TEMP01.DBF
3) 控制文件: SQL> select name as ctlfiles from v$controlfile;
CTLFILES --------------------------------------------------------------------------------
D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/CONTROL01.CTL D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/CONTROL02.CTL D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/CONTROL03.CTL
4) 重做日志文件: SQL> select member from v$logfile;
MEMBER --------------------------------------------------------------------------------
D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/REDO03.LOG D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/REDO02.LOG D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/REDO01.LOG
2.移动应用数据文件,临时文件,重做日志文件
1) 关闭数据库 SQL> conn sys/admin@mydb as sysdba 已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> 2) 移动数据文件 复制文件到目标文件夹,本文为 F:/oradata/mydb/datafiles/sys/
3)、修改数据库文件的位置 启动MOUNT模式
SQL> startup mount;
SQL> alter database rename file 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/SYSTEM01.DBF' to 'F:/oradata/mydb/datafiles/sys/SYSTEM01.DBF';
SQL> alter database rename file 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/UNDOTBS01.DBF' to 'F:/oradata/mydb/datafiles/sys/UNDOTBS01.DBF';
SQL> alter database rename file 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/SYSAUX01.DBF' to 'F:/oradata/mydb/datafiles/sys/SYSAUX01.DBF'; SQL> alter database rename file 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/USERS01.DBF' to 'F:/oradata/mydb/datafiles/sys/USERS01.DBF';
临时文件:
SQL> alter database rename file 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/Temp01.DBF' to 'F:/oradata/mydb/datafiles/sys/Temp01.DBF';
重做日志组:
SQL> alter database rename file 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/REDO01.LOG' to 'F:/oradata/mydb/logfiles/REDO01.LOG';
SQL> alter database rename file 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/REDO02.LOG' to 'F:/oradata/mydb/logfiles/REDO02.LOG';
SQL> alter database rename file 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/MYDB/REDO03.LOG' to 'F:/oradata/mydb/logfiles/REDO03.LOG';
注意9i前只能进行更改移动的数据库文件,不包括日志文件,TEMP文件(这两种文件需要drop然后重建),9i以后版本这两种文件也是可以的。
3.移动应用控制文件
1).备份SPFILE中的内容:
再重新启动数据库: startup;
create pfile=’c:/init.ora’ from spfile;
2)修改init.ora文件中的内容: *.control_files='/oradata/ocp/control01.ctl','/oradata/ocp/control02.ctl','/oradata/ocp/control03.ctl' 进行更改已经复制的目录位置。
Shutdown 数据库
3)将控制文件复制过去
将三个控制文件移动到上面所修改的的目录下。
4)倒入参数文件
以init.ora参数方式启动: startup pfile=’/oracle/init.ora’;
create spfile from pfile=’/oracle/init.ora’;
shutdown immediate;
startup; 从spfile中进行启动。
这样控制文件移动工作就结束了。
附、重建系统监时(temp)文件系统做法
在移动数据表空间时,TEMP文件是不能被移动的,这里要求可以进行重建一个TEMP表空间,并设置为系统默认的TEMP文件系统。
然后再册除原来的TEMP表空间,达到移动表空间的过程。
迁移临时表空间
◆1.startup --启动数据库
◆2. create temporary tablespace "temp02" tempfile 'd:/oradata/weboa/temp02.dbf' size 500m extent management local uniform size 10m; --创建中转临时表空间
◆3.alter database default temporary tablespace temp2; --改变缺省临时表空间 为刚刚创建的新临时表空间temp2
◆4.drop tablespace temp including contents and datafiles;--删除原来临时表空间
◆5 然后再删除原来的TEMP文件就可以了。