环境:RHEL 6.4 + Oracle 11.2.0.3
情景一:只是部分普通数据文件迁移,可以在线操作。
1.将对应表空间offline,移动数据文件到新路径
2.数据文件alter database rename file '' to '';
3.再将表空间online
情景二:所有数据文件迁移。
本文是针对情景二的实验,需求:主机/oradata挂节点变更为/usr2.在/usr2建立oradata文件夹来存放之前/oradata的所有文件。
操作步骤:
1.查看当前数据库的数据文件,临时文件,日志文件,控制文件,参数文件等信息。
2.根据当前spfile创建pfile文件,正常关闭数据库,移动源数据库文件到新的存储路径。
3.修改数据库参数文件,更改控制文件路径为新的存储路径,用改好的pfile文件启动数据库到mount状态。
4.重定向数据库的所有数据文件、日志文件路径,然后正常打开数据库。
5.核查各文件路径没有问题,根据当前pfile创建spfile,重启数据库实例。
1.查看当前数据库的数据文件,临时文件,日志文件,控制文件,参数文件等信息。
SQL> select name fromv$datafile;
NAME--------------------------------------------------------------------------------
/oradata/sysdata/jingyu/system01.dbf/oradata/sysdata/jingyu/sysaux01.dbf/oradata/sysdata/jingyu/undotbs01.dbf/oradata/sysdata/jingyu/users01.dbf
SQL> select name fromv$tempfile;
NAME--------------------------------------------------------------------------------
/oradata/sysdata/jingyu/temp01.dbf
SQL> select member fromv$logfile;
MEMBER--------------------------------------------------------------------------------
/oradata/sysdata/jingyu/redo03.log
/oradata/sysdata/jingyu/redo02.log
/oradata/sysdata/jingyu/redo01.logSQL> select name fromv$controlfile;
NAME--------------------------------------------------------------------------------
/oradata/sysdata/jingyu/control01.ctl/opt/app/oracle/fast_recovery_area/jingyu/control02.ctl
SQL>show parameter pfile
NAME TYPE VALUE------------------------------------ ----------- ------------------------------
spfile string /opt/app/oracle/product/11.2.0
/dbhome_1/dbs/spfilejingyu.ora
2.根据当前spfile创建pfile文件,正常关闭数据库,移动源数据库文件到新的存储路径。
SQL> create pfile fromspfile;Filecreated.
SQL> shutdownimmediate;Databaseclosed.Databasedismounted.
ORACLE instance shut down.--移动源数据库文件到新的存储路径:
a.建立/usr2。
b./etc/fstab配置,更改/oradata为/usr2。
c.mount/usr2
d./usr2下建立oradata文件夹。
e./usr2下文件移动到/usr2/oradata下。
f.处理相关目录权限。
g.umount-l /oradata
3.修改数据库参数文件,更改控制文件路径为新的存储路径,用改好的pfile文件启动数据库到mount状态。
[oracle@JY-DB /]$ cd $ORACLE_HOME/dbs[oracle@JY-DB dbs]$ more initjingyu.ora
jingyu.__db_cache_size=6677331968jingyu.__java_pool_size=33554432jingyu.__large_pool_size=33554432jingyu.__oracle_base='/opt/app/oracle'#ORACLE_BASE set fromenvironment
jingyu.__pga_aggregate_target=5402263552jingyu.__sga_target=8086618112jingyu.__shared_io_pool_size=0jingyu.__shared_pool_size=1275068416jingyu.__streams_pool_size=0
*.audit_file_dest='/opt/app/oracle/admin/jingyu/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/oradata/sysdata/jingyu/control01.ctl','/opt/app/oracle/fast_recovery_area/jingyu/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='jingyu'
*.db_recovery_file_dest='/opt/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=10737418240
*.diagnostic_dest='/opt/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=jingyuXDB)'
*.memory_target=13459521536
*.open_cursors=1000
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1655
*.undo_tablespace='UNDOTBS1'SQL> startup pfile='$ORACLE_HOME/dbs/initjingyu.ora'nomount
ORACLE instance started.
Total System Global Area1.3429E+10bytes
Fixed Size2241064bytes
Variable Size6744444376bytesDatabase Buffers 6677331968bytes
Redo Buffers4636672bytes
SQL> alter databasemount;Database altered.
4.重定向数据库的所有数据文件、日志文件路径,然后正常打开数据库。
SQL> alter database rename file '/oradata/sysdata/jingyu/system01.dbf' to '/usr2/oradata/sysdata/jingyu/system01.dbf';Databasealtered.
SQL> alter database rename file '/oradata/sysdata/jingyu/sysaux01.dbf' to '/usr2/oradata/sysdata/jingyu/sysaux01.dbf';Databasealtered.
SQL> alter database rename file '/oradata/sysdata/jingyu/undotbs01.dbf' to '/usr2/oradata/sysdata/jingyu/undotbs01.dbf';Databasealtered.
SQL> alter database rename file '/oradata/sysdata/jingyu/temp01.dbf' to '/usr2/oradata/sysdata/jingyu/temp01.dbf';Databasealtered.
SQL> alter database rename file '/oradata/sysdata/jingyu/users01.dbf' to '/usr2/oradata/sysdata/jingyu/users01.dbf';Databasealtered.
SQL> alter database rename file '/oradata/sysdata/jingyu/redo01.log' to '/usr2/oradata/sysdata/jingyu/redo01.log';Databasealtered.
SQL> alter database rename file '/oradata/sysdata/jingyu/redo02.log' to '/usr2/oradata/sysdata/jingyu/redo02.log';Databasealtered.
SQL> alter database rename file '/oradata/sysdata/jingyu/redo03.log' to '/usr2/oradata/sysdata/jingyu/redo03.log';Databasealtered.
SQL> alter database open;Database altered.
5.核查各文件路径没有问题,根据当前pfile创建spfile,重启数据库实例。
SQL> select name fromv$datafile;
NAME--------------------------------------------------------------------------------
/usr2/oradata/sysdata/jingyu/system01.dbf/usr2/oradata/sysdata/jingyu/sysaux01.dbf/usr2/oradata/sysdata/jingyu/undotbs01.dbf/usr2/oradata/sysdata/jingyu/users01.dbf
SQL> select name fromv$tempfile;
NAME--------------------------------------------------------------------------------
/usr2/oradata/sysdata/jingyu/temp01.dbf
SQL> select member fromv$logfile;
MEMBER--------------------------------------------------------------------------------
/usr2/oradata/sysdata/jingyu/redo03.log
/usr2/oradata/sysdata/jingyu/redo02.log
/usr2/oradata/sysdata/jingyu/redo01.logSQL> select name fromv$controlfile;
NAME--------------------------------------------------------------------------------
/usr2/oradata/sysdata/jingyu/control01.ctl/opt/app/oracle/fast_recovery_area/jingyu/control02.ctl
SQL>show parameter pfile
NAME TYPE VALUE------------------------------------ ----------- ------------------------------
spfile string
SQL> create spfile frompfile;Filecreated.
SQL> shutdownimmediate;Databaseclosed.Databasedismounted.
ORACLE instance shut down.
SQL>startup
ORACLE instance started.
Total System Global Area1.3429E+10bytes
Fixed Size2241064bytes
Variable Size6744444376bytesDatabase Buffers 6677331968bytes
Redo Buffers4636672bytesDatabasemounted.Database opened.