遷移: (10g 64老機器,老存儲) ------》(11g 64新機器,新存儲)
注意要點:新老服務的時間,字符集,sid
升級順序:10.2.0.1------>10.2.0.4或10.2.0.5---->11.2.0.1
新機器上安裝2套oracle 目標11G數據庫軟件 和10g oracle軟件
操作步驟完全一樣,當 新庫10g能打開時,關庫,讓新庫11g 以 升級模式打開,升級庫,即可
old:
1.關閉監聽,和業務連接。先做全庫備份:
lsnrctl stop
sqlplus as sysdba
alter system switch logfile;
alter system switch logfile;
$ rman target / log=/home/oracle/rman/log/dqianyi_rman.log
RMAN> backup database format '/home/oracle/backup/full_%d_%T_%s_%p.bak';
2.確定位置名稱:
SQL> select file#,ts#,name from v$datafile;
FILE# TS# NAME
---------- ---------- ---------------------------------------------
1 0 /u01/app/ora10g/oradata/ora10g/system01.dbf
2 1 /u01/app/ora10g/oradata/ora10g/undotbs01.dbf
3 2 /u01/app/ora10g/oradata/ora10g/sysaux01.dbf
4 4 /u01/app/ora10g/oradata/ora10g/users01.dbf
3.備份數據文件,參數文件,控制文件
寫成腳本:
[oracle@k214 log]$ cat x.sh
#!/bin/bash
rman target / log=/home/oracle/rman/log/1qianyi_rman.log << EOF
run
{allocate channel c1 type disk;
allocate channel c2 type disk;
copy
datafile '/u01/app/ora10g/oradata/ora10g/system01.dbf' to '/u01/new/system01.dbf',
datafile '/u01/app/ora10g/oradata/ora10g/undotbs01.dbf' to '/u01/new/undotbs01.dbf',
datafile '/u01/app/ora10g/oradata/ora10g/sysaux01.dbf' to '/u01/new/sysaux01.dbf',
datafile '/u01/app/ora10g/oradata/ora10g/users01.dbf' to '/u01/new/users01.dbf';
}
EOF
============================
備份控制文件
sqlplus / as sysdba
alter database backup controlfile to trace as '/home/oracle/new_ctl.sql';
RMAN> BACKUP CURRENT CONTROLFILE format '/home/oracle/arch/con_%d_%T_%s_%p.ctl'; --這步不需要
=============================
4. 打包數據文件並遠程拷貝:
cd /u01
zip -qr new.zip new
scp -P22 /u01/new.zip 192.168.0.215:/u01/
下面5.6都是中斷時間
5.備份歸檔 然后關機(關機開始中斷)
#!/bin/bash
rman target / nocatalog log /home/oracle/rman/log/rman_arch.log append<<EOF
run
{allocate channel c1 type disk;
backup archivelog all format '/home/oracle/arch/arch_%d_%T_%s_%p';
}
shutdown immediate //備份歸檔可以分多次去做,但是最后一次做完要關機
EOF
6.打包和遠程拷貝:
cd /home/oracle/
zip -qr arch.zip arch
scp -P22 /home/oracle/arch.zip 192.168.0.215:/u02/backup/
#7.拷貝redo 到new機器存儲上
scp /u01/app/ora10g/oradata/ora10g/red* 192.168.0.215:/u01/new/
可以拷貝多次,最關鍵的就是最后一次。
===================================================================
new:
安裝完11g 64 oracle軟件,還沒有建庫,但是已經有監聽了。
1.解壓數據文件包和歸檔文件包
su - oracle
cd /u01 ;unzip new.zip
cd /u02/backup/ ;unzip arch.zip
2.修改參數文件並建立目錄:
cat /u01/app/oracle/dbs/new.ora
orcl.__db_cache_size=67108864
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__oracle_base='/u01/app'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=146800640
orcl.__sga_target=276824064
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=130023424
orcl.__streams_pool_size=8388608
*.audit_file_dest='/u01/app/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/new/control01.ctl','/u01/new/control02.ctl','/u01/new/control03.ctl'
*.db_2k_cache_size=52428800
*.db_block_size=8192
*.db_domain=''
*.db_name='ora10g'
*.db_recovery_file_dest='/u01/app/flash_recovery_area'
*.db_recovery_file_dest_size=4039114752
*.diagnostic_dest='/u01/app'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_dest_1='location=/u01/backup/arch'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=422576128
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
建立目錄:
mkdir -p /u01/backup/arch
mkdir -p /u01/app/admin/orcl/adump
mkdir -p /u01/app/flash_recovery_area
3.啟動oracle 到mount
SQL> startup nomount pfile=/u01/app/oracle/dbs/new.ora;
====================================
主庫備份:
全部備份文件放在一個路徑,順序是 數據文件,歸檔,控制文件。
1.庫全備:
backup database format='/home/oracle/rman/%U_%s.bak';
alter system archive log current
alter system switch logfile
2.歸檔全備:
BACKUP ARCHIVELOG ALL format='/home/oracle/rman/%U_%s.arc';
BACKUP ARCHIVELOG 命令比較靈活, ALL 是指備份當前所有可訪問到的歸檔文件,你還可以通過 UNTIL 、 SCN 、 TIME 、 SEQUENCE 等參數靈活指定要備份的歸檔區間,這里不再一一演示,感興趣的朋友可以自行嘗試。
3.控制文件備份:
BACKUP CURRENT CONTROLFILE format='/home/oracle/rman/%U_%s.ctl';
cd /home/oracle
zip -qr rman.zip rman
scp rman.zip k101:/home/oracle/
備庫:
存放rman備份集合的地方和主庫一致(因為在修復控制文件后,修復數據庫(restore)和恢復數據庫(recover,需要歸檔的)這個時候通過控制文件找到響應的路徑(主庫所在的路徑)
su- oracle
[oracle@k101 ~]$unzip rman.zip
[oracle@k101 rman]$ cd /home/oracle/rman
[oracle@k101 rman]$ ll
total 310428
-rw-r----- 1 oracle oinstall 291266560 Oct 9 02:13 01pkjad1_1_1_1.bak
-rw-r----- 1 oracle oinstall 7143424 Oct 9 02:13 02pkjadq_1_1_2.bak
-rw-r----- 1 oracle oinstall 12023296 Oct 9 02:32 03pkjbhr_1_1_3.arc
-rw-r----- 1 oracle oinstall 7110656 Oct 9 02:35 04pkjboa_1_1_4.ctl
rman>restore controlfile from '/home/oracle/rman/04pkjboa_1_1_4.ctl';
SQL>alter database mount;
rman>restore database from '/home/oracle/rman/04pkjboa_1_1_4.ctl';
RMAN> restore database; //修復數據庫文件
RMAN> recover database; //先自動修復歸檔,然后恢復數據庫文件,這里將報錯
看報錯信息,能看到rman歸檔追加到多少號了
=====================================
4.手動建立控制文件(由於之前遠程拷貝redo,因此可以順利打開):
SQL>CREATE CONTROLFILE REUSE DATABASE "ORA10G" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/new/redo01.log' SIZE 50M,
GROUP 2 '/u01/new/redo02.log' SIZE 50M,
GROUP 3 '/u01/new/redo03.log' SIZE 50M
DATAFILE
'/u01/new/system01.dbf',
'/u01/new/undotbs01.dbf',
'/u01/new/sysaux01.dbf',
'/u01/new/users01.dbf'
CHARACTER SET ZHS16GBK
;
確定數據庫是否為mount狀態:
SQL> select status from v$instance;
STATUS
------------
STARTED
SQL> alter database mount;
Database altered.
5.建立spfile
SQL> create spfile from pfile='/u01/app/oracle/dbs/new.ora';
SQL>shutdown abort
SQL> startup;
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/u01/new/system01.dbf'
6.讓數據庫識別新的rman備份集位置:
[oracle@k215 arch]$ rman target / log=/home/oracle/rman/log/know_qianyi_rman.log
RMAN> catalog start with '/u02/backup/arch/';
7.解壓歸檔:
RMAN>recover database; //會報錯,但是會自動解壓歸檔
8.有了歸檔,就可以進行常規介質恢復:
SQL> recover database using backup controlfile until cancel;
/u01/backup/arch/1_16_860079637.dbf
SQL> recover database using backup controlfile until cancel;
/u01/new/redo01.log
SQL> recover database using backup controlfile until cancel;
/u01/new/redo02.log
SQL> recover database using backup controlfile until cancel;
/u01/new/redo03.log
Log applied.
Media recovery complete.
9.升級數據庫(10.2.0.1------>10.2.0.4或10.2.0.5---->11.2.0.1):
SQL> alter database open resetlogs upgrade;
SQL> shutdown immediate;
SQL> startup upgrade;
SQL> spool /home/oracle/patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> spool off
SQL> startup(數據庫可以正常啟動) 在運行下面的腳本(重新編譯PL/SQL包,使其能夠被使用)
SQL> @ /rdbms/admin/utlrp.sql
10.全備
=============
alter database rename file '/u02/app/PROD/oradata/PROD/redo01.log' to '/u01/app/PROD/oradata/PROD/redo01.log';
alter database rename file '/u02/app/PROD/oradata/PROD/redo02.log' to '/u01/app/PROD/oradata/PROD/redo02.log';
alter database rename file '/u02/app/PROD/oradata/PROD/redo03.log' to '/u01/app/PROD/oradata/PROD/redo03.log';
alter database rename file '/u02/app/PROD/oradata/PROD/users01.dbf' to '/home/oracle/datafile/users01.dbf';
alter database rename file '/u02/app/PROD/oradata/PROD/sysaux01.dbf' to '/home/oracle/datafile/sysaux01.dbf';
alter database rename file '/u02/app/PROD/oradata/PROD/undotbs01.dbf' to '/home/oracle/datafile/undotbs01.dbf';
alter database rename file '/u02/app/PROD/oradata/PROD/system01.dbf' to '/home/oracle/datafile/system01.dbf';
alter database rename file '/u02/app/PROD/oradata/PROD/example01.dbf' to '/home/oracle/datafile/example01.dbf';