oracle dataguard是指一种数据库级别的HA方案,最主要的功能是容灾,数据保护,故障恢复等
在生产数据库的事务一致性时,使用产生的物理全备份创建备库,备库通过传输过来的归档日志自动维护备用数据库
将重做的数据应用到备用库上。
1,前提:
primary:192.168.18.1;
oracle_SID:db1
db_unique_name=db1
standby: 192.168.18.2
oracle_sid:standby
db_unique_name=standby
主数据库的准备
1,设置主数据库的force logging
alter database force logging;
2,,创建密码文件
cd $ORACLE_HOME/DBS/ orapwdfile=orapwdb1 password=123 force=yes
3,修改主库的初始化参数
alter system set log_archive_config='dg_config=(db1,standby)' scope=both;
alter system set log_archive_dest1='location=/../db1/arch/ scope=both;
alter system db_unique_name='db1' scope=both;
4,生成数据库备份,
conn target sys/123
backup database format='/oracle/rmanback/%d_%s.dbf' plus archivelog;
5,生成备库的control file
alter database create standby controlfile as '/../oracle/rmanback/ctontrol01.ctl';
6,配置listener.ora 和tnsname.ora文件
启动listener.ora
lsnrctl status
配置tnsname.ora
vi $ORACLE_HOME/network/admin/tnsname.ora
db1 =(DESCRIPTION =(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.1)(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = db1)
standby =(DESCRIPTION =(ADDRESS_LIST =
(ADDRESS=(PROTOCOL = TCP)(HOST = 192.168.18.2)(PORT = 1521)))
(CONNECT_DATA =(SERVICE_NAME = standby)))
配置standby database
1,设置环境变量,并且安装oracle软件
环境变量和主库是一样的
只需要安装软件,不需要安装数据库
./runinstall -silent -respancefile /tmp/instanlloracle.rsp
2,建立相关的目录,
3,建立密码文件
cd $ORACLE_home/dbs/ orapwdfile=orapwSID password=123 force=y
注意密码要与主库的一致,否则会归档失败。
4,建立参数文件pfile
db_name = standby
shared_pool_size = 120M
undo_management = AUTO
undo_tablespace = undotbs
sga_max_size = 200M
sga_target = 160M
db_2k_cache_size = 4M
standby_file_management=AUTO
fal_server='db1'
fal_client='standby'
log_archive_dest_1='location=/u01/app/oracle/product/10.2.0/dbs/arch'
log_archive_dest_2='SERVICE=db1 REOPEN=300'
log_archive_dest_state_1='ENABLE'
log_archive_dest_state_2='ENABLE'
4,拷贝主数据库的rman备份及控制文件到备库
备库的存放位置要与primary database rman备份文件的位置相同,控制文件存放位置要与生成standby database controlfile的位置相同
scp /oracle/rmanback/*.dbf root@192.168.18.2:/oracle/rmanback/
scp /oracle/rmanback/*.ctl root@192.168.18.2:/oracle/oracle/oradata/standby/
5,利用备用的控制文件,把备用数据库启动到mount
connect / as sysdba
startup nomount pfile=$ORACLE_HOME/dbs/initstandby.ora
alter database mount standby database
6,配置listener.ora 和tnsname.ora文件
与主库相同启动listener,tnsname.ora 也与主库配置的一样
当主备库的监听都启动后,进行测试,以例下面可以顺利进行
tnsping db1;
tnsping standby;
sqlplus sys/123@db1
sqlplus sys/123@standby
7,转储数据库
进入rman阶段
connect target /
restore database;
8,恢复数据库
recover managed standby database disconnect from session;
如果需要应用的日志并想手工应用,可以使用如下命令:
recover automatic standby database;
9,检查standby,database 是否创建成功
a,在primary database 切换日志
alter system switch logfile
b, 在primary database上运行下面语句
select max(sequence#)from v$archived_log;
c,在standby database上运行下面命令
select sequence#,applied from v$archived_log order by sequence#;
10, 以spfile文件启动并设为是只读的
create spfile from pfile;
shutdown immediate
startup mount
alter database recover managed standby database disconnect from session;
alter database open read only;