您好,登錄后才能下訂單哦!
--============Oracle ADG搭建==============
--==========準(zhǔn)備階段=========
1.檢查primary為archivelog模式。
select log_mode from v$database;
如果為noarchivelog模式,切換到archivelog模式。
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
執(zhí)行forced logging:
alter database force logging;
2.服務(wù)配置。
primay和standby根據(jù)tnsname來在DG中解析成員,在服務(wù)器中都要配置"$ORACLE_HOME/network/admin/tnsnames.ora"。
可以使用netca或者手工創(chuàng)建。
SICILY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.198.195.163)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sicily)
)
)
SICILYBAK =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.198.195.164)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sicilybak)
)
)
3.記錄primary和standby的db_name和db_unique_name。
show parameter db_name
show parameter db_unique_name
角色 db_name db_unique_name
primary sicily sicily
standby sicily sicilybak
standby和primary的db_name相同,但是db_unique_name不同。
primary和standby的db_unique_name被用在配置log_archive_config的dg_config參數(shù)。
在primary和standby上執(zhí)行,參數(shù)值為primary和所有standby成員的db_unique_name。
alter system set log_archive_config='dg_config=(sicily,sicilybak)';
4.設(shè)置遠(yuǎn)程歸檔路徑。
默認(rèn)的local location歸檔路徑在fast recovery area,應(yīng)該將閃回區(qū)的大小設(shè)置得足夠大。(建議不用)
一般,修改log_archive_dest_1
1) 查看歸檔文件路徑位置
show parameter log_archive_dest_1
2) 關(guān)閉數(shù)據(jù)庫(kù)
alter database chenkpoint;
shutdown immediate
3) 掛載數(shù)據(jù)庫(kù)
start mount
4) 修改歸檔路徑
alter system set log_archive_dest_1='LOCATION=/oracle/archive';
5) 啟動(dòng)數(shù)據(jù)庫(kù)
alter database open;
6) 查看是否生效
select archiver from v$instance;
alter system switch logfile;
ls /oracle/archive
注意,遠(yuǎn)程歸檔路徑中與standby相關(guān)的service和db_unique_name。
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=sicilybak NOAFFIRM ASYNC compression=enable VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sicilybak';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;
如果,需要primary和standby之間來回switchover,讓primary切換為standby角色,需要設(shè)置*_convert參數(shù)來保證服務(wù)器之間的文件名和路徑不同。
--這里配置的是服務(wù)名,表示日志出現(xiàn)GAP時(shí),去哪里去取。
ALTER SYSTEM SET FAL_SERVER=sicilybak;
--這里是將前面的字符串替換為后面的字符串
--ALTER SYSTEM SET DB_FILE_NAME_CONVERT='sicilybak','sicily' SCOPE=SPFILE;
--ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='sicilybak','sicily' SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
注意,有些參數(shù)不能修改,數(shù)據(jù)庫(kù)重啟后生效。
--==========備份==========
1.primary備份
$ rman target /
RMAN> backup database as compressed backupset format '/oracle/rman/full_%D_%u.bak';
2.創(chuàng)建standby控制文件
--在primary上執(zhí)行
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/oracle/rman/standby.ctl';
3.創(chuàng)建standby參數(shù)文件PFILE
CREATE PFILE='/oracle/rman/pfile' FROM SPFILE;
4.修改PFILE與standby相關(guān)的配置。由于是源服務(wù)器的副本,只需要修改如下參數(shù)。
*.db_unique_name='sicilybak'
*.fal_server='sicily'
*.log_archive_dest_2='SERVICE=sicily ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sicily'
--==========拷貝=========
1.在standby上創(chuàng)建數(shù)據(jù)文件目錄、歸檔日志文件目錄、審計(jì)目錄及其他參數(shù)文件中列出的目錄
$ mkdir -p /oracle/rman
$ mkdir -p /oracle/archive
$ mkdir -p /oracle/oradata/sicily
2.從primary拷貝文件到standby
$ # Standby controlfile to all locations.
$ scp oracle@10.198.195.163:/oracle/rman/standby.ctl /oracle/rman/control01.ctl
$ cp /oracle/rman/control01.ctl /oracle/fast_recovery_area/sicily/control02.ctl
$ # Archivelogs
$ scp -r oracle@10.198.195.163:/oracle/archive /oracle/archive
$ # Parameter file.
$ scp oracle@10.198.195.163:/oracle/rman/pfile /oracle/rman/pfile
$ # Remote login password file.
$ scp oracle@10.198.195.163:$ORACLE_HOME/dbs/orapw$ORACLE_SID $ORACLE_HOME/dbs
注意,如果你的備份放在閃回區(qū),那么需要將閃回區(qū)備份拷貝到standby;
如果你的備份不在閃回區(qū),那么必須確保將備份拷貝到與primary相同目錄下。
--==========恢復(fù)===========
1.以PFILE創(chuàng)建SPFILE
create spfile from pfile='/oracle/rman/pfile';
2.恢復(fù)控制文件
RMAN> restore controlfile from '/oracle/rman/standby.ctl';
3.恢復(fù)備份
RMAN> startup mount;
RMAN> restore database;
--===========創(chuàng)建online redo logs和standby redo logs==========
1.創(chuàng)建standby的online redo logs,最好與primary一致
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
ALTER DATABASE ADD LOGFILE ('/oracle/oradata/sicily/redo01.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/oracle/oradata/sicily/redo02.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/oracle/oradata/sicily/redo03.log') SIZE 50M;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
2.創(chuàng)建standby的standby redo logs,如果primary要被切換為standby角色,那在primary上也要建。
standby redo logs應(yīng)該至少和最大的online redo log一樣大,比online redo logs多一個(gè)。
ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/oradata/sicily/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/oradata/sicily/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/oradata/sicily/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/oradata/sicily/standby_redo04.log') SIZE 50M;
--=============啟動(dòng)應(yīng)用進(jìn)程==============
# Background redo apply. Control is returned to the session once the apply process is started.
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
#you need to cancel the apply process, issue the following command.
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE OPEN READ ONLY;
#you have configured standby redo logs, you can start real-time apply using the following command.
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
--============檢查===========
select database_role,LOG_MODE,PROTECTION_MODE,PROTECTION_LEVEL from v$database;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。