Debian下配置Oracle DataGuard

分别安装主库和备库的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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值