首页 > 数据库 > Oracle > Oracle 11GR2 DG部署
| hostname | ip | db_name
|
db_unique_name |
|---|---|---|---|
| node1 | 192,168,11,11 | ORCL | ORCLH1 |
| node2 | 192,168,11,12 | ORCL | ORCLH2 |
SQL> shutdown immediate SQL> startup mount SQL> alter database archivelog; --开启归档 SQL> alter database force logging; --开启强制日志 SQL> alter database open; SQL> archive log list; SQL> select force_logging from v$database;
SQL> select * from v$logfile; SQL> select * from v$log; --新增一组大小为50M的Standby Redo,这里的group号不得与Online redo重复 SQL> alter database add standby logfile group 41 '/u01/app/oracle/oradata/orcl/standby01.log' size 50M; SQL> alter database add standby logfile group 42 '/u01/app/oracle/oradata/orcl/standby02.log' size 50M; SQL> alter database add standby logfile group 43 '/u01/app/oracle/oradata/orcl/standby03.log' size 50M; SQL> alter database add standby logfile group 44 '/u01/app/oracle/oradata/orcl/standby04.log' size 50M;
SQL>create pfile='/home/oracle/initORCL.ora' from spfile ; [oracle@node2 ~]$ scp /home/oracle/initORCL.ora node2:/home/oracle
SQL> alter system set fal_server='ORCLH2' scope=spfile ; SQL> alter system set log_archive_config='dg_config=(ORCLH1,ORCLH2)' scope=spfile ; SQL> alter system set log_archive_dest_1='location=/home/oracle/arc1 valid_for=(all_logfiles, all_roles) db_unique_name=ORCLH1' scope=spfile ; SQL> alter system set log_archive_dest_2='service=ORCLH2 lgwr async valid_for=(online_logfile,primary_role) db_unique_name=ORCLH2' scope=spfile ; SQL> alter system set log_archive_dest_state_1=ENABLE scope=spfile ; SQL> alter system set log_archive_dest_state_2=ENABLE scope=spfile ; SQL> alter system set standby_file_management='AUTO' scope=spfile ; SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/ORCL/ORCL/datafile','/u01/app/oracle/oradata/ORCL/ORCL/datafile' scope=spfile ; SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/ORCL' scope=spfile ; 重启数据库 SQL> SHUTDOWN IMMEDIATE SQL> STARTUP
[oracle@node1 ~]$ scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwORCL node2:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/
[oracle@node2 ~]$ mkdir -p /u01/app/oracle/oradata/ORCL/ORCL/datafile/ [oracle@node2 ~]$ mkdir /home/oracle/arc1 [oracle@node2 ~]$ mkdir -p /u01/app/oracle/oradata/ORCL [oracle@node2 ~]$ mkdir -p /u01/app/oracle/admin/ORCL/adump
====配备库置静态监听==== LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCLH2) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = ORCL) ) ) ======配置TNS(主备都配置)====== vi /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora ORCLH1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCLH1) ) ) ORCLH2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.11.12)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCLH2) ) )
[oracle@node2 ~]$ vi /home/oracle/intiORCL.ora fal_server='ORCLH1' log_archive_config='dg_config=(ORCLH1,ORCLH2)' log_archive_dest_1='location=/home/oracle/arc1 valid_for=(all_logfiles, all_roles) db_unique_name=ORCLH2' log_archive_dest_2='service=ORCLH1 lgwr async valid_for=(online_logfile,primary_role) db_unique_name=ORCLH1' log_archive_dest_state_1=ENABLE log_archive_dest_state_2=ENABLE standby_file_management='AUTO' db_file_name_convert='/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/ORCL/ORCL/datafile','/u01/app/oracle/oradata/ORCL/ORCL/datafile' log_file_name_convert='/u01/app/oracle/oradata/ORCL','/u01/app/oracle/oradata/ORCL' [oracle@node2 ~]$ sqlplus / as sysdba SQL> create spfile from pfile = '/home/oracle/intiORCL.ora'; SQL> startup nomount
[oracle@node2 admin]$ rman target sys/oracle@orclh1 auxiliary sys/oracle@orclh2 RMAN> duplicate target database for standby from active database nofilenamecheck; 复制完成后,查看备库库状态 SQL> select status from v$instance ; STATUS ------------ MOUNTED
SQL> alter database recover managed standby database cancel; SQL> alter database recover managed standby database using current logfile disconnect;
查看数据库状态 SQL> select SWITCHOVER_STATUS,DATABASE_ROLE from v$database ; SWITCHOVER_STATUS DATABASE_ROLE -------------------- ---------------- NOT ALLOWED PHYSICAL STANDBY 查看进程状态 SQL> select PROCESS,CLIENT_PROCESS, SEQUENCE#,STATUS from v$managed_standby; PROCESS CLIENT_P SEQUENCE# STATUS --------- -------- ---------- ------------ ARCH ARCH 0 CONNECTED ARCH ARCH 0 CONNECTED ARCH ARCH 8 CLOSING ARCH ARCH 9 CLOSING MRP0 N/A 10 APPLYING_LOG RFS UNKNOWN 0 IDLE RFS ARCH 0 IDLE RFS UNKNOWN 0 IDLE RFS LGWR 10 IDLE SQL> select INST_ID, dbid,name,DB_UNIQUE_NAME,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database; COL NAME FOR A80 SET LINESIZE 9999 PAGESIZE 9999 SELECT A.THREAD#, A.NAME, A.SEQUENCE#, A.APPLIED, A.FIRST_TIME FROM V$ARCHIVED_LOG A, (SELECT NB.THREAD#,NB.RESETLOGS_CHANGE#,NB.DEST_ID,(MAX(NB.SEQUENCE#) - 3) MAX_SEQUENCE# FROM V$ARCHIVED_LOG NB WHERE NB.APPLIED = 'YES' and NB.DEST_ID in (SELECT NB.DEST_ID FROM V$ARCHIVE_DEST_STATUS NB where STATUS <>'INACTIVE') GROUP BY NB.THREAD#,NB.RESETLOGS_CHANGE#,NB.DEST_ID) B WHERE B.THREAD# = A.THREAD# AND B.RESETLOGS_CHANGE# = A.RESETLOGS_CHANGE# AND A.DEST_ID=B.DEST_ID AND A.SEQUENCE# >= MAX_SEQUENCE# AND A.STANDBY_DEST = (SELECT CASE WHEN NB.DATABASE_ROLE LIKE '%STANDBY%' THEN 'NO' ELSE 'YES' END FROM V$DATABASE NB) ORDER BY A.THREAD#, A.SEQUENCE#;
1.最大性能模式max performance-默认
这种保护模式(默认)提供了可能的最高级别的数据保护,而不影响主数据库的性能。
这是通过允许事务在恢复该事务所需重做数据在写到本地联机重做日志后立即提交而实现的。
主数据库的重做数据流也写到至少一个备数据库,但是那个重做流相对于创建重做数据的事务是异步写的。
当所用的网络连接有足够的带宽,这种模式提供了近似于最大可用性模式的数据保护级别,并且对主数据库性能的影响最小。
2.最大可用性模式max availability
这种保护模式提供了可能的最高级别的数据保护,而不用与主数据库的可用性相折衷。与最大保护模式相同,在恢复事务所需的重做写到本地联机重做日志和至少一个事务一致性备数据库上的备重做日志之前,事务将不会提交。与最大保护模式不同的是,如果故障导致主数据库无法写重做流到异地备重做日志时,主数据库不会关闭。替代地,主数据库以最大性能模式运行直到故障消除,并且解决所有重做日志文件中的中断。当所有中断解决之后,主数据库自动继续以最大可用性模式运行。
这种模式确保如果主数据库故障,但是只有当第二次故障没有阻止完整的重做数据集从主数据库发送到至少一个备数据库时,不发生数据丢失。
3.最大保护模式max protection
这种保护模式确保如果主数据库故障不会发生数据丢失。要提供这种级别的保护,恢复每个事务所需的重做数据必须在事务提交之前同时写到本地联机重做日志和至少一个备数据库上的备重做日志。要确保不发生数据丢失,如果故障导致主数据库无法写重做流到至少一个事务一致性备数据库的备重做日志时,主数据库会关闭。
===查看保护模式===
SQL> select DATABASE_ROLE,PROTECTION_MODE,PROTECTION_LEVEL,OPEN_MODE from v$database ;
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL OPEN_MODE
---------------- -------------------- -------------------- --------------------
PHYSICAL STANDBY MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE MOUNTED
===切换保护模式===
SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE {PROTECTION | AVAILABILITY | PERFORMANCE }
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31519308/viewspace-2717182/ ,如需转载,请注明出处,否则将追究法律责任。