環境: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 from v$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 from v$tempfile; NAME -------------------------------------------------------------------------------- /oradata/sysdata/jingyu/temp01.dbf SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /oradata/sysdata/jingyu/redo03.log /oradata/sysdata/jingyu/redo02.log /oradata/sysdata/jingyu/redo01.log SQL> select name from v$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 from spfile; File created. SQL> shutdown immediate; Database closed. Database dismounted. 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=6677331968 jingyu.__java_pool_size=33554432 jingyu.__large_pool_size=33554432 jingyu.__oracle_base='/opt/app/oracle'#ORACLE_BASE set from environment jingyu.__pga_aggregate_target=5402263552 jingyu.__sga_target=8086618112 jingyu.__shared_io_pool_size=0 jingyu.__shared_pool_size=1275068416 jingyu.__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 Area 1.3429E+10 bytes Fixed Size 2241064 bytes Variable Size 6744444376 bytes Database Buffers 6677331968 bytes Redo Buffers 4636672 bytes SQL> alter database mount; Database altered.
4.重定向數據庫的所有數據文件、日志文件路徑,然后正常打開數據庫。
SQL> alter database rename file '/oradata/sysdata/jingyu/system01.dbf' to '/usr2/oradata/sysdata/jingyu/system01.dbf'; Database altered. SQL> alter database rename file '/oradata/sysdata/jingyu/sysaux01.dbf' to '/usr2/oradata/sysdata/jingyu/sysaux01.dbf'; Database altered. SQL> alter database rename file '/oradata/sysdata/jingyu/undotbs01.dbf' to '/usr2/oradata/sysdata/jingyu/undotbs01.dbf'; Database altered. SQL> alter database rename file '/oradata/sysdata/jingyu/temp01.dbf' to '/usr2/oradata/sysdata/jingyu/temp01.dbf'; Database altered. SQL> alter database rename file '/oradata/sysdata/jingyu/users01.dbf' to '/usr2/oradata/sysdata/jingyu/users01.dbf'; Database altered. SQL> alter database rename file '/oradata/sysdata/jingyu/redo01.log' to '/usr2/oradata/sysdata/jingyu/redo01.log'; Database altered. SQL> alter database rename file '/oradata/sysdata/jingyu/redo02.log' to '/usr2/oradata/sysdata/jingyu/redo02.log'; Database altered. SQL> alter database rename file '/oradata/sysdata/jingyu/redo03.log' to '/usr2/oradata/sysdata/jingyu/redo03.log'; Database altered. SQL> alter database open; Database altered.
5.核查各文件路徑沒有問題,根據當前pfile創建spfile,重啟數據庫實例。
SQL> select name from v$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 from v$tempfile; NAME -------------------------------------------------------------------------------- /usr2/oradata/sysdata/jingyu/temp01.dbf SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /usr2/oradata/sysdata/jingyu/redo03.log /usr2/oradata/sysdata/jingyu/redo02.log /usr2/oradata/sysdata/jingyu/redo01.log SQL> select name from v$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 from pfile; File created. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 1.3429E+10 bytes Fixed Size 2241064 bytes Variable Size 6744444376 bytes Database Buffers 6677331968 bytes Redo Buffers 4636672 bytes Database mounted. Database opened.