資料庫遷移手記

space6212發表於2019-07-21

最近遷移工作做得較多,下面就其中的一個遷移做一個筆記:


資料庫遷移:
伺服器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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章