1. 准备
安装两台单实例11G,主库安装数据库,备库只安装软件。实例名称 orclpri orclsla
2. 配置hosts文件(主备库都配置)
vi etc/hosts192.168.100.110 dg_pri192.168.100.111 dg_sla
3. 主库设置为force logging模式
SQL> alter database force logging;SQL>select force_logging from v$database;
4. 主库修改为归档模式
SQL> shutdown immediateSQL> startup mount SQL> alter database archivelog; //开启归档模式SQL> alter database noarchivelog; 关闭归档模式SQL> alter system set log_archive_dest_1='location=/data/archive' scope=spfile; 修改归档路径SQL> archive log list;
5. 添加主库的standby redo log
主库添加 standby redo log:大小和 online redo 相同,比 online redo group 多一组。
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/data/oracle/oradata/orclpri/redo04.log') size 50M; SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/data/oracle/oradata/orclpri/redo05.log') size 50M; SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/data/oracle/oradata/orclpri/redo06.log') size 50M; SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/data/oracle/oradata/orclpri/redo07.log') size 50M; SQL>select group#,type,member from v$logfile;
6. 创建 Listener 并配置静态注册(主备库都做)
主库:
[oracle@dg_pri dbs]$ cd data/oracle/product/11.2.0/db_1/network/admin/[oracle@dg_pri admin]$ vi listener.ora# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orclpri) (ORACLE_HOME = /data/oracle/product/11.2.0/db_1) (SID_NAME = orclpri) ) )LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.110)(PORT = 1521)) )ADR_BASE_LISTENER = /data/oracle[oracle@dg_pri admin]$ vi tnsnames.oraORCL_PRI= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.110)(PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=orclpri) ) )ORCL_SLA= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.111)(PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=orclsla) ) )
备库:
[oracle@dg_sla ~]$ cd /data/oracle/product/11.2.0/db_1/network/admin/[oracle@dg_sla admin]$ vi listener.oraSID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orclsla) (ORACLE_HOME = /data/oracle/product/11.2.0/db_1) (SID_NAME = orclsla) ) )LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.111)(PORT = 1521)) )ADR_BASE_LISTENER = /data/oracle[oracle@dg_sla admin]$ vi tnsnames.oraORCL_PRI= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.110)(PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=orclpri) ) )ORCL_SLA= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.111)(PORT=1521)) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=orclsla) ) )
主备库使用tnsping测试是否相同
[oracle@dg_pri admin]$tnsping ORCL_PRI[oracle@dg_pri admin]$tnsping ORCL_SLA
重启监听
lsnrctl stop
lsnrctl start
7. 在备库创建相关的目录
oracle用户创建:
mkdir -p /data/archivemkdir -p /data/oracle/adminmkdir -p /data/oracle/oradatamkdir -p /data/oracle/fast_recovery_area/orclslamkdir -p /data/oracle/fast_recovery_area/orclsla/onlinelogmkdir -p /data/oracle/oradata/orclslamkdir -p /data/oracle/admin/orclslamkdir -p /data/oracle/admin/adumpmkdir -p /data/oracle/admin/orclsla/adump mkdir -p /data/oracle/admin/orclsla/dpdump mkdir -p /data/oracle/admin/orclsla/pfile mkdir -p /data/oracle/admin/orclsla/scriptsmkdir -p /data/oracle/admin/orclpri/adump
8. 在主库创建 pfile 文件并修改pfile 内容
主库:
SQL> create pfile='/home/oracle/pfile' from spfile;在/home/oracle/pfile新增下内容*.db_unique_name=orclpri*.log_archive_config='dg_config=(orclpri,orclsla)'*.log_archive_dest_1='location=/data/archive valid_for=(all_logfiles,all_roles) db_unique_name=orclpri'*.log_archive_dest_2='service=orcl_sla valid_for=(online_logfiles,primary_role) db_unique_name=orclsla'*.log_archive_dest_state_1=enable*.log_archive_dest_state_2=enableREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVELOG_ARCHIVE_FORMAT=%t_%s_%r.arc*.standby_file_management='auto'*.fal_server='orcl_sla'*.fal_client='orcl_pri'*.log_file_name_convert='/data/oracle/oradata/orclpri','/data/oracle/oradata/orclsla'*.db_file_name_convert= '/data/oracle/oradata/orclpri','/data/oracle/oradata/orclsla'SQL> shutdown immediateSQL>create spfile from pfile='/home/oracle/pfile';SQL> shutdown abort;SQL> startup
备库:
将主库的参数文件copy到备库到修改
scp /home/oracle/pfile 192.168.100.111:/data/oracle/product/11.2.0/db_1/dbs*.db_unique_name=orclsla*.log_archive_config='dg_config=(orclpri,orclsla)'*.log_archive_dest_1='location=/data/archive valid_for=(all_logfiles,all_roles) db_unique_name=orclsla'*.log_archive_dest_2='service=orcl_pri valid_for=(online_logfiles,primary_role) db_unique_name=orclpri'*.log_archive_dest_state_1=enable*.log_archive_dest_state_2=enableREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVELOG_ARCHIVE_FORMAT=%t_%s_%r.arc*.standby_file_management='MANUAL'*.fal_server='orcl_pri'*.fal_client='orcl_sla'*.log_file_name_convert='/data/oracle/oradata/orclpri','/data/oracle/oradata/orclsla'*.db_file_name_convert= '/data/oracle/oradata/orclpri','/data/oracle/oradata/orclsla'SQL> startup nomount; //可能会出现LRM-00109,根据提示的文件名修改刚才拷贝的参数文件名字SQL> alter system set log_archive_dest_1 = 'location=/data/archive valid_for=(all_logfiles,all_roles) db_unique_name=orclsla' scope=spfile; //nomount启动报ORA-16024错误时用此方法修改,先注释参数文件log_archive_dest_1这一行,然后nomount启动执行此修改命令。nomount正常启动则不需要执行SQL> create spfile from pfile='/data/oracle/product/11.2.0/db_1/dbs/initorclsla.ora';SQL> shutdown abort;SQL> startup nomount;
9. 拷贝密码文件
[root@dg_pri ~]# cd /data/oracle/product/11.2.0/db_1/dbs/[root@dg_pri dbs]#scp orapworclpri 192.168.100.111:/data/oracle/product/11.2.0/db_1/dbs修改密码文件名:mv orapworclpri orapworclsla
10. 使用rman同步数据文件
[oracle@dg_pri dbs]$ rman target sys/123456@orcl_pri auxiliary sys/123456@orcl_sla;RMAN>duplicate target database for standby from active database;
11. 开启备库并验证 数据是否能同步
备库:
SQL> alter database recover managed standby database cancel; #取消实时同步SQL> shutdown immediateSQL> startup mountSQL> alter database flashback on; #开始flashback闪回SQL> alter database open read only; #只读open数据库SQL> alter database recover managed standby database using current logfile disconnect from session; #开始实时同步
主库:
create table test(id int);
备库:
select * from test;--有这边就说明搭建成功
查看主备库状态
SQL>select switchover_status,database_role from v$database;
查看日志
[root@dg_sla ~]# cd /data/oracle/diag/rdbms/orclsla/orclsla/trace[root@dg_sla trace]# cat alert_orclsla.log[root@dg_sla trace]# ls -lrt *arc1*
备库启动步骤:先启备库再启主库
startup nomount;挂载数据库alter database mount standby database;启用应用重做alter database recover managed standby database disconnect from session;取消备库的自动恢复alter database recover managed standby database cancel;启动到只读状态alter database open read only;在“READ ONLY”状态下进一步启动备库的恢复,实时应用主库日志。alter database recover managed standby database using current logfile disconnect;

更多精彩干货分享
点击下方名片关注
IT那活儿





