分别安装主库和备库的oracle软件,主库创建数据库库,备库只安装数据库软件。
一. 配置primary database
--设置primary库为force Logging模式(为了便于切换,建议standby库也设置为force logging),这样所有的改变都会放入重做日志中,确保了可靠的恢复。
SQL> ALTER DATABASE FORCE LOGGING;
SQL> select force_logging from v$database;
--设置主库初始化参数并修改
SQL> create pfile from spfile;
复制两份:一份修改为primary,一份修改为standby
--设置归档模式。
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
--Create a Backup Copy of the Primary Database Datafiles
rman target /
RMAN> run{
allocate channel c1 type disk;
backup format '/oracle/rman/%u_%s.bak' database;
sql 'alter system archive log current';
backup filesperset 10 archivelog all format '/oracle/rman/%u_%s.bak';
backup format '/oracle/rman/controlbak.bak' current controlfile for standby;
release channel c1;
}
也可以这样创建控制文件或在RMAN备份里执行,二者拷贝到备库后复制多份,复制改名为(control01.ctl,control02.ctl,control03.ctl)
--Create a Control File for the Standby Database
SQL> alter database create standby controlfile as '/oracle/rman/controlbak.bak';
或
RMAN> copy current controlfile for standby to '/oracle/rman/controlbak.bak';
--修改主库参数文件:
*.instance_name='orcl'
*.service_names='primary','orcl'
*.db_unique_name=primary
*.log_archive_config='DG_CONFIG=(primary,standby)'
*.log_archive_dest_1='location=/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary'
*.LOG_ARCHIVE_DEST_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.LOG_ARCHIVE_MAX_PROCESSES=3
*.FAL_SERVER=standby
*.FAL_CLIENT=primary
*.STANDBY_FILE_MANAGEMENT=AUTO
##下面这段可以省略
--在主库创建standby redo log大小与主库联机日志文件大小一样,组数至少比primary中的log file数量大1(可以省略)
SQL> alter database add standby logfile group 5 '/oracle/oradata/orcl/standbyredo05.log' size 100M;
SQL> alter database add standby logfile group 6 '/oracle/oradata/orcl/standbyredo06.log' size 100M;
SQL> alter database add standby logfile group 7 '/oracle/oradata/orcl/standbyredo07.log' size 100M;
SQL> alter database add standby logfile group 8 '/oracle/oradata/orcl/standbyredo08.log' size 100M;
SQL> alter database add standby logfile group 9 '/oracle/oradata/orcl/standbyredo09.log' size 100M;
--查询
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
SQL>shutdown immediate
--删除主库的spfileorcl.ora参数文件
--用pfile启动,再重新创建spfile.
SQL> create spfile from pfile='/oracle/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora';
SQL> startup
--分别在主库和备库配置监听并启动
二. 配置standby database
--拷贝Backup datafiles 、Standby control file 、pfile、password file等到相应的目录
(将standby.ctl拷贝到备库后复制多份,复制改名为control01.ctl,control02.ctl,control03.ctl)
oracle@linux:~> scp *.bak 10.1.11.32:/oracle/rman
--Prepare an Initialization Parameter File for the Standby Database
*.instance_name='orcl'
*.service_names='standby','orcl'
*.db_unique_name=standby
*.log_archive_config='DG_CONFIG=(primary,standby)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
*.LOG_ARCHIVE_DEST_2='SERVICE=primary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.LOG_ARCHIVE_MAX_PROCESSES=3
*.FAL_SERVER=primary
*.FAL_CLIENT=standby
*.STANDBY_FILE_MANAGEMENT=AUTO
--在备库端还原数据库
依照主库的数据文件位置,在备库上创建相应的目录结构(最好与主库一致);
mkdir -p /oracle/app/oracle/admin/orcl/adump
mkdir -p /oracle/app/oracle/admin/orcl/udump
mkdir -p /oracle/app/oracle/admin/orcl/bdump
mkdir -p /oracle/app/oracle/admin/orcl/cdump
mkdir -p /oracle/app/oracle/admin/orcl/pfile
mkdir -p /oracle/app/oracle/admin/orcl/dpdump
sqlplus /nolog
SQL> conn / as sysdba
SQL> create spfile from pfile='/oracle/app/oracle/product/10.2.0/db_1/dbs/initorcl.ora';
SQL> startup nomount;
rman target /
RMAN> restore controlfile from '/oracle/rman/controlbak.bak';
RMAN> alter database mount;
RMAN> restore database;
RMAN> recover database;
SQL> alter database add standby logfile group 5 '/oracle/oradata/orcl/standbyredo05.log' size 100M;
SQL> alter database add standby logfile group 6 '/oracle/oradata/orcl/standbyredo06.log' size 100M;
SQL> alter database add standby logfile group 7 '/oracle/oradata/orcl/standbyredo07.log' size 100M;
SQL> alter database add standby logfile group 8 '/oracle/oradata/orcl/standbyredo08.log' size 100M;
SQL> alter database add standby logfile group 9 '/oracle/oradata/orcl/standbyredo09.log' size 100M;
--查询
SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
--启动redo apply
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
***取消redo应用***
SQL> alter database recover managed standby database cancel;
SQL> shutdown immediate;
--测试是否成功
--确认现有备库归档重做日志文件
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
--在主数据库上执行, 测试归档操作到物理备数据库
SQL> ALTER SYSTEM SWITCH LOGFILE;
--在备库上检查是否归档和应用
SQL> SELECT SEQUENCE#, FIRST_TIME,NEXT_TIME,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
--查看数据库角色
SQL> select database_role,protection_mode,protection_level,switchover_status from v$database;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7478833/viewspace-441045/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7478833/viewspace-441045/