相信每一个配置过ADG或者db2 hadr的兄弟们都会有自己总结的一份步骤提炼,都有自己总结的一份关于坑的标注,所有人的提炼和记录将能帮助大家总结成一份实实在在的提炼手册。欢迎大家各自表达一些观点。
PDBarydb = pdb
standbydb = sdb
rac
SQL> ALTER DATABASE FORCE LOGGING;
oracle@$ srvctl stop database -d pdb
oracle@$ srvctl start database -d pdb -o mount
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP X '+FRA' size 500m;
...
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(PDB,SDB)';
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PDB';
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=SDB LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PDBARY_ROLE) DB_UNIQUE_NAME=SDB';
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE;
SQL> ALTER SYSTEM SET FAL_SERVER=SDB;
SQL> ALTER SYSTEM SET FAL_CLIENT=PDB;
SQL> ALTER SYSTEM SET DB_FILE_NAME_CONVERT='+DATA/SDB/DATAFILE','+DATA/PDB/DATAFILE' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='+DATA/SDB/ONLINELOG','+DATA/PDB/ONLINELOG' SCOPE=SPFILE;
RMAN> run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database format '/u01/app/oracle/databases/stage/%U';
backup archivelog all format '/u01/app/oracle/databases/stage/%U';
backup current controlfile for standby format '/u01/app/oracle/databases/stage/%U';
}
SQL>create pfile='/u01/app/oracle/databases/PDB/stage/initPDB.ora' from spfile;
oracle@$ scp /u01/app/oracle/databases/PDB/stage/initPDB.ora oracle@SDB:/u01/app/oracle/databases/SDB/stage/
PDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = pdb.example.cn )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = PDB)
)
)
SDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sdb.example.cn )(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SDB)
)
)
DB_NAME=PDB
DB_UNIQUE_NAME=SDB
LOG_ARCHIVE_CONFIG='DG_CONFIG=(PDB,SDB)'
LOG_ARCHIVE_DEST_1='LOCATION=+FRA/SDB/REDO/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=SDB'
LOG_ARCHIVE_DEST_2='SERVICE=PDB LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PDBARY_ROLE) DB_UNIQUE_NAME=PDB'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
DB_FILE_NAME_CONVERT='+DATA/PDB/DATAFILE','+DATA/SDB/DATAFILE'
LOG_FILE_NAME_CONVERT='+DATA/PDB/ONLINELOG','+DATA/SDB/ONLINELOG'
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
STANDBY_ARCHIVE_DEST=''+FRA/SDB/ARCH/'
STANDBY_FILE_MANAGEMENT=AUTO
FAL_CLIENT=SDB
FAL_SERVER=PDB
oracle@$ scp /u01/app/oracle/dbs/opapwPDB1 sdb.example.cn:/u01/app/oracle/dbs/
oracle@$ cd /u01/app/oracle/dbs/
oracle@$ mv orapwPDB orapwSDB
oracle@$ cd /u01/app/oracle/databases/SDB
oracle@$ mkdir data redo oradata stage udump bdump cdump
SQL>create spfile from pfile='/u01/app/oracle/databases/stage/initSDB.ora';
SQL>start nomount;
sql> alter system archive log current;
oracle@$ RMAN target sys/<password>@PDB auxiliary /
RMAN> duplicate target database for standby dorecover;
SQL> sqlplus / as sysdba
SQL> startup
SQL> alter database recover managed standby database disconnect;
SQL> alter system set log_archive_dest_state_2=enable;
STANDBY:
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
PRIMARY:
SQL> ALTER SYSTEM SWITCH LOGFILE;
STANDBY:
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
DB2的Hadr主要有以下步骤
1.备端环境搭建,要关注主备端的资源和用户等配置的一致性,特别是一些应用用户密码,过期策略之类。配置services和hosts文件等解析相关的配置,配置db2set等。
2.主端备份,备端恢复,备端恢复结束应出于rollforward的状态。
3.配置数据库hadr相关参数,主要是主机,实例和端口,选择合适的同步方式
4.先起备端hadr为standby,后起主端hadr为primary。启动成功则ok
5.如应用对主备库的访问切换不是通过网络设备,如F5,ACE,则需在主备端配置alternate server
做ADG 关键的不是后续而是前传
把网络名称,DG_CONFIG,TNSNAME.ORA LISTER.ORA 监听都联通就好了
另外就是SYS密码主备要一致
其他的就很简单了
主库设置成强制归档模式
在设置下LOG_ARCHIVE_DEST_X 就行了
到了备库环境,最好跟主库目录环境搞成一样.
把主库的内存参数文件,搞过来,根据备库要求进行修改和裁剪.
启动备库内存参数
然后用RMAN DUMPLATE直接复制文件过来就行.
DUMP方式运行过程中会报错,主要是内存参数问题.
只是RMAN报错一向来不太友好明确的.
当然这方法适合本地内网,异地备库不适合.
异地备库采用RMAN备份还原方式
这方式要注意先备份数据文件和归档,然后再生产DG控制文件.
把DG控制文件和备份集 考到异地备库的时候,要注意目录结构最好跟主库一致.
关键是 备份目录要一样,否则控制文件无法去找!
其他数据,日志目录,你可以通过内存参数进行修改.