步驟很簡單:關源庫->拷貝到目標機器->啟動到mount狀態重新命名->open資料庫
登入來源資料庫所在主機
建立映射目錄 192.168.1.2oradata 映射為 z: 盤
映射完畢後檢查是否允許寫入檔案
需要注意關閉目標資料庫位置伺服器的防火牆
搜集源庫資訊
執行個體名、版本、塊大小、資料表空間、資料檔案
select * from v$instance;
select * from v$database;
select * from v$tablespace;
select * from v$datafile;
在源庫上整理需拷貝的檔案
執行檔案cp.sql,其內容如下:
set linesize 130 pagesize 2000
set trimspool on
set echo off
set verify off
set timing off
set feedback off
set head off
set echo off
spool cpfile.bat
select 'copy '||name||' z:orcl'|| substr(name, instr(name, '', -1) + 1) cmd from v$controlfile
union all
select 'copy '||member||' z:orcl'|| substr(member, instr(member, '', -1) + 1) cmd from v$logfile
union all
select 'copy '||name||' z:orcl'|| substr(name, instr(name, '', -1) + 1) cmd from v$datafile
union all
select 'copy '||name||' z:orcl'|| substr(name, instr(name, '', -1) + 1) cmd from v$tempfile
union all
select 'copy '||value||' z:orcl'|| substr(value, instr(value, '', -1) + 1) cmd from v$parameter where name='spfile';
spool off
產生改名指令碼
執行檔案ren.sql ,其內容如下:
set linesize 130 pagesize 2000
set trimspool on
set echo off
set verify off
set timing off
set feedback off
set head off
set echo off
spool renfile.sql
select 'ALTER DATABASE RENAME FILE '''||member||''' to ''d:oradataorcl'|| substr(member, instr(member, '', -1) + 1)||'''; ' cmd from v$logfile
union all
select 'ALTER DATABASE RENAME FILE '''||name||''' to ''d:oradataorcl'|| substr(name, instr(name, '', -1) + 1)||'''; ' cmd from v$datafile
union all
select 'ALTER DATABASE RENAME FILE '''||name||''' to ''d:oradataorcl'|| substr(name, instr(name, '', -1) + 1)||'''; ' cmd from v$tempfile;
spool off
create pfile from spfile;
關閉源庫
host lsnrctl stop
shutdown immediate
將windows服務設定為手工啟動(關鍵!!! 防止萬一複製出現問題還可以重新複製一致的檔案)
拷貝控制檔案、記錄檔、資料檔案,
host cpfile.bat
startup
host lsnrctl start
拷貝pfile、 tnsname.ora、 口令檔案、renfile.sql
在目標資料庫修改參數檔案中的控制檔案內容
配置啟動參數檔案pfile,修改控制檔案位置及路徑資訊
啟動到mount狀態
sqlplus "/as sysdba"
startup mount pfile=?/database/initorcl.ora
修改檔案位置
SQL> @renfile.sql
開啟資料庫
create spfile from pfile;
host lsnrctl start
檢查臨時檔案是否有
串連測試
參考命令:
oradim -NEW -SID test -STARTMODE manual -PFILE "D:Oracleadmintestpfileinittest.ora"
ALTER DATABASE RENAME FILE 'c:oracleproductoradataexample.dbf'
TO 'c:oracleproductoradatademos.dbf'
修改日誌組位置
ALTER DATBASE [database}
RENAME FILE 'filename’[,'filename']…
TO 'filename']…
建立日誌組
ALTER DATABASE ADD LOGFILE GROUP 3
('$HOME/ORADATA/u01/log3a.rdo',
'$HOME/ORADATA/u02/log3b.rdo')
SIZE 1M;
新增成員
ALTER DATABASE ADD LOGFILE MEMBER
'$HOME/ORADATA/u04/log1c.rdo' TO GROUP 1,
'$HOME/ORADATA/u04/log2c.rdo' TO GROUP 2,
'$HOME/ORADATA/u04/log3c.rdo' TO GROUP 3;
刪除日誌組
ALTER DATABASE DROP LOGFILE GROUP 3;
刪除成員
ALTER DATABASE DROP LOGFILE MEMBER '$HOME/ORADATA/u04/log3c.rdo';
清除日誌
ALTER DATABASE CLEAR LOGFILE '$HOME/ORADATA/u01/log2a.rdo';
增加臨時檔案
ALTER TABLESPACE temp ADD TEMPFILE '/oradata/temp03.dbf' SIZE 100M;
刪除臨時檔案:
ALTER DATABASE TEMPFILE '/oradata/temp02.dbf' DROP INCLUDING DATAFILES;
250資料庫 245G 拷貝時間需要 9 小時