6.2 参考资料:Oracle数据库移动方法
这里所指“数据库移动”是将Oracle数据文件(系统数据文件或用户数据文件)、控制文件、重做日志移动至新的存储路径,并修改Oracle相关配置,使之可以重新正常启动。这种应用常见于系统扩容后的Oracle数据存储路径的调整。
以下面为例,移动系统表空间的相关文件位置,并重新配置Oracle。假设原存储路径为/oradata,新存储路径为/oratest。
6.2.1 移动数据库文件
1) 获取数据库相关信息
查看一下数据库的文件内容:
sqlplus /nolog
SQL> connect /as sysdba
SQL> select * from v$datafile;
SQL> select * from v$controlfile
SQL> select * from v$logfile;
2) 移动数据库文件
以shutdown immediate模式关闭数据库,复制数据文件到新路径/oratest/下。需复制的文件有:
system01.dbf
indx01.dbf
undotbs01.dbf
drsys01.dbf
users01.dbf
tools01.dbf
control01.ctl
control02.ctl
control03.ctl
redo01.log
redo02.log
redo03.log
3)修改数据文件的位置
以mount模式启动Oracle,
SQL>startup mount;
SQL>alter database rename file '/oradata/system01.dbf' to '/oratest/system01.dbf" ;
SQL>alter database rename file '/oradata/indx01.dbf' to '/oratest/indx01.dbf" ;
SQL>alter database rename file '/oradata/undotbs01.dbf' to '/oratest/undotbs01.dbf" ;
SQL>alter database rename file '/oradata/drsys01.dbf' to '/oratest/drsys01.dbf" ;
SQL>alter database rename file '/oradata/users01.dbf' to '/oratest/users01.dbf" ;
SQL>alter database rename file '/oradata/tools01.dbf' to '/oratest/tools01.dbf" ;
注意:在此步骤只能更改已移动的数据库文件,不能更改控制文件、日志文件和TEMP文件。
6.2.2 移动控制文件
1)备份SPFILE中的内容:
重新启动数据库:
SQL> startup;
SQL> create pfile=’/init.ora’ from spfile;
2)修改init.ora文件内容:
将*.control_files='/oradata/control01.ctl','/oradata/control02.ctl','/oradata/control03.ctl' 更改为新目录位置的控制文件,如:
*.control_files='/oratest/control01.ctl','/oratest/control02.ctl','/oratest/control03.ctl'
关闭数据库。
3)倒入参数文件
以init.ora为参数启动数据库,
SQL> startup pfile=’/init.ora’;
SQL> create spfile from pfile=’/ init.ora’;
SQL> shutdown immediate;
从spfile中进行启动,
SQL> startup;
控制文件移动更改完成。
6.2.3 重定位LOG文件
日志文件的移动方式有两种,一种是移动(rename方式),另一种是重建。下面仅举例说明移动方式。
移动Redo Log文件:
SQL>alter database rename file '/oradata/redo01.log' to '/oratest/redo01.log" ;
SQL>alter database rename file '/oradata/redo02.log' to '/oratest/redo02.log" ;
SQL>alter database rename file '/oradata/redo03.log' to '/oratest/redo03.log" ;
6.2.4 重建系统临时(temp)文件系统
在移动数据库表空间时,TEMP文件是不能被移动的,可以重建一个TEMP表空间,并设置为系统默认的TEMP文件系统。再删除原来的TEMP表空间,达到移动表空间的目的。
SQL>create temporary tablespace TEMP02 tempfile ‘/oratest/temp02.dbf’ size 500m extent management local uniform size 10m;
SQL>alter database default temporary tablespace TEMP02;
确认创建设置成功后,再删除原来的TEMP文件。
SQL>drop tablespace TEMP including contents and datafiles;
6.2.5 测试数据库
重启ORACLE数据
$ sqlplus “/as sysdba”
SQL> startup;
SQL> show sga;
SQL>
这看来相当于SQLSERVER的附加数据库了,即为oracle的冷备份。
oracle看来主要有三种文件:数据库文件、控件文件、日志文件
依次对以上三种文件进行移动和修改。