--============Oracle ADG搭建==============
--==========准备阶段=========
1.检查primary为archivelog模式。 select log_mode from v$database;
如果为noarchivelog模式,切换到archivelog模式。 shutdown immediate; startup mount; alter database archivelog; alter database open;
执行forced logging: alter database force logging;
2.服务配置。
primay和standby根据tnsname来在DG中解析成员,在服务器中都要配置"$ORACLE_HOME/network/admin/tnsnames.ora"。 可以使用netca或者手工创建。 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参数。
在primary和standby上执行,参数值为primary和所有standby成员的db_unique_name。 alter system set log_archive_config='dg_config=(sicily,sicilybak)';
4.设置远程归档路径。
默认的local location归档路径在fast recovery area,应该将闪回区的大小设置得足够大。(建议不用) 一般,修改log_archive_dest_1
1) 查看归档文件路径位置 show parameter log_archive_dest_1 2) 关闭数据库 alter database chenkpoint; shutdown immediate 3) 挂载数据库 start mount 4) 修改归档路径 alter system set log_archive_dest_1='LOCATION=/oracle/archive'; 5) 启动数据库 alter database open; 6) 查看是否生效 select archiver from v$instance; alter system switch logfile; ls /oracle/archive
注意,远程归档路径中与standby相关的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角色,需要设置*_convert参数来保证服务器之间的文件名和路径不同。 --这里配置的是服务名,表示日志出现GAP时,去哪里去取。 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; 注意,有些参数不能修改,数据库重启后生效。
--==========备份==========
1.primary备份 $ rman target / RMAN> backup database as compressed backupset format '/oracle/rman/full_%D_%u.bak';
2.创建standby控制文件 --在primary上执行 ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/oracle/rman/standby.ctl';
3.创建standby参数文件PFILE CREATE PFILE='/oracle/rman/pfile' FROM SPFILE;
4.修改PFILE与standby相关的配置。由于是源服务器的副本,只需要修改如下参数。 *.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上创建数据文件目录、归档日志文件目录、审计目录及其他参数文件中列出的目录 $ 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
注意,如果你的备份放在闪回区,那么需要将闪回区备份拷贝到standby; 如果你的备份不在闪回区,那么必须确保将备份拷贝到与primary相同目录下。
--==========恢复===========
1.以PFILE创建SPFILE create spfile from pfile='/oracle/rman/pfile';
2.恢复控制文件 RMAN> restore controlfile from '/oracle/rman/standby.ctl';
3.恢复备份 RMAN> startup mount; RMAN> restore database;
--===========创建online redo logs和standby redo logs==========
1.创建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.创建standby的standby redo logs,如果primary要被切换为standby角色,那在primary上也要建。 standby redo logs应该至少和最大的online redo log一样大,比online redo logs多一个。 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;
--=============启动应用进程==============
# 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; (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|