�
Page 1
Markus MichalewiczBU Database Technologies
Oracle Deutschland GmbH
7$)���64/��1HW�.RQILJXUDWLRQ�
QLFKW�QXU�IíU�5$&
�
Page 2
2UDFOH�1HW�IRU�5$&
TAF, Load Balancing and More
:KDW�%HQLILWV�'RHV 7$)�3URYLGH"
y In the case of an Oracle instance failure, TAF automatically transfers client connections to a surviving instance.
y Clients already connected do not need to reconnect if a secondary instance is available andTAF has been pre-configured.
y It provides high availability to an end client, andend clients do not see any errors or outages.
y TAF works with MTS or dedicated sessions.
�
Page 3
7$)�FDQ�EH�XVHG�ZLWK
y TAF is designed for OPS/RAC
y Can be implemented in RAC Guard(HA server, OPFS, PFS)
y Replicated Databases
y Data Guard
y Fail Safe Clusters (NT, W2K)
y Single Instance Environments
• %HLGH�.QRWHQ�DNWLY
• =XJULII�DXI�HLQH�'DWHQEDQN
Aktiver2UDFOH�L '%
.QRWHQ���5$&
Aktiver2UDFOH�L '%
.QRWHQ���5$&
2UDFOH�7UDQVSDUHQW�$SSOLFDWLRQ�)DLORYHU��7$)�
empno name
7369 Smith7499 Allen7521 Ward7566 Jones7654 Martin7698 Blake
%HQXW]HU�ZHUGHQ�DXWRPDWLVFK�
DXI�HLQHP�LQWDNWHQ�.QRWHQ�
üEHUQRPPHQ�XQG�OHVHQGH�
=XJULIIH�IRUWJHVHW]W
�
Page 4
7KH�DUFKLWHFWXUDO�UHTXLUHPHQWV RI�7$)
y All the applications must be TAF aware means: OCI driver or Pro* precompiler
y SQL*Plus is TAF aware
y ODBC connection
y JDBC Thick Driver (OCI driver)
Applications are not OCI compliantForms, Reports, etc.
7KH�6ROXWLRQ�EHKLQG�LW�DOO��2UDFOH�1HW�
y Dynamic Instance Registration
y Load Balancing– Client-Side– Server-Side
y Connect Time Failover
y Runtime Failover– Transparent Application Failover
�
Page 5
'\QDPLF�,QVWDQFH�5HJLVWUDWLRQ
y Instance Î Listener Communication
y Use SERVICE_NAME not SIDs
y Recognises / Updates via PMON– Start and stop listener– Start and stop instance
y Simplifies Management
y Service Registration Delay:– If startup is 1) Listener 2) Instance
then service registration is immediate.
– If startup is 1) Instance 2) Listener then PMON fails the initial registration and retries every 60 sec. (connections are refused until successfully registered!)
– Workaround: “$/7(5�6<67(0�5(*,67(5”
upon listener startup.
'\QDPLF�,QVWDQFH�5HJLVWUDWLRQ�±WKLQJV�WR�EH�DZDUH�RI
�
Page 6
• Listener verteilen Anfragen basierend auf CPU-Last– PMON Prozess meldet den Listenern die Knotenauslastung
.QRWHQ��
UDF�
,QVWDQ]
.QRWHQ��
OVQU�
UDF�
,QVWDQ]OVQU�
5DF�
'DWHQEDQN&OLHQW��
1HW]ZHU N
&OLHQW��
&OLHQW��
&OLHQW��
&OLHQW�Q
&OLHQW��6HUYHUVHLWLJHV�/RDGEDODQFLQJ&OLHQW��6HUYHUVHLWLJHV�/RDGEDODQFLQJ
• Verbindungsaufbau nach einem Zufallsprinzip– verwendet die Adressliste der tnsnames.ora
/RDG�%DODQFLQJ�± &OLHQW�6LGH
y Client-Side– Multiple ADDRESSes– LOADBALANCE=ON– Random profile
y Connection Levelling- Simple. Effective. Configuration Changes
������������ ����� ����������� �������� ���������� �!��" ���#��� ��#��$�������$�����%���#'&� "�����������)(��� ����*�� "�����������+� � !����"���������,�-����!�& ��. �����/�10�2�34 65�24 87�29 60"7:�& � !����"�*�10�;�<�0"&�&� "�����������+� � !����"���������,�-����!�& ��. �����/�10�2�34 65�24 87�29 60"7�2"& � !����"�*�10�;�<�0"&�&� ���"�(�$���#������-=�>?&�A@ ? �����B"���,�,��#'&
&
�
Page 7
6HUYHU�6LGH�/RDG�%DODQFLQJ6HUYHU�6LGH�/RDG�%DODQFLQJ
.QRWHQ��
UDF�
,QVWDQ]
.QRWHQ��
OVQU�
UDF�
,QVWDQ]OVQU�
5DF�
'DWHQEDQN&OLHQW��
1HW]ZHU N
&OLHQW��
&OLHQW��
&OLHQW��
&OLHQW�Q
y Server-Side– REMOTE_LISTENER– PMON updates load info– Listener redirects
connections
y Load Levelling- Simple- Effective- Configuration Changes
/RDG�%DODQFLQJ�± 6HUYHU�6LGH
y PMON dynamically registers the services to the specified listeners with:
– service names for each running instance of the database
– instance names of the database– service handlers (dispatchers and dedicated
servers) available for each instance– dispatcher, instance, and node load information
y 1-Minute OS Node Load Average all 30 secs.y Number of Connections to Each Instancey Number of Connections to Each Dispatcher
�
Page 8
/RDG�%DODQFLQJ�± 6HUYHU�6LGHKRZ�FRQQHFWLRQV�DUH�HVWDEOLVKHGy Depending on the load information, a listener decides which instance
and, if shared server is configured, which dispatcher to send the incoming client request to.
y In a shared server configuration, a listener selects a dispatcher in the following order: 1) least loaded node, 2) least loaded instance, and 3) least loaded dispatcher for that instance.
y In a dedicated server configuration, a listener selects an instance in the following order: 1) least loaded node, and 2) least loadedinstance.
y An Oracle9i Real Application Clusters environment requires that the dispatchers on each instance be cross registered with the other listeners on the other nodes. This is achieved by the use of theLISTENER attribute of the DISPATCHERS parameter.
6HUYHU�6LGH /RDGEDODQFLQJ VFKHPD�6HUYHU�6LGH /RDGEDODQFLQJ VFKHPD�
&RQQHFWLRQ /RDG %DODQFH
,QVWDQFH�
$
&OLHQW�
'LVS�
�
'DWDEDVH�6HUYHU 0DFKLQH
�/LVW�
,QVWDQFH�
%'LVS�
�
/LVW�
'LVS�
�
Page 9
6HUYHU�6LGH�/RDGEDODQFLQJ�±ZKDW�WR�VHW�LQ�LQLW�RUD
y SERVICE_NAMES = <6(59,&(B1$0(>
(defaults to DB_NAME.DB_DOMAIN)y INSTANCE_NAME = <,167$1&(B1$0(>
y LOCAL_LISTENER = <L/,67(1(5B$/,$6>
y REMOTE_LISTENER = <5/,67(1(5B$/,$6>
(automatically configured by DBCA)
optional:
y dispatchers= “(PROTOCOL=TCP)(SERVICE= <6(59,&(B1$0(>(LISTENER = <DLISTENER_ALIAS>"
6HUYHU�6LGH�/RDGEDODQFLQJ�±ZKDW�WR�VHW�LQ�WQVQDPHV�RUD
LISTENERS_RAC.ORACLE.COM =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = stdemo06)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = stdemo07)(PORT = 1521))
)
LISTENER_RAC11.ORACLE.COM =
(ADDRESS = (PROTOCOL = TCP)(HOST = stdemo06)(PORT = 1521))
LISTENER_RAC12.ORACLE.COM =
(ADDRESS = (PROTOCOL = TCP)(HOST = stdemo07)(PORT = 1521))
��
Page 10
([DPSOH RI�OVQUFWO�VHUYLFHV�RXWSXW
$ lsnrctl services
LSNRCTL for HPUX: Version 9.0.1.2.0 - Production on 19-FEB-2002 12:36:19
Copyright (c) 1991, 2001, Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
Services Summary...
Service "rac" has 2 instance(s).
Instance "rac1", status READY, has 2 handler(s) for this service...
Handler(s):C D�E�D�FAG H�I E�D6C�JLK�MAN O�P�Q�K R�J�S8T UWVAJ�X Y�K J�S8T U4K�MAN�M J8T VAJ�NASAZ[�EA\L]�I E_^ E�[A`�E�[a H�D�D�[�E�^�^ b a c [�]�IA]�GA]�dAb�I�G c�efa g ]L^AIAbA[AH�GLh iL]AD�Ekj efa c ]A[LIAb�jAlAmLj e�e
"D001" established:0 refused:0 current:0 max:2026 state:ready
DISPATCHER <machine: rac-node1, pid: 2157>
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac-node1)(PORT=60150))(PRESENTATION=oracle.aurora.server.GiopServer)(SESSION=RAW))
Instance "rac2", status READY, has 2 handler(s) for this service...
Handler(s):
"D001" established:0 refused:0 current:0 max:2026 state:ready
DISPATCHER <machine: rac-node2, pid: 18132>
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac-node2)(PORT=65052))(PRESENTATION=oracle.aurora.server.GiopServer)(SESSION=RAW))C D�E�D�FAG H�I E�D6C�JLK�MAN O�P�Q�K R�J�S8T n'VAJ�X Y�K J�S8T U4K�MAN�M J8T VAJ�NASAZ
dA]�G H�d9^ E�[A`�E�[The command completed successfully
• %HLGH�.QRWHQ�DNWLY
• =XJULII�DXI�HLQH�'DWHQEDQN
Aktiver2UDFOH�L '%
.QRWHQ���5$&
Aktiver2UDFOH�L '%
.QRWHQ���5$&
2UDFOH�7UDQVSDUHQW�$SSOLFDWLRQ�)DLORYHU��7$)�
empno name
7369 Smith7499 Allen7521 Ward7566 Jones7654 Martin7698 Blake
%HQXW]HU�ZHUGHQ�DXWRPDWLVFK�
DXI�HLQHP�LQWDNWHQ�.QRWHQ�
üEHUQRPPHQ�XQG�OHVHQGH�
=XJULIIH�IRUWJHVHW]W
��
Page 11
&RQQHFW 7LPH�)DLORYHU
y Connect time failover is not the same as the Transparent Application Failover
y Implement connect time failover:– Failover = on
y Connect-time failover is turned on by default
������������ ����� ����������� �������� ���������� �!��" ���#��� "�����������)(��� ����*�� "�����������+� � !����"���������,�-����!�& ��. �����/�10�2�34 65�24 87�29 60"7:�& � !����"�*�10�;�<�0"&�&� "�����������+� � !����"���������,�-����!�& ��. �����/�10�2�34 65�24 87�29 60"7�2"& � !����"�*�10�;�<�0"&�&� ���"�(�$���#������-=�>?&�A@ ? �����B"���,�,��#'&
&
&RQQHFW�7LPH�)DLORYHU
y Find a Listener:1. Listening?2. Service available?3. Instance available?9 Connected!
• Any Client• Always Useful
��
Page 12
7KUHH�³/HYHOV´ RI�7$)�)XQFWLRQDOLW\
y TYPE=SESSION, METHOD=BASIC (Login Failover)– Client is automatically logged into surviving node of cluster
y TYPE=SELECT (Statement Failover)– Node failure occurs during query– Client fails over to a surviving node and is logged in– Query replayed on surviving node but only rows not
returned during the original query execution are returned
y METHOD=PRECONNECT (“Fast” Session Failover)– Client connected to two instances at session establishment– Avoid impact of “login storm” during failover to surviving node
in Real Applications Cluster or Oracle Parallel Server
o8p�qsr)t8u�v�w x�y?w z{t8uv{|sy?wAvsz)}�~� x�y��8vst��8��o��fz8��~� y8�{u��|sy{~{�{tsz{�{y8���� u�x{x�t{y��{����|�s�{o�~� u�x{x�t{y��{��~ � �8t{z�o)z�v8z�|�~�o8v���� � � z��{o�~��s�s��w��{��w��8��wL���)��� � �8zst�o�~��s�s���{�� u�x{x�t{y��{��~ � �8t{z�o)z�v8z�|�~�o8v���� � � z��{o�~��s�s��w��{��w��8��wL���)��� � �8zst�o�~��s�s���{�� |sz8u�x)���8u|)u{��vsy{~��s���� � u��)|sz)��yst�~�z8���
�� vsz8�{�y�vo���x8u�o6u�~
� �)y{t)��y{t�~�x�ysx��fv)u�o)ysx"�� �)y{t)�"�)vsyf��{us}�y{~��{�{��r8p�qsr��� � �{ {¡{�)¢p��k�£��s¤{p8~
� rf¥s¦�ps~�q)p�¡sp�§�r�� � £�pr)¨�s¤s~8©��q) {§��� t{y�o)t��fy��)~��s��� � x�y�|)u�ª�~����
�{�{�
*UXQGODJH�I�U�7$)�± 64/1HW �7161$0(6
��
Page 13
7$)�3DUDPHWHUV�LQ�WQVQDPHV�RUD ± RSWLRQDOo)y��{o)t8u�v�w z{t8u�v{|sy�wAvsz)}�~� x�y��8vst��8��o��fz8��~� u�x{x�t{y��{����|�s�{o�~� u�x{x�t{y��{��~ � �8t{z�o)z�v8z�|�~�o8v���� � � z��{o�~�qsr)¤{p)£����«�� � �8zst�o�~��s�s���{�� u�x{x�t{y��{��~ � �8t{z�o)z�v8z�|�~�o8v���� � � z��{o�~�qsr)¤{p)£�����¬� � �8zst�o�~��s�s���{�� � u��)|sz)��yst�~��s���� |sz8u�x)���8u|)u{��vsy{~��s���
�� vsz8�{�y�vo���x8u�o6u�~� �)y{t)��y{t�~�x�ysx��)v)u�o)y8x"�� �)y{t)�"�)vsy6��{us}�y�~��{�s§��� �k���{o6u{��v8yf��t{z�|sy�~1 �8t���}�u�tsª?®L�)y�vsz8��xsutsª4L�� � u��)|sz)��ystf��}�zsx�y{~� ofª��8ys~�q)p�¡sp�§�r��� }�y�o � zsx�~8©��q8 {§��� �8u�vs�8¯��8~{t8u�v8x°�w zst8u�v{|sy�wAvsz)}��
��
�
±6±f²A³{´¶µ· ¸6¹ ±kº6»s¼�½f²)¼�¾k¿Àµ· ³ ¸f¸ » ¹ ±f±¶µ · ½�»6¾8²L¾)ºk¾fÁµò�ºf½8Ä · Å ¾)±f²ÆµÈÇ�ÉfÊ8ËkÌfÍ6ÍfÎ6Ï�ÐsÑLÒ�Ä · ½k¾6»8²ÆµÓÏ�ÔkÕ8Ï)Ä6Ä· ³ ¸f¸ » ¹ ±f±¶µ · ½�»6¾8²L¾)ºk¾fÁµò�ºf½8Ä · Å ¾)±f²ÆµÈÇ�ÉfÊ8ËkÌfÍ6ÍfÎLÕ�ÐsÑLÒ�Ä · ½k¾6»8²ÆµÓÏ�ÔkÕ8Ï)Ä6Ä· ³ ¸f¸ » ¹ ±f±¶µ · ½�»6¾8²L¾)ºk¾fÁµò�ºf½8Ä · Å ¾)±f²ÆµÈÇ�ÉfÊ8ËkÌfÍ6ÍfÎ�ÖLÐsÑLÒ�Ä · ½k¾6»8²ÆµÓÏ�ÔkÕ8Ï)Ä6Ä· ³ ¸f¸ » ¹ ±f±¶µ · ½�»6¾8²L¾)ºk¾fÁµò�ºf½8Ä · Å ¾)±f²ÆµÈÇ�ÉfÊ8ËkÌfÍ6ÍfÎ�×LÐsÑLÒ�Ä · ½k¾6»8²ÆµÓÏ�ÔkÕ8Ï)Ä6Ä· ºk¾6¿6¿ ¹ º8²AØ ¸ ³�²�³Èµ· ± ¹ »LÙ ¹ »Úµ ¸6¹6¸ ¼LºL³�² ¹6¸ Ä· ± ¹ »LÙ�¼Lº ¹ Ø)¿k³fÛ ¹ µÃÇ6Ç6²A³�´8Ä6Ä6Ä
��J�5HO����7$)�XQG�6HUYLFHV� �6HUYHU�VHLWLJHV�7$)
Ü ÝfÞ�Ý{ßsà�á)Ý�âfãsä�åAæ�å{Ýsç{è�é{ß{Ý�ê ä�ësâ�é{ìkí6æ�å{Ýsç{è�é{ß{Ýî å{Ýsç{è�é{ß{Ý�æ"ïð6ä�Ýòñsóõô å{åö�÷�øWô�ù ®�sú6��¨�k������rs � {§s��rs {�s��q�~�û�rs�8ü�p�ý�®� �{ {¡{�)¢p��k�£�pr)¨��s¤�~�û¤)©{£�qL��q)p��)¢� {§sp�w � �{ {¡{�)¢p��k�£�p�r)¨�s¤6��©��q8 {§�þ"®� �{ {¡{�)¢p��k�"rf¥s¦�pÿ~�û¤)©{£�qL��q)p��)¢� {§sp�w � �{ {¡{�)¢p��k�"rf¥8¦�p6��q)p{¡sp�§�r�þ"®� �{ {¡{�)¢p��k���sprs�s sp�q�~�û��s�{��þ"®� �{ {¡{�)¢p��k��¤{p�¡{�f¥�~�û���þ"®§{¡f©8�����{�{¡ÿ~�û¤)©{£�qL��q)p��)¢� {§sp�w�§s¡f©8�����{�{¡k��¡{�8�������
(BUG 4449641 & BUG 4487927)
2.
1.
3.
��
Page 14
7$)�� 2&,�FRQQHFW
y JDBC / OCI connect
y Examples are in $ORACLE_HOME/jdbc/demo/samples/jdbcoci$ORACLE_HOME/jdbc/demo/samples/generic
Employee.java example ….
DriverManager.getConnection("jdbc:oracle:thin:scott/tiger@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=venus.de.oracle.com)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=mars.de.oracle.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=V92M.linux)))");
Or
DriverManager.getConnection("jdbc:oracle:thin:scott/tiger@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=venus.de.oracle.com)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=mars.de.oracle.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=V92M.linux)(FAILOVER_MODE=(TYPE=select) (METHOD=basic)(RETRIES=20)(DELAY=5)))");
7$)�9HULILFDWLRQq)p�¡sp�§�r §{�8ü��r � ü�q)p��s���f£�p�� u{���6u � |8¯��fy{t�®Æ£��{§8¨ s�{p�®È�k���{o����kx �)��qsrs�s��§sp���®
� �{ {¡{�)¢p��k�"rf¥s¦�p�® � �{ {¡{�)¢p��k��£�pr)¨�8¤�® � �{ {¡sp{¤6���)¢p��� �{�f£ �8¢��{q)p�q{q8 {�s� ¨�p��sp ü�q)p��s���f£�p�~���8v8z�o{o����{�8ü8¦�©�¥�£��{§8¨ 8�{p�®È�k���{o��� 8¤�® � �s {¡{�)¢p��k�"rf¥s¦�p�® � �s {¡{�)¢p��k�£�prf¨�s¤�® � �{ {¡sp{¤6���)¢p��o)¨�p��8ü�r6¦ü�rÓ©�p � �{�sp � �{ {¡{�)¢�p����spq)p)£{©�¡sp�q�r)¨�p � �s¡{¡{� s���� ANZAHLUSER MACHINE INSTANCE# FAILOVER_TYPE FAILOVER_M FAI
---------- ----------------------- --------- ------------- ---------- ---
1 sturachh1 1 NONE NONE NO
1 DE-ORACLE\mmichale-lap 1 SELECT BASIC NO
o)¨�p��8ü�r6¦ü�r�� � r)p�� � �{ {¡{�)¢p{�� q� ANZAHLUSER MACHINE INSTANCE# FAILOVER_TYPE FAILOVER_M FAI
---------- ----------------------- --------- ------------- ---------- ---
1 DE-ORACLE\mmichale-lap 2 SELECT BASIC YES
��
Page 15
• %HLGH�.QRWHQ�DNWLY
• =XJULII�DXI�HLQH�'DWHQEDQN
Aktiver2UDFOH�L '%
.QRWHQ���5$&
Aktiver2UDFOH�L '%
.QRWHQ���5$&
2UDFOH�7UDQVSDUHQW�$SSOLFDWLRQ�)DLORYHU��7$)�
empno name
7369 Smith7499 Allen7521 Ward7566 Jones7654 Martin7698 Blake
%HQXW]HU�ZHUGHQ�DXWRPDWLVFK�
DXI�HLQHP�LQWDNWHQ�.QRWHQ�
üEHUQRPPHQ�XQG�OHVHQGH�
=XJULIIH�IRUWJHVHW]W
'UHL�6]HQDULHQ��.QRWHQ�&UDVK
y Insert(beendet)-Crash-SQLÆ ORA-25402 transaction must rollback
y SELECT(beendet)-Crash-SQLÆ SELECT wird übernommen
y SELECT (warten)-CRASHÆ TAF funktioniert nur, bei ENABLE=BROKENund entsprechen eingestelltem TCP KeepAlive!
��
Page 16
1HWZRUNLQJ 3DUDPHWHU
y Zeit vom letzten Paket bis ein Testpaket versendet wird– tcp_keepalive_time (Linux)
– KeepAliveTime (Windows)
– tcp_keepalive_interval (Solaris)
y Anzahl der Testpakete– tcp_keepalive_probes (linux)
– MaxDataRetries (Windows)
– tcp_ip_abort_interval (Solaris, aber hier Zeitraum, nicht Anzahl)
y Zeitlicher Abstand zwischen den Probes– tcp_keepalive_intvl (Linux)
– KeepAliveInterval (Windows)
– tcp_rexmit_interval_max (Solaris)
�0XVV�EHL�/LQX[�6RODULV�QDFK�MHGHP�%RRW�JHVHW]W�ZHUGHQ
7&3�,3�.HHSDOLYH�3DUDPHWHUV
y Never change it without understanding ity tcp_keepalive_interval y tcp_ip_abort_cintervaly Enable=broken in tnsnames.ora
y No need to set starting with 10g – Oracle RAC VIP implementation is the solution
��
Page 17
o8p�qsr)t8u�v�w x�y?w z{t8uv{|sy?wAvsz)}�~� x�y��8vst��8��o��fz8��~� y8�{u��|sy{~{�{tsz{�{y8���� u�x{x�t{y��{����|�s�{o�~� u�x{x�t{y��{��~ � �8t{z�o)z�v8z�|�~�o8v���� � � z��{o�~��s�s��w��{��w��8��wL���)��� � �8zst�o�~��s�s���{�� u�x{x�t{y��{��~ � �8t{z�o)z�v8z�|�~�o8v���� � � z��{o�~��s�s��w��{��w��8��wL���)��� � �8zst�o�~��s�s���{�� |sz8u�x)���8u|)u{��vsy{~��s���� � u��)|sz)��yst�~�z8���
�� vsz8�{�y�vo���x8u�o6u�~
� �)y{t)��y{t�~�x�ysx��fv)u�o)ysx"�� �)y{t)�"�)vsyf��{us}�y{~��{�{��r8p�qsr��� � �{ {¡{�)¢p��k�£��s¤{p8~
� rf¥s¦�ps~�q)p�¡sp�§�r�� � £�pr)¨�s¤s~8©��q) {§��� t{y�o)t��fy��)~��s��� � x�y�|)u�ª�~����
��
�
1HWZRUN�3DUDPHWHUV�± ZKDW�WR�VHW�LQ�WQVQDPHV�RUD
/LVWHQHU 5HJLVWUDWLRQ���8SGDWH
y Service Registration y Instance Registration
��
Page 18
• %HLGH�.QRWHQ�DNWLY
• =XJULII�DXI�HLQH�'DWHQEDQN
Aktiver2UDFOH�L '%
.QRWHQ���5$&
Aktiver2UDFOH�L '%
.QRWHQ���5$&
2UDFOH�7UDQVSDUHQW�$SSOLFDWLRQ�)DLORYHU��7$)�
empno name
7369 Smith7499 Allen7521 Ward7566 Jones7654 Martin7698 Blake
%HQXW]HU�ZHUGHQ�DXWRPDWLVFK�
DXI�HLQHP�LQWDNWHQ�.QRWHQ�
üEHUQRPPHQ�XQG�OHVHQGH�
=XJULIIH�IRUWJHVHW]W
5HJDUGOHVV�RI�7$)�± WKLQJV�WR�EH�DZDUH�RI�PD\�QRW�EH�D�FRPSOHWH�UHIHUHQFH�
Folgende Fehler können generell trotz TAF auftreten – Lösung „rollback“y ORA-25401: cannot continue fetchesy ORA-25402: transaction must roll backy ORA-25405: trx status unknown (bug 2109927)y ORA-25408: cannot safely reply call
Folgende Fehler sind selten (vor allem im RAC), können aber auftreten. TAF deckt sie nicht ab und steigt aus – Lösung häufig (RE-)Konfiguration:
y ORA-01014: Oracle shutdown in progressy ORA-01017: Invalid username / passwordy ORA-01033: Oracle initialisation or shutdown in progressy ORA-01089: immediate shutdown in progress – no operationsy ORA-01090: shutdown in progress – connection not permittedy ORA-01092: Instance Terminated; Diconnection forced
Bei folgendem Fehler Konfiguration kritisch überprüfen - ggf. Supporty ORA-03113: eoF on communication channel
��
Page 19
<RX�ZDQW�PRUH�FRQWURO"
y Optional:– OCI Callbacks
³&´ 7$)�&DOOEDFN��2&,�t ���������������������������������! "��#���$�%'&)(���#�$�%'&)��*�����+�,-&.��*��/+�0�%�(1&.��*���(�#2(���+435�5
6�8729�+���$: ;��*���(�#2(���+23 6���2�8(=<2>2?@��A�<���B�C2D2?�E 5 6%�F�98��+��' HGIA���9���98��J=<�#2(2FLK�K�KNM���(��2�8(���+�����OP��0RQ8�/G�3�S
5�52&,)RFEN6WUXFW IDLORYHU��
��
IDLORYHU�FDOOEDFNBIXQFWLRQ� �FDOOEDFNBIQ�
LI��2&,$WWU6HW� VUYK��2&,B+7<3(B6(59(5�
IDLORYHU�����2&,B$775B)2&%.� HUUK�
� �2&,B68&&(66�5�5
Implement the callback procedure
Register TAF callback procedure
Take action
��
Page 20
-DYD�7$)�&DOOEDFN��2&,�t ������
LPSRUW�RUDFOH�MGEF�2UDFOH&RQQHFWLRQ�
LPSRUW�RUDFOH�MGEF�2UDFOH2&,)DLORYHU�
��
&DOO%DFN�IFEN �QHZ &DOO%DFN���
��
��2UDFOH&RQQHFWLRQ�FRQQ��UHJLVWHU7$)&DOOEDFN�IFEN� PVJ��
��
FODVV &DOO%DFN LPSOHPHQWV 2UDFOH2&,)DLORYHU ^�
SXEOLF LQW�FDOOEDFN)Q �&RQQHFWLRQ FRQQ��2EMHFW FW[W�
LQW W\SH� LQW HYHQW��^
��
VZLWFK��HYHQW��^
FDVH�)2B%(*,1�
Instantiate the callback class
register TAF callback function
Implement the callback class
React
• %HLGH�.QRWHQ�DNWLY
• =XJULII�DXI�HLQH�'DWHQEDQN
Aktiver2UDFOH�L '%
.QRWHQ���5$&
Aktiver2UDFOH�L '%
.QRWHQ���5$&
2UDFOH�7UDQVSDUHQW�$SSOLFDWLRQ�)DLORYHU��7$)�
empno name
7369 Smith7499 Allen7521 Ward7566 Jones7654 Martin7698 Blake
%HQXW]HU�ZHUGHQ�DXWRPDWLVFK�
DXI�HLQHP�LQWDNWHQ�.QRWHQ�
üEHUQRPPHQ�XQG�OHVHQGH�
=XJULIIH�IRUWJHVHW]W
��
Page 21
2UDFOH�5HDO�$SSOLFDWLRQ�&OXVWHUV���J
y Neu mit Oracle Database 10 T :
– Oracle Automatic Storage-Management (ASM)
– Oracle portable Clusterware
– Der Datenbank-Service-Gedanke
– einheitliche Verwaltung mit dem Oracle Enterprise Manager (EM)
Oracle ASM
y Public LAN Ausfall Probleme:– Verbundene Clients werden gestoppt – TAF
– Keine neuen Verbindungen möglich – TAF – Erkennung des Verbindungsabbruchs – TCP
y Mögliche Lösungen:– Redundante LAN Verbindungen (SI / RAC)– Ausfall eines Knotens wird toleriert (RAC)
y Erkennung des Verbindungsabbruchs:– Oracle 9i / 10g: Setzen der TCP Parameter
(vgl. Metalink Note 13393.1 & 249213.1)
– Ab Oracle 10g neue SQLNet Parameter (vgl. Metalink Note 249213.1)
– Speziell 10g RAC: VIPs
3XEOLF�/$1�$XVIDOO�± GLH�7$)�+HUDXVIRUGHUXQJ
Server 1 Server 2
San 1 San 2
*
'DWD'DWD
$$��==
*
��
Page 22
'LH�2UDFOH�&OXVWHUZDUH�$UFKLWHNWXU�5HO���
Oracle Cluster Synchronisation Services (CSS)Basis für Inter-prozess & -Knoten-Operationen, Node Monitoring & Membership, Client-Dienste
Hardware / Betriebssystem Kernel
Oracle Cluster Ready Services (CRS)HA Framework
Virtuelle IP Adressen Instanzen Prozesse
140.84.20.05
140.84.20.04
140.84.20.06
UWVHXZYW[ \ ] ^X [ _ ` ^�a b b;cd"e f f ^ _;Y"[ \ ] ^
g [ h [Za b bic
j k lnm o o p
UWVHXZYW[ \ ] ^X [ _ ` ^�a b b;cd"e f f ^ _;Y"[ \ ] ^
g [ h [Za b bic
j k lnm o o p
ONS
140.84.20.02
140.84.20.01
140.84.20.03
y FAN = neues Oracle 10g RAC High Availability Feature
y Grundidee: gezielte Information registrierter Clients über Änderungen im 10g RAC-Cluster (HA Events und Loadbalancing)
y Technisch: Vermeidung von Ausfallzeiten z.B. wg. TimeOuts
y 2UDFOH� 'DWDEDVH�2UDFOH�&OXVWHUZDUH�DQG�2UDFOH�5HDO�$SSOLFDWLRQ�&OXVWHUV�$GPLQLVWUDWLRQ�DQG�'HSOR\PHQW *XLGH.DSLWHO�� ,QWURGXFWLRQ WR�:RUNORDG�0DQDJHPHQW (http://download-uk.oracle.com/docs/cd/B19306_01/rac.102/b14197/hafeats.htm#sthref372)
!���PLQV!���PLQV
�����VHFV�����VHFV
a���PLQVa���PLQV
����VHFV����VHFV
RKQH )D1
PLW )D1
RKQH )D1
PLW )D1
5$&�)DLORYHU (UNHQQXQJ $XVIDOO]HLW5$&�)DLORYHU (UNHQQXQJ $XVIDOO]HLW
����VHFV����VHFV
����VHFV����VHFV
2UDFOH�)DVW�$SSOLFDWLRQ�1RWLILFDWLRQ��)$1�
��
Page 23
q�r s�t�u�s�viu�w q�x�v y�x�viw z|{8}�~ s�}8rW{�t��
���"� � � ��� ��� �@� ��� � ����
� s���v x�}�x�t�u���x�}������@� r
���@� � � �Z���|��� ��� �@� ��� � �
q�x�v y�x�v s�{8}8� s�~ ~
���"� � � ��� �����-�Z ���¡ ¢H� ¡ £
FailoverManagement
WorkloadManagement
2UDFOH�'DWHQEDQN�6HUYLFHV*UXQGODJH�YRQ�)DLORYHU� XQG�:RUNORDG�0DQDJHPHQW
'HU�'DWHQEDQN�6HUYLFH�*HGDQNH
y Grundidee:
– eine Datenbank – mehrere Namen
– mehrere Applikationen – eine Datenbank
y Ziel:– (automatisches) Workloadmanagement
– automatisches (Connection-)Loadbalancing
– Zugriff auf bestimmte Connections
y Technik:– :HLWHUHQWZLFNOXQJ der Net-Service-Namen
ERP_DB
CRM_DB
Email_DB
��
Page 24
$QOHJHQ�YRQ�'DWHQEDQN�± 6HYLFHV�LP�'%&$�RGHU�(0
ERP_DB
CRM_DB
$XIO|VXQJ�GHU�6HUYLFH�1DPHQ�YLD 7161$0(6
ERP_DB
Virtuelle IP-Adressen oder entsprechende Hostnamen
Service-Name
¤�¥8¦�§8¨�©�ª�¨�«=
(DESCRIPTION=
(ADDRESS_LIST =
(FAILOVER = on)
(ADDRESS=(PROTOCOL=TCP)(HOST=¬ ªZ¦8 ) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=¬ ªZ¦�® ) (PORT=1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ERP_DB)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 35)
(DELAY = 5)
)
)
)
��
Page 25
2UDFOH�'DWHQEDQN�6HUYLFHV$OV�%DVLVWHFKQRORJLH�QLFKW�QXU�LQ�GHU�'%�YHUWUHWHQ
$ORA_CRS_HOME/bin/crs_stat –t
HA Resource Target State ----------- ------ -----ora.RAC.RAC.RAC1.srv ONLINE ONLINE on stnsp001ora.RAC.RAC.RAC2.srv ONLINE ONLINE on stnsp002ora.RAC.RAC.RAC3.srv ONLINE ONLINE on stnsp003ora.RAC.RAC.RAC4.srv ONLINE ONLINE on stnsp004ora.RAC.RAC.cs ONLINE ONLINE on stnsp001ora.RAC.RAC1.inst ONLINE ONLINE on stnsp001ora.RAC.RAC2.inst ONLINE ONLINE on stnsp002ora.RAC.RAC3.inst ONLINE ONLINE on stnsp003ora.RAC.RAC4.inst ONLINE ONLINE on stnsp004
$ORACLE_HOME/bin/srvctl status service -d RAWRAC -s LOAD1,LOAD2,LOAD3,LOAD4
Service LOAD1 is running on instance(s) RAWRAC3, RAWRAC2, RAWRAC1, RAWRAC4Service LOAD2 is running on instance(s) RAWRAC3, RAWRAC2, RAWRAC1, RAWRAC4Service LOAD3 is running on instance(s) RAWRAC3, RAWRAC2, RAWRAC1, RAWRAC4Service LOAD4 is running on instance(s) RAWRAC3, RAWRAC2, RAWRAC1, RAWRAC4
¯ °���� ��°�±�²�³ ¯ °���� ��°�±�²2´ ¯ °���� ��°�±�²2µ
¶/·�t�t�x���rW¸ ·2t¹ ·�·2~
º�»�¼2½�¡ ¢H�¾8¿nÀ ÁZÂ�¾�Ã�¿nÄ À Å Æ
Ç È8É8ÊË8É8Ê Ì É8Ê
¶ÎÍ/ÏÐv x�Ñ�{�x�}8r }Ò��·�t�t�x8��rW¸ ·�t
2UDFOH���J��5XQWLPH�/RDGEDODQFLQJ8QWHUVW�W]WH�7UHLEHU��-'%&��2'3�1(7
º�»�¼2½�¡ ¢H�Á�Ó@ÔZ¾�¿nÀ ÁHÔ�Å ¿HÅ Æ º�»�¼2½�¡ ¢H�Õ ¿�Ô�ÖH×�ØZÙ Å Ä ¾�Å Æ
��
Page 26
2UDFOH���J��5XQWLPH�/RDGEDODQFLQJ9RUDXVVHW]XQJHQ��&RQQHFWLRQ�3RRO�6HUYLFHV�XQG�$GYLVRU\
Ú Û Ü Ý Þ Û ß àZá Ú Û Ü Ý Þ Û ß àHâ Ú Û Ü Ý Þ Û ß àHã
ä � °n°�²�±"� � � °�å �H�@æ
ç èHénê�ë ì íî�ï ð ñ ò;î"óZï ô ð õ ö
÷ µ�ø�ùú�ø�ù ³Wø�ù
ç èHénê�ë ì íñiû ü î�ï ð ñ üiõ ï õ ö ç èHénê�ë ì íý ï ü;þ ÿ�� � õ ô î"õ ö
CRM_DB
!y Mittels Load Balancing Advisory kann
Workload über einen RAC-Cluster verteilt werden.
y Ziel ist es, eingehenden Workload auf den Knoten zu lenken, auf dem der adressierte Service gut reagiert.
y Ziel ist es ferner, Workload nicht zu hängenden Knoten zu senden.
y Ferner berücksichtigt das Load Balancing Advisory ungleiche Knotenstrukturen sowie Prioritäten
2UDFOH���J� 5XQWLPH�/RDGEDODQFLQJ9RUDXVVHW]XQJHQ��/RDG�%DODQFLQJ�$GYLVRU\
!
��
Page 27
y Für das Load Balancing Advisory können GOALs vereinbart werden.
y Goals beschreiben, nach welchen Maßstäben der Connection Pool Workload an einen Service auf einerbestimmten Instance zuweisen soll:
– THROUGHPUT
– SERVICE_TIME– NONE
y Das Workload Respository muss nicht verwendet werden (Setting NONE)
2UDFOH���J� /RDG�%DODQFLQJ�$GYLVRU\=LHO��*RDOV��SUR�6HUYLFH
!CRM_DB
2UDFOH���J� 5XQWLPH�/RDGEDODQFLQJ(LQVWHOOXQJHQ�LQ�GHP�(QWHUSULVH�0DQDJHU
��
Page 28
*H]LHOWH�$SSOLNDWLRQVEHQDFKULFKWLJXQJ6HUYHU�VHLWLJ�RGHU�UHPRWH��EHU�216
Oracle Cluster Ready Services (CRS)HA Framework
Server / RAC Knoten ONS
)$1�
(YHQW
ClientClient C-Applik.JAVA
+++ Node 2
down ++++++ Instance down
on node 1 +++
¼��@��������� ¡ @�n� ¡ �� » � �@¢@� ��� ¢����� ¡ @�n� ¡ �� »� ������n� ¡ ����� � ��
c
c
cc
cc
c cccc c
Ú Û Ü Ý Þ Û ß àZá Ú Û Ü Ý Þ Û ß àHâ Ú Û Ü Ý Þ Û ß àHã
ä � °n°�²�±"� � � °�å �H�@æ
ç èHénê�ë ì íî�ï ð ñ ò;î"óZï ô ð õ ö
÷ µ�ø�ùú�ø�ù ³Wø�ù
ç èHénê�ë ì íñiû ü î�ï ð ñ üiõ ï õ ö ç èHénê�ë ì íý ï ü;þ ÿ�� � õ ô î"õ ö
'HU�,PSOL]LWH�&RQQHFWLRQ�3RRO
��
Page 29
¼��@��������� ¡ @�n� ¡ �� » � �@¢@� ��� ¢����� ¡ @�n� ¡ �� »� ������n� ¡ ����� � ��
cc
ccc
cc cc
c
'HU�LPSOL]LWH�&RQQHFWLRQ�3RRO*UXQGODJH�I�U�)DVW�&RQQHFWLRQ�)DLORYHU��)&)�
y Der implizite Connection Cache registriert sich am ONS
y Damit werden automatisch FAN-Events empfangen
y Auf ein „(Service) DOWN“-Event reagiert der Connection Pool mit:– Terminierung bestehender Connections gegen den Service– Folge: Applikation bekommt unmittelbar einen ORACLE Fehler
– Connection Pool leitet neu eingehende Connections um– Bereits erfolgte Connections werden nach den Vorgaben des
Load Balancing Advisory umverteilt, wenn Services verfügbar
=XVDPPHQIDVVXQJ
Aktiver� � ���� ��� Ä�������Z Z� �����¼���»
Aktiver� � ���� ��� Ä�������Z Z� �����¼���»
��²�� æ ����� æ � ±��"� � � ° ä æ ����� ²�� ������ æ � ±��"� � � ° ä � °n°�²�±"� � � °�å �H�@æ
c
c
cc
cc
c ccc
y TAF– Klassische Failover Absicherung
– TAF-eigene Fehlermeldungen– Voraussetzung: OCI-Zugriff
y FAN mit FCF– Failover Absicherung
– Workload Absicherung– ORACLE-Fehlermeldungen– Schnelle Benachrichtigung
– Voraussetzung:Impliziter Connection Pool
– TAF und FAN schließen sich für eine Datenbankverbindung bzw. für denselben Service aus
��
Page 30
5$&�XQG�&56�,QWHUQHW�6HPLQDUH�RAC und Oracle CRS Teil 1 –
Release 2 stellt sich vor http://www.oracle.com/global/de/download/2005_09_07_R
AC_und_CRS_Teil_1_Markus_Michalewicz.zip
RAC und Oracle CRS Teil 2 –
Installation und Konfigurationhttp://www.oracle.com/global/de/download/2005_10_05_R
AC_und_CRS_Teil_2_Markus_Michalewicz.zip
RAC und Oracle CRS Teil 3 –Die Oracle HA-API
http://www.oracle.com/global/de/download/2005_11_14_RAC_und_CRS_Teil_3_Markus_Michalewicz.zip
RAC und Oracle CRS Teil 4 –TAF, FAN und hochverfügbare Anwendungenhttp://www.oracle.com/global/de/download/2005_11_30_R
AC_und_CRS_Teil_4_Markus_Michalewicz.zip