資料庫遷移手記
最近遷移工作做得較多,下面就其中的一個遷移做一個筆記:
資料庫遷移:
伺服器A: solaris 8 64位 + oracle 9204 + 裸裝置
伺服器B:solaris 10 64位 + oracle 9204 + 檔案系統
伺服器:A -> B
作業系統:SOLARIS 8 X86_64 -> SOLARIS 10 X86_64
資料庫版本:9204 -> 9204
檔案系統:裸裝置 -> 檔案系統
本次遷移最麻煩的地方是:
1、兩個伺服器路徑不一致
2、檔案系統不一致
3、源資料庫伺服器空間不足
最終採取螞蟻搬家的方法完成了這次遷移,下面是具體步驟:
遷移步驟:
一、在B機上安裝資料庫軟體、並升級到9204
步驟略
二、在A機rman備份資料、複製到B機
由於A機是裸裝置、B機打算用檔案系統,所以選擇使用rman備份的方式做。
A機空間不足,不能一次全庫備份,只能採取螞蟻搬家的方式做:每次備份部分表空間,然後把備份集傳到B機後,刪除備份集,如此幾次,直到把資料庫搬完。
run{
allocate channel c1 device type disk format '/opt/oracle/oradata/oradata/bjdb01/archive/backup/ndmain_%U';
backup tablespace NDMAIN;
release channel c1;
}
複製到異地,刪除備份集
run{
allocate channel c1 device type disk format '/opt/oracle/oradata/oradata/bjdb01/archive/backup/lt_ndmain_%U';
backup tablespace LT_INDEX_TS ;
release channel c1;
}
複製到異地,刪除備份集
run{
allocate channel c1 device type disk format '/opt/oracle/oradata/oradata/bjdb01/archive/backup/ndx_undo_%U';
backup tablespace NDINDEX,UNDOTBS1 ;
release channel c1;
}
複製到異地,刪除備份集
-- 注意,rman認為log是關鍵字,所以要用雙引號括起來,否則報錯
run{
allocate channel c1 device type disk format '/opt/oracle/oradata/oradata/bjdb01/archive/backup/lt_ts_%U';
backup tablespace "LOG",S101,LT_TS03,LT_TS06,LT_TS11,LT_TS15,LT_TS16,LT_TS12,LT_TS05,LT_TS04;
release channel c1;
}
複製到異地,刪除備份集
-- 注意,rman認為test是關鍵字,所以要用雙引號括起來,否則報錯
run{
allocate channel c1 device type disk format '/opt/oracle/oradata/oradata/bjdb01/archive/backup/other_%U';
backup tablespace LT_TS01,LT_TS09,PERFSTAT,LT_TS14,LT_TS13,LT_TS10,LT_TS08,LT_TS02,LT_TS07,INDX,"TEST",SYSTEM,XDB,USERS,CWMLITE,ODM,DRSYS,TOOLS ;
release channel c1;
}
複製到異地,刪除備份集
備份歸檔:
run{
allocate channel c1 device type disk format '/opt/oracle/oradata/oradata/bjdb01/archive/backup/arch_%U';
backup archivelog all;
release channel c1;
}
備份當前控制檔案
run{
allocate channel c1 device type disk format '/opt/oracle/oradata/oradata/bjdb01/archive/backup/con_%U';
backup current controlfile;
release channel c1;
}
三、在B機上建立需要的路徑
mkdir -p /data/oracle/admin/precen/{cdump,bdump,udump}
mkdir -p /data/archivelog/precen
如果不是用oracle使用者建立的話,還要進行授權。
chown -R oracle:oinstall /data
chown -R 755 /data
四、處理引數檔案
在A庫生成pfile,傳到B機上,然後結合B機環境修改相關引數(主要是instance_name和與目錄相關的幾個引數)
五、建立密碼檔案
密碼檔案的名稱要與設定的新的ORACLE_SID相一致:
orapwd file=orapwprecen password=test entries=10
六、還原資料庫
1、做軟連結
由於源伺服器和新伺服器的路徑不一樣,必須要做軟連結使得rman可以正確讀取到放到新伺服器上的備份集:
-bash-3.00# mkdir -p /opt/oracle/oradata/oradata/bjdb01/archive/
-bash-3.00# ln -s /data/soft/backup/precen /opt/oracle/oradata/oradata/bjdb01/archive/backup
2、啟動例項
-bash-3.00$ export ORACLE_SID=precen
-bash-3.00$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Sat Aug 25 12:39:30 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> startup nomount pfile=?/dbs/init@.ora
ORACLE instance started.
Total System Global Area 1413451696 bytes
Fixed Size 733104 bytes
Variable Size 620756992 bytes
Database Buffers 788529152 bytes
Redo Buffers 3432448 bytes
3、還原控制檔案
Recovery Manager: Release 9.2.0.4.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: precen (not mounted)
RMAN> set dbid=3255963758;
executing command: SET DBID
RMAN> restore controlfile from '/data/backup/precen/con_v9iq711m_1_1';
Starting restore at 25-AUG-07
using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=15 devtype=DISK
channel ORA_DISK_1: restoring controlfile
channel ORA_DISK_1: restore complete
replicating controlfile
input filename=/data/oradata/precen/control01.ctl
output filename=/data/oradata/precen/control02.ctl
output filename=/data/oradata/precen/control03.ctl
Finished restore at 25-AUG-07
RMAN> alter database mount;
database mounted
4、修改日誌檔案的路徑
在SQLPLUS執行:
SQL> alter database rename file '/opt/oracle/oradata/oradata/bjdb01/archive/redo/log01.ora' to '/data/oradata/precen/log1.ora';
Database altered.
安裝這種方法把所有的日誌路徑都修改了,否則在後面open resetlogs時會出錯。
5、還原資料庫
雖然備份的時候我們是分多次備份的方式,但是在還原的時候因為空間足夠,我們就沒必要這樣做了,直接全庫恢復就行了,rman會自動從多個備份集中讀取需要的資料。
因為備份過來的控制檔案記錄的的檔案位置還是原庫的路徑,所以在還原前需要修改路徑:
用下面的SQL按照一定格式重新命名資料檔案:
SELECT 'set newname for datafile ''' || FILE_NAME ||
''' to ''/data/oradata/precen/' ||lower(TABLESPACE_NAME)||
row_number() over (partition by tablespace_name order by file_id)|| '.ora'';' sql
FROM DBA_DATA_FILES;
在RMAN中執行生成的語句:
run
{
ALLOCATE CHANNEL c1 TYPE DISK;
ALLOCATE CHANNEL c2 TYPE DISK;
set newname for datafile '/opt/oracle/oradata/oradata/bjdb01/cwmlite01.dbf' to '/data/oradata/precen/cwmlite1.ora';
set newname for datafile '/opt/oracle/oradata/oradata/bjdb01/drsys01.dbf' to '/data/oradata/precen/drsys1.ora';
......
set newname for datafile '/opt/oracle/oradata/oradata/bjdb01/xdb01.dbf' to '/data/oradata/precen/xdb1.ora';
set newname for datafile '/opt/oracle/oradata/oradata/bjdb01/xdb02.dbf' to '/data/oradata/precen/xdb2.ora';
restore database;
switch datafile all;
recover database;
alter database open resetlogs;
release channel c1;
release channel c2;
}
6、新增臨時表空間
ALTER TABLESPACE TEMP ADD TEMPFILE '/data/oradata/precen/temp1.ora'
SIZE 2047M REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
ALTER TABLESPACE NDTEMP ADD TEMPFILE '/data/oradata/precen/temp2.ora'
SIZE 2047M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE NDTEMP ADD TEMPFILE '/data/oradata/precen/temp3.ora'
SIZE 2047M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE NDTEMP ADD TEMPFILE '/data/oradata/precen/temp4.ora'
SIZE 2047M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE NDTEMP ADD TEMPFILE '/data/oradata/precen/temp5.ora'
SIZE 2047M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE NDTEMP ADD TEMPFILE '/data/oradata/precen/temp6.ora'
SIZE 2047M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE NDTEMP ADD TEMPFILE '/data/oradata/precen/temp7.ora'
SIZE 2047M REUSE AUTOEXTEND OFF;
三、修改資料庫名稱:
export ORACLE_SID=precen
create spfile from pfile;
nid target=sys/test dbname=precen logfile=~/nid.log
修改引數,把db_name修改為precen
重建密碼檔案:
orapwd file=orapwprecen password=test entries=10
四、開啟資料庫
修改db_name後需要以resetlogs方式開啟資料庫:
alter database open resetlogs;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63851/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- WindowsServer 2012資料庫遷移記錄WindowsServer資料庫
- 資料庫遷移資料庫
- redis資料庫遷移Redis資料庫
- 資料庫遷移 :理解資料庫
- laravel資料庫遷移Laravel資料庫
- linux mysql資料庫遷移LinuxMySql資料庫
- django資料庫遷移-15Django資料庫
- 用rman遷移資料庫資料庫
- 遷移MySQL 5.7資料庫MySql資料庫
- 資料庫遷移神器——Flyway資料庫
- dm資料庫遷移命令資料庫
- SQL Server資料庫遷移SQLServer資料庫
- 雲資料庫管理與資料遷移資料庫
- 資料庫課程作業筆記 - 編寫資料庫遷移檔案資料庫筆記
- dnf資料庫備份&遷移資料庫
- OGG資料庫遷移方案(一)資料庫
- OGG資料庫遷移方案(二)資料庫
- OGG資料庫遷移方案(三)資料庫
- OGG資料庫遷移方案(四)資料庫
- 資料庫邏輯遷移方案資料庫
- Masonite 熟悉步驟小記錄 (三、資料庫遷移)資料庫
- 遷移資料庫資料考慮問題資料庫
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- 無外網Oracle資料庫遷移Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- Laravel migration (資料庫遷移) 的使用Laravel資料庫
- 騰訊雲 雲資料庫遷移資料庫
- laravel 資料庫遷移時報錯Laravel資料庫
- Laravel 學習之資料庫遷移Laravel資料庫
- EF 中多個資料庫遷移資料庫
- ORM實操之資料庫遷移ORM資料庫
- 【Golang+mysql】記一次mysql資料庫遷移(一)GolangMySql資料庫
- MySQL資料庫遷移與MySQL資料庫批量恢復MySql資料庫
- mongodb資料庫備份與恢復(資料庫資料遷移)MongoDB資料庫
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫