1.5测试远程登录
CMD>sqlplus sys/pwd@ORCLDG1 as sysdba
CMD>sqlplus sys/pwd@ORCLDG2 as sysdba
2.修改主库参数
SQL> ALTER SYSTEM SET INSTANCE_NAME='orcl' SCOPE=SPFILE; --可不配,使用默认设置
SQL> ALTER SYSTEM SET DB_UNIQUE_NAME='orcldg1' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET LOCAL_LISTENER='orcldg1' SCOPE=SPFILE; --配TNS Name,也可不配使用默认设置
SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcldg1,orcldg2)' SCOPE=SPFILE; --这里是db_unique_name!如果db_unique_name一致的话,这个参数不需要配
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=D:\app\Administrator\product\11.1.0.6\archive\arch LGWR VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcldg1' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcldg2 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg2' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1='ENABLE' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='DEFER' SCOPE=SPFILE;--延迟同步
SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='AUTO' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET FAL_CLIENT='orcldg1' SCOPE=SPFILE; --配主库TNS Name
SQL> ALTER SYSTEM SET FAL_SERVER=orcldg2; SCOPE=SPFILE;--配备库TNS Name
SQL> ALTER SYSTEM SET DB_FILE_NAME_CONVERT='D:\app\Administrator\database\dg','D:\app\Administrator\database\dg\' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='D:\app\Administrator\database\dg','D:\app\Administrator\database\dg\' SCOPE=SPFILE;
SQL> ALTER SYSTEM SET STANDBY_ARCHIVE_DEST='D:\app\Administrator\product\11.1.0.6\archive\arch' SCOPE=SPFILE; --配的路径跟LOG_ARCHIVE_DEST_1一致,也可不配,使用默认设置
SQL> ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='ARC_%T_%S_%R.arc' SCOPE=SPFILE; --可不配,使用默认设置
SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=5 SCOPE=SPFILE; --可不配,使用默认设置
3.主库启用FORCE LOGGING模式
SQL> ALTER DATABASE FORCE LOGGING;
4.开启归档模式
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
5.主库做全备份,并传输备份集到备库的相同位置
CMD> RMAN TARGET /
RUN
{
ALLOCATE CHANNEL C0 DEVICE TYPE DISK;
ALLOCATE CHANNEL C1 DEVICE TYPE DISK;
ALLOCATE CHANNEL C2 DEVICE TYPE DISK;
ALLOCATE CHANNEL C3 DEVICE TYPE DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\backup\%F';
BACKUP DATABASE FORMAT 'D:\backup\ora11g_full_db_%d_%T_%u.bak';
BACKUP ARCHIVELOG ALL FORMAT 'D:\backup\ora11g_arc_%s_%p_%t.bak';
}
如果主库备份盘空间不足可以使用压缩备份,但耗时稍长;
压缩备份:
将上面脚本中BACKUP DATABASE FORMAT 修改为BACKUP AS COMPRESSED DATABASE FORMAT即可
备份时间较长,在备份过程中可以继续下面的配置.
10.恢复备库完毕后将主库的LOG_ARCHIVE_DEST_STATE_2设置为ENABLE
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE';
11.主备库添加standby redo log
11.1查看重做日志信息
查看日志组成员
SQL> SELECT MEMBER FROM V$LOGFILE;
查看日志大小
SQL> SELECT GROUP,BYTES/1024*1024*1024,MEMBERS FROM V$LOG;
查看standby redo log
SQL> SELECT GROUP#, BYTES FROM V$STANDBY_LOG;
11.2新增standby redo log
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 'D:\app\Administrator\database\dg\stdredo04.log' SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 'D:\app\Administrator\database\dg\stdredo05.log' SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 'D:\app\Administrator\database\dg\stdredo06.log' SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 'D:\app\Administrator\database\dg\stdredo07.log' SIZE 50M;
注:
Standby redo log的组数参考公式:(online redo log组数 + 1) * 数据库线程数;单机线程数为1,RAC一般为2。
Standby redo log的组成员数和大小也尽量和online redo log一样。
12.备库启用
启动备库到(备用状态的)mount模式
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
设置备库为应用日志状态
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
取消备库自动恢复
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
启动备库到readonly模式
SQL> ALTER DATABASE OPEN;
设置备库为时时应用日志状态
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;