Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

133

积分

0

好友

17

主题
1#
发表于 2012-5-15 11:14:29 | 查看: 5615| 回复: 4
DD环境,都说MAXIMUM AVAILABILITY 当日志传输,会自动切换到  maximize performance,我没有模拟出来

在备库加了防火墙: 192.168.4.2 为Primary的IP,环境为DD的FSFO,观察器在第三个机器上,可以sys登录Primary和Standby

# iptables -A OUTPUT -p tcp --dport 1522 -s 192.168.1.2 -j DROP
# iptables -A INPUT -p tcp --dport 1522 -s 192.168.1.2 -j DROP


select PROTECTION_MODE,PROTECTION_LEVEL from v$database;

PROTECTION_MODE      PROTECTION_LEVEL
-------------------- --------------------
MAXIMUM AVAILABILITY RESYNCHRONIZATION
5#
发表于 2012-5-15 13:57:14

回复 3# 的帖子

我在做DD FSFO如果1)不能传送日志到standby,primary从最高可用 ->最大性能模式(此时观察器与standby还通),这时primary可写,与standby会发生不一致,这时观察器也与priamry失去联系,(primary先与standby后与观察器失去联系),primary 是否shutdown,standby是否会起来。。。。我现在做实验是primary没shutdown、standby也没变化。。(我想应该有fsfo的进程挂掉了,所以不能fail over)还有好多细节要搞清楚。。。

如果没有传送日志的问题,primary直接与standby、观察器失去联系,primary shutdown,standby  failover到primary。priamry startup mount,会有闪回。。。

我在判断是否会有数据丢失。。Orz~~~~
我想在primary可写前,fsfo还是能够实现failover的,如果failover后,primary起的时候一定要用startup mount,如果startup起来就二个primary,如果有应用连进来,数据就会不一致了。

[ 本帖最后由 saup007 于 2012-5-15 14:19 编辑 ]

回复 只看该作者 道具 举报

4#
发表于 2012-5-15 13:42:31

回复 2# 的帖子

谢谢。。。新浪已粉。。

这个实验有做,只是想直观看到是最大性能模式

现在找到了。
SQL> SELECT dest_name,
  2         destination,
  3         recovery_mode,
  4         PROTECTION_MODE
  5    FROM v$archive_dest_status
  6  ;

DEST_NAME                                                                        DESTINATION                                                                      RECOVERY_MODE           PROTECTION_MODE
--------------------------------------------------- ------------------------------------------------------------- ----------------------- --------------------
LOG_ARCHIVE_DEST_1                                                               /u01/arch/PRI10G                                                                 IDLE                    MAXIMUM PERFORMANCE
LOG_ARCHIVE_DEST_2                                                               (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=dbatwo)(PORT=1522)))(CON MANAGED REAL TIME APPLY MAXIMUM AVAILABILITY
LOG_ARCHIVE_DEST_3                                                                                                                    IDLE                    MAXIMUM PERFORMANCE
LOG_ARCHIVE_DEST_4                                                                                                                    IDLE                    MAXIMUM PERFORMANCE
LOG_ARCHIVE_DEST_5                                                                                                                    IDLE                    MAXIMUM PERFORMANCE
LOG_ARCHIVE_DEST_6                                                                                                                    IDLE                    MAXIMUM PERFORMANCE
LOG_ARCHIVE_DEST_7                                                                                                                    IDLE                    MAXIMUM PERFORMANCE
LOG_ARCHIVE_DEST_8                                                                                                                    IDLE                    MAXIMUM PERFORMANCE
LOG_ARCHIVE_DEST_9                                                                                                                    IDLE                    MAXIMUM PERFORMANCE
LOG_ARCHIVE_DEST_10                                                                                                                  IDLE                    MAXIMUM PERFORMANCE

10 rows selected

回复 只看该作者 道具 举报

3#
发表于 2012-5-15 11:59:24
ODM FINDING

V$DATABASE

PROTECTION_MODE         VARCHAR2(20)         Protection mode currently in effect for the database:

    MAXIMUM PROTECTION - Database is running in maximized protection mode

    MAXIMUM AVAILABILITY - Database is running in maximized availability mode

    RESYNCHRONIZATION - Database is running in resynchronization mode

    MAXIMUM PERFORMANCE - Database is running in maximized protection mode

    UNPROTECTED - Database is unprotected (this normally occurs when the primary database is mounted and not open)

PROTECTION_LEVEL         VARCHAR2(20)         Aggregated protection mode currently in effect for the database:

    MAXIMUM PROTECTION - Database is running in maximized protection mode

    MAXIMUM AVAILABILITY - Database is running in maximized availability mode

    RESYNCHRONIZATION - Database is running in resynchronization mode

    MAXIMUM PERFORMANCE - Database is running in maximized protection mode

    UNPROTECTED - Database is unprotected (this normally occurs when the primary database is mounted and not open)


MAXIMUM AVAILABILITY


Modes : Maximum Availability

A middle ground between protection and availability:
Commits must still occur on both
Failure to apply the redo stream to the standby database does not cause the primary database to shutdown
Instead, protection mode is reduced to Maximum Performance





Maximum Availability 最大可用性保护模式  要求 使用 LGWR SYNC AFFIRM ,  默认情况下 它的行为和  Maximum Protection Mode 最大保护模式一致, 当 stsandby database 不可用或其他原因redo 无法传输时 , 它会转变成 最大性能模式 Maximum Performance


但是这不代表 v$database.PROTECTION_MODE 会有所变化 , 使用  Maximum Availability 保护模式 那么  v$database.PROTECTION_MODE 始终是Maximum Availability

回复 只看该作者 道具 举报

2#
发表于 2012-5-15 11:54:24

回复 1# 的帖子

这个看主库的alert日志就可以看到了!

附上测试记录:
6.5  最高可用性模式下的故障模拟
确定当前data guard的数据保护模式处在最高可用性模式
DGMGRL> show configuration;

Configuration
  Name:                DG_YANG
  Enabled:             YES
  Protection Mode:     MaxAvailability
  Fast-Start Failover: DISABLED
  Databases:
    dg53 - Primary database
    dg54 - Logical standby database

Current status for "DG_YANG":
SUCCESS

SQL> select name,open_mode,database_role,protection_mode from v$database;

NAME     OPEN_MODE   DATABASE_ROLE   PROTECTION_MODE
---------------- --------------------  -----------------------   -------------------------------
ORCL10G   READ WRITE  PRIMARY         MAXIMUM AVAILABILITY

在备库上配置防火墙,拒绝任何ip连接1521端口
[root@dg54 ~]# iptables -I INPUT -p tcp --dport 1521 -j REJECT
[root@dg54 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:1521 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      

[oracle@dg53 ~]$ tnsping dg54
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 16-NOV-2011 16:58:14
Copyright (c) 1997, 2005, Oracle.  All rights reserved.
Used parameter files:
/u01/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.54)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = dg54_DGMGRL.yang.com)))
TNS-12541: TNS:no listener

主库上的事务commit将会卡住一段时间,最终会成功提交
SQL> set timing on
SQL> update hr.employees set salary=300000 where employee_id=100;
1 row updated.
Elapsed: 00:00:00.63

SQL> commit;
Commit complete.
Elapsed: 00:02:04.28

主库上的日志信息如下:
[oracle@dg53 ~]$ tail -f /u01/app/oracle/admin/orcl10g/bdump/alert_dg53.log
Wed Nov 16 17:01:01 2011
ORA-16198: LGWR received timedout error from KSR
LGWR: Attempting destination LOG_ARCHIVE_DEST_2 network reconnect (16198)
LGWR: Destination LOG_ARCHIVE_DEST_2 network reconnect abandoned
Wed Nov 16 17:01:01 2011
Errors in file /u01/app/oracle/admin/orcl10g/bdump/dg53_lgwr_19252.trc:
ORA-16198: Timeout incurred on internal channel during remote archival
LGWR: Network asynch I/O wait error 16198 log 3 service '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=dg54.yang.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=dg54_XPT.yang.com)(INSTANCE_NAME=dg54)(SERVER=dedicated)))'
Wed Nov 16 17:01:01 2011
Destination LOG_ARCHIVE_DEST_2 is UNSYNCHRONIZED
LGWR: Failed to archive log 3 thread 1 sequence 70 (16198)
Wed Nov 16 17:01:01 2011
LGWR: Closing remote archive destination LOG_ARCHIVE_DEST_2: '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=dg54.yang.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=dg54_XPT.yang.com)(INSTANCE_NAME=dg54)(SERVER=dedicated)))' (error 16198)
(dg53)
Wed Nov 16 17:01:01 2011
Errors in file /u01/app/oracle/admin/orcl10g/bdump/dg53_lgwr_19252.trc:
ORA-16198: Timeout incurred on internal channel during remote archival
LGWR: Error 16198 closing archivelog file '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=dg54.yang.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=dg54_XPT.yang.com)(INSTANCE_NAME=dg54)(SERVER=dedicated)))'
LGWR: Error 16198 disconnecting from destination LOG_ARCHIVE_DEST_2 standby host '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=dg54.yang.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=dg54_XPT.yang.com)(INSTANCE_NAME=dg54)(SERVER=dedicated)))'

接下来主库事务提交的将不会被卡住
SQL> update hr.employees set salary=400000 where employee_id=100;
1 row updated.
Elapsed: 00:00:00.07

SQL> commit;
Commit complete.
Elapsed: 00:00:00.00

关闭防火墙后,主备间的sql apply服务会继续运行
[root@dg54 ~]# service iptables stop
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: filter [  OK  ]
Unloading iptables modules: [  OK  ]

SQL> update hr.employees set salary=24000 where employee_id=100;
1 row updated.
Elapsed: 00:00:00.01

SQL> commit;
Commit complete.
Elapsed: 00:00:00.00

[oracle@dg53 ~]$ tail -f /u01/app/oracle/admin/orcl10g/bdump/alert_dg53.log
LNSb started with pid=30, OS id=20840
Wed Nov 16 17:19:18 2011
Destination LOG_ARCHIVE_DEST_2 is SYNCHRONIZED
LGWR: Standby redo logfile selected to archive thread 1 sequence 72
LGWR: Standby redo logfile selected for thread 1 sequence 72 for destination LOG_ARCHIVE_DEST_2
Thread 1 advanced to log sequence 72
  Current log# 2 seq# 72 mem# 0: +DATA/orcl10g/onlinelog/group_2.262.766837967
  Current log# 2 seq# 72 mem# 1: +FRA/orcl10g/onlinelog/group_2.258.766837973
Wed Nov 16 17:19:18 2011
ARC0: LGWR is actively archiving destination LOG_ARCHIVE_DEST_2
ARC0: Standby redo logfile selected for thread 1 sequence 71 for destination LOG_ARCHIVE_DEST_2

[oracle@dg54 ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Nov 16 17:23:57 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> select salary from hr.employees where employee_id=100;

SALARY
----------
24000

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-15 17:45 , Processed in 0.054638 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569