第一部分 部署主备库DG第1部分
1.1 DG搭建步骤
|
步骤 |
实施内容 |
|
Step 1 |
主库参数配置 |
|
Step 2 |
备库参数配置 |
|
Step 3 |
数据第一次同步 |
|
Step 4 |
备机添加oracle服务 |
|
Step 5 |
主备切换 |
1.2 主库参数配置主库参数配置包括确认归档是否打开,force_logging是否打开,修改主库参数文件,添加网络连接串等等一系列的主库配置信息。3.2.1 打开数据库force_logging检查是否打开了force_logging:
SQL> SELECT FORCE_LOGGING FROM V$DATABASE; FOR --- YES
//如果状态为YES,则已经打开,如果状态为NO,则参考下面步骤:
SQL> ALTER DATABASE FORCE LOGGING;
3.2.3 添加网络连接串网络连接串用于连接主备两端数据库,传输归档等作用,在RAC环境下,具体需要配置如下几个:一号节点连接串,二号节点连接串,备端连接串,详细配置信息如下:
Shell> su – oracle Shell> cd $ORACLE_HOME/network/admin Shell> vi tnsnames.ora //添加如下信息:(如果已存在以下连接串,酌情考虑添加删除) # tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.17.11)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.17.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ORCL_DG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.101)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.103)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
3.2.4 修改主库参数文件备份参数文件(方便修改参数出现问题后及时回退)。
Shell> su - oracle Shell> sqlplus "/ as sysdba" SQL> create pfile='/tmp/initORCL.ora' from spfile; SQL> alter system set log_archive_config='dg_config=(ORCL,ORCL_DG)' sid='*'; SQL> alter system set log_archive_dest_3='service=ORCL_DG valid_for=(online_logfiles,primary_role) db_unique_name=ORCL_DG' sid='*'; SQL> alter system set LOG_ARCHIVE_DEST_STATE_3=enable sid='*';
3.2.5 创建standby redo log文件standby redo log 作用在备库,用于接收从主库传过来的日志信息,在主库部署主要是为了方便日后的主备切换。创建适当数量的Standby Redo Log组数,公式如下:1. 如果主库是单实例数据库:Standby Redo Log组数=主库日志组总数+12. 如果主库是RAC数据库:Standby Redo Log组数=(所有节点中日志组数最大值 + 1) * RAC节点数3. 大小和生产库redo日志组大小一致
alter database add standby logfile thread 1 group 31 '+DATADG' size 500M; alter database add standby logfile thread 1 group 32 '+DATADG' size 500M; alter database add standby logfile thread 1 group 33 '+DATADG' size 500M; alter database add standby logfile thread 1 group 34 '+DATADG' size 500M; alter database add standby logfile thread 2 group 35 '+DATADG' size 500M; alter database add standby logfile thread 2 group 36 '+DATADG' size 500M; alter database add standby logfile thread 2 group 37 '+DATADG' size 500M; alter database add standby logfile thread 2 group 38 '+DATADG' size 500M;
3.2.6 拷贝备库所需文件创建standby端所需要的参数文件:
Shell> su - oracle Shell> sqlplus "/ as sysdba" SQL> create pfile='/home/oracle/initorcl.ora' from spfile;
拷贝静态参数文件:
Shell> su – oracle Shell> cd $ORACLE_HOME/dbs Shell> scp initorcl.ora oracle@XXX.XXX.XXX.XXX:`$ORACLE_HOME/dbs`
拷贝密码文件:
Shell> su – oracle Shell> cd $ORACLE_HOME/dbs Shell> scp orapw<sid> oracle@XXX.XXX.XXX.XXX:`pwd`
拷贝网络连接串文件:
Shell> su – oracle Shell> cd $ORACLE_HOME/network/admin Shell> scp tnsnames.ora oracle@XXX.XXX.XXX.XXX:`pwd`
1.3 备库参数配置3.3.1 目标端环境信息检查备库需要确认如下信息:1. 数据库软件已经正常安装,版本和生产保持一致2. 监听程序已经正常安装,并且服务已启动3. 备库所需文件,均已经正常拷贝到指定位置3.3.2 修改备库参数文件将从生产库拷贝过来的参数文件进行编辑,并修改下列参数文件(静态参数文件命名格式init<SID>.ora):
Shell> su – oracle Shell> cd $ORACLE_HOME/dbs Shell> vi initORCL.ora *.audit_file_dest='/u01/app/oracle/admin/ORCL/adump' *.audit_trail='db' *.cluster_database=true *.compatible='12.2.0' *.control_files='+DATA/ORCL/CONTROLFILE/current.279.1128270387','+LOG/ORCL/CONTROLFILE/current.274.1128270387'#Restore Controlfile *.db_block_size=8192 *.db_create_file_dest='+DATA' *.db_name='ORCL' *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' ORCL1.instance_number=1 ORCL2.instance_number=2 *.local_listener='-oraagent-dummy-' *.log_archive_config='dg_config=(ORCL,ORCL_DG)' *.log_archive_dest_1='location=+LOG' *.log_archive_dest_3='service=ORCL valid_for=(online_logfiles,primary_role) db_unique_name=ORCL' *.log_archive_dest_state_3='DEFER' *.nls_language='AMERICAN' *.nls_territory='AMERICA' *.open_cursors=300 *.pga_aggregate_target=4250m *.processes=2000 *.remote_login_passwordfile='exclusive' *.sga_target=18750m *.standby_file_management=auto *.db_unique_name='ORCL_dg' *.fal_server=ORCL *.fal_client=ORCL_dg ORCL2.thread=2 ORCL1.thread=1 ORCL1.undo_tablespace='UNDOTBS1' ORCL2.undo_tablespace='UNDOTBS2'
注:备库参数文件中,必须要创建对应的adump审计日志目录:*.audit_file_dest= /u01/app/oracle/admin/ORCL/adump 3.3.3 监听添加静态注册
su – oracle vi $ORACLE_HOME/network/admin/listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL_DG) (ORACLE_HOME = /u01/app/oracle/product/12.2/db_1) (SID_NAME = ORCL_DG) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.101)(PORT = 1521)) )
启动静态监听Lsnrctl start listener1.4 数据全量同步使用duplicate在线复制技术,将源端生产库同步至目标环境,如下:
Shell> rman target sys/xxx@ORCL_DG auxiliary sys/xxx@ORCL RMAN> duplicate target database for standby from active database nofilenamecheck;
1.5 启动DG同步开启MRP进程,备库数据前滚,开始同步:
SQL> alter database recover managed standby database disconnect from session; 或者 SQL> alter database recover managed standby database using current logfile disconnect from session;
检查DG同步进程状态:
SQL> select process, status,sequence#,block#,blocks, delay_mins from v$managed_standby;
检查DG日志同步延时情况:
SQL> select thread#,max(sequence#) from gv$archived_log group by thread#; SQL> select thread#,max(sequence#) from gv$archived_log where applied='YES' group by thread#;
第二部分 注册数据库信息将spfile创建至ASM共享磁盘中,再使用ASM中的spfile启动数据库实例。
SQL> create spfile='+DATA/ORCL_DG/spfileorcl.ora' from pfile;
修改RAC两节点默认位置的pfile文件: 1节点:
Shell> cd $ORACLE_HOME/dbs Shell> vi initorcl1.ora spfile='+DATA/ORCL_DG/spfileorcl.ora'
2节点:
Shell> cd $ORACLE_HOME/dbs Shell> vi initorcl2.ora spfile='+DATA/ORCL_DG/spfileorcl.ora'
重启两节点数据库实例:1节点启动MRP进程恢复同步
SQL> shutdown immediate; SQL> startup SQL> alter database recover managed standby database using current logfile disconnect from session;
2节点只需启动
SQL> shutdown immediate; SQL> startup
将数据库信息注册至集群:
Shell> srvctl add database -d ORCL_DG -o /u01/app/oracle/product/12.2/db_1 -p +DATA/ORCL_DG/spfileorcl.ora Shell> srvctl add instance -d ORCL_DG -i ORCL1 -n racdb1 Shell> srvctl add instance -d ORCL_DG -i ORCL2 -n racdb2 Shell> srvctl start database -d ORCL_DG
第三部分 备库读写模式打开将备库切换snapshot standby模式,此时备库为读写模式,业务人员可以对应用程序进行通测,检查不兼容等问题并处理。由于这类操作均在备库进行,并不会对主库和生产业务造成任何影响。第2部分 第3部分 3.1 备库停止MRP进程
SQL> alter database recover managed standby database cancel; SQL> shutdown immediate; SQL> startup mount;
3.2 切换为snapshot standby
SQL> alter database convert to snapshot standby; SQL> alter database open; SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE
3.3 切换为physical standby如果是RAC环境,只保留一个节点,其他节点关闭。确保是当前节点为mount状态。执行下列命令进行切换:
SQL> alter database convert to physical standby;
切换完成后数据库会自动dismount,因此需要重启数据,然后启动redo apply。具体操作如下:
SQL> shutdown immediate SQL> startup mount; SQL> alter database open; SQL> alter database recover managed standby database using current logfile disconnect from session;
