本文參考網絡部分資料編寫,作為參考筆記
環境: WINDOWS2003+Oralcle11.2.0.1
建議使用 虛拟機來模拟,這樣主備兩邊的環境完全一樣。
假設主庫的機器名為PRIMARY , IP位址為192.168.1.10
備庫的機器名為STANDBY , IP位址為192.168.1.20
主庫:
1. 設定Listener.ora 檔案,增加紅色内容,目的是實作監聽的靜态注冊。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhsot)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app\Administrator
監聽的靜态注冊主要是用于資料庫不在open 狀态時,也可以通過監聽連接配接資料庫。
2. 設定TNSMAE.ORA 檔案
PRIMARY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
3. 設定SQLNET.ORA檔案
SQLNET.AUTHENTICATION_SERVICES= (NONE)
4. 設定密碼檔案
$ORACLE_HONE\database\目錄下的orapwd.ora 檔案
5. 建立歸檔目錄 D:\archive
将此時的主機做個clone, 克隆後的機器ip為192.168.1.20, 機器名為standby
此時達到的目的就是兩個機器有相同的Listener.ora、TNSMAE.ORA、SQLNET.ORA和檔案。備庫上雖然有資料庫,但不重要,可以在關閉資料庫的時候,删除資料檔案。
設定主庫的歸檔和force logging 屬性,增加standby redo log(假設redo log 原來隻有3組,檔案大小為50M)
Startup mount
alter database force logging ;
alter database archivelog;
alter database add standby logfile group 4 'D:\app\Administrator\oradata\orcl\redo04.log' size 50M ;
alter database add standby logfile group 5 'D:\app\Administrator\oradata\orcl\redo05.log' size 50M ;
alter database add standby logfile group 6 'D:\app\Administrator\oradata\orcl\redo06.log' size 50M ;
修改spfile,中的參數:
*.db_name='orcl'
*.log_archive_format='ARC_%T%S%r.ARC'
*.db_unique_name='orcl'
*.log_archive_config='DG_CONFIG=(primary,standby)'
*.log_archive_dest_1='location=D:\archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=primary'
*.log_archive_dest_2='SERVICE=standby VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLES) db_unique_name=standby'
*.log_archive_dest_state_1=ENABLE
*.log_archive_dest_state_2=ENABLE
*.fal_server='standby'
*.fal_client='primary'
可以通過create pfile from spfile 方式導出pfile 檔案,修改pfile 後,再 create spfile from pfile 方式完成。fal_server 據說在11GR2 已不使用,但由于是轉自網上資料,先沒有去除。
備庫:
Startup nomount pfile=…
随便什麼pfile ,隻要能啟動即可。
執行:
rman target sys/[email protected] auxiliary sys/[email protected]
運作
run
{
duplicate target database for standby from active database nofilenamecheck spfile
set db_unique_name='standby'
set control_files='D:\app\Administrator\oradata\orcl\CONTROL01.CTL'
set log_archive_max_processes='20'
set fal_server='primary'
set fal_client='standby'
set log_archive_dest_1='location=D:\archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) db_unique_name=standby'
set log_archive_dest_2='SERVICE=primary VALID_FOR=(ALL_LOGFILES,PRIMARY_ROLES) db_unique_name=primary'
set standby_file_management='auto';
}
備庫:
此時是mount 狀态
alter database recover managed standby database using current logfile disconnect from session;
如果要打開資料庫:
alter database recover managed standby database cancel;
alter database open read only;
alter database recover managed standby database using current logfile disconnect from session;
此時的備庫就是一個隻讀的實時鏡像。
切換:
Primary->standby
alter database commit to switchover to physical standby with session shutdown;
shutdown immediate
startup mount;
alter database open read only;
alter database recover managed standby database using current logfile disconnect from session;
standby->primary
alter database commit to switchover to primary with session shutdown;
alter database open;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9036/viewspace-1846487/,如需轉載,請注明出處,否則将追究法律責任。
轉載于:http://blog.itpub.net/9036/viewspace-1846487/