{"id":3300,"date":"2018-01-22T10:15:00","date_gmt":"2018-01-22T12:15:00","guid":{"rendered":"http:\/\/www.dbarj.com.br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/"},"modified":"2018-01-22T10:15:00","modified_gmt":"2018-01-22T12:15:00","slug":"implementing-oracle-connection-manager-high-availability","status":"publish","type":"post","link":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/","title":{"rendered":"Implementing Oracle Connection Manager with High Availability"},"content":{"rendered":"<p>One of the biggest problemas we have in Oracle Cloud Infrastructure Classic is that when you provision an ExaCS you cannot assign &#8220;IP Network&#8221; addresses (as known as private IPs, eg: 10.x.x.x) to your ExaCS machine. That being said, you have only 2 options if you want to communicate your applications in Compute Classic (as PaaS or IaaS) with your ExaCS:<\/p>\n<ol>\n<li>Assign a Public IP Address to all your application and create a firewall rule allowing each to communicate with you ExaCS<\/li>\n<li>Configure Oracle Connection Manager as your only point of connection with ExaCS.<\/li>\n<\/ol>\n<p>Second option is much better than first for security, simplicity and design reasons. You can have a machine (or machines if you need HA) acting as a proxy server doing all the intermediate connection between your IaaS VLANs and ExaCS.<\/p>\n<p>Usually, Oracle Connection Manager (OCM) is used when you can&#8217;t access the DB directly for some reason and need a middle server &#8220;routing&#8221; your packets until the DB:<\/p>\n<div id=\"attachment_3019\" style=\"width: 520px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3019\" class=\"wp-image-3019 size-large\" src=\"http:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696-1024x648.png\" alt=\"\" width=\"520\" height=\"329\" srcset=\"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696-1024x648.png 1024w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696-300x190.png 300w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696-768x486.png 768w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696.png 1036w\" sizes=\"auto, (max-width: 520px) 100vw, 520px\" \/><p id=\"caption-attachment-3019\" class=\"wp-caption-text\"><span style=\"font-size: 8pt;\">Source: http:\/\/arup.blogspot.com.br\/2011\/08\/setting-up-oracle-connection-manager.html<\/span><\/p><\/div>\n<p>So in this article I will show step by step of how to configure and deploy this solution.<\/p>\n<p>In our configuration, we have:<\/p>\n<ul>\n<li>Clients running on a VLAN 10.10.0.0\/16<\/li>\n<li>Two OCMs machines acting as proxy servers of ExaCS to all clients. They have 2 interfaces, one public and one private.<\/li>\n<li>The ExaCS server running on a Public IP, with client IP as 129.10.10.0\/27 (<em>could be as many db servers as you want<\/em>).<\/li>\n<\/ul>\n<p>The design would be the following:<\/p>\n<p id=\"dnVpPPg\"><img loading=\"lazy\" decoding=\"async\" width=\"1832\" height=\"914\" class=\"alignnone size-full wp-image-3018 \" src=\"http:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624e7f5c4ca.png\" alt=\"\" srcset=\"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624e7f5c4ca.png 1832w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624e7f5c4ca-300x150.png 300w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624e7f5c4ca-768x383.png 768w, https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624e7f5c4ca-1024x511.png 1024w\" sizes=\"auto, (max-width: 1832px) 100vw, 1832px\" \/><\/p>\n<p>The reason I have 2 OCMs is for Load Balance and HA. In case one of them fail, I don&#8217;t have a Single point of failure (SPOF) in my architecture. The ExaCS is all made of redundancies, so I can&#8217;t ruin it generating a SPOF in my design.<\/p>\n<p>So, first of all, the connection rules. My ExaCS machine will need to have the following rules:<\/p>\n<p>&nbsp;<\/p>\n<table width=\"587\">\n<tbody>\n<tr style=\"height: 18px;\">\n<td style=\"height: 18px;\" width=\"160\">SOURCE_HOST_NAME<\/td>\n<td style=\"height: 18px;\" width=\"147\">DESTINATION_PORT<\/td>\n<td style=\"height: 18px;\" width=\"199\">DESTINATION_HOST_NAME<\/td>\n<td style=\"height: 18px;\" width=\"81\">PROTOCOL<\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"height: 18px;\">EXAOCM1<\/td>\n<td style=\"height: 18px;\">1521<\/td>\n<td style=\"height: 18px;\">EXACS<\/td>\n<td style=\"height: 18px;\">TCP<\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"height: 18px;\">EXACS<\/td>\n<td style=\"height: 18px;\">1521<\/td>\n<td style=\"height: 18px;\">EXAOCM1<\/td>\n<td style=\"height: 18px;\">TCP<\/td>\n<\/tr>\n<tr style=\"height: 18px;\">\n<td style=\"height: 18px;\">EXAOCM2<\/td>\n<td style=\"height: 18px;\">1521<\/td>\n<td style=\"height: 18px;\">EXACS<\/td>\n<td style=\"height: 18px;\">TCP<\/td>\n<\/tr>\n<tr style=\"height: 17.9219px;\">\n<td style=\"height: 17.9219px;\">EXACS<\/td>\n<td style=\"height: 17.9219px;\">1521<\/td>\n<td style=\"height: 17.9219px;\">EXAOCM2<\/td>\n<td style=\"height: 17.9219px;\">TCP<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>PS: Keep in mind that EXACS hostname actually means all the compute nodes and their Client IPs \/ Subnet.<\/p>\n<p>So now it&#8217;s time to install a new machine that will run the Oracle Connection Manager application. You can use a very small resourced machine as OCM will not use more than 2G of disk space. My recommendation for each is:<\/p>\n<ul>\n<li>Linux 7.2 or higher with latest yum updates.<\/li>\n<li>Oracle 12.2 client or higher with latest patches applied.<\/li>\n<li>2 CPUs<\/li>\n<li>20G HD<\/li>\n<li>8G RAM<\/li>\n<\/ul>\n<h3>1. Installing Oracle Connection Manager<\/h3>\n<p>Let&#8217;s start by installing OCM. Supposing you don&#8217;t have a graphical interface, use a response file with the following parameters:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ cat client.rsp\r\noracle.install.responseFileVersion=\/oracle\/install\/rspfmt_clientinstall_response_schema_v12.2.0\r\nUNIX_GROUP_NAME=oinstall\r\nINVENTORY_LOCATION=\/u01\/app\/oraInventory\r\nORACLE_HOME=\/u01\/app\/oracle\/product\/12.2.0.1\/client_1\r\nORACLE_BASE=\/u01\/app\/oracle\r\noracle.install.client.installType=Custom\r\noracle.install.client.customComponents=oracle.network.cman:12.2.0.1.0<\/pre>\n<p>Then simply call:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ .\/client\/runInstaller -responseFile ~\/client.rsp -silent\r\nStarting Oracle Universal Installer...\r\n\r\nChecking Temp space: must be greater than 415 MB.   Actual 11003 MB    Passed\r\nChecking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed\r\nPreparing to launch Oracle Universal Installer from \/tmp\/OraInstall2018-01-17_06-24-40PM. Please wait ...\r\n[WARNING] [INS-13014] Target environment does not meet some optional requirements.\r\n   CAUSE: Some of the optional prerequisites are not met. See logs for details. installActions2018-01-17_06-24-40PM.log\r\n   ACTION: Identify the list of failed prerequisite checks from the log: installActions2018-01-17_06-24-40PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.\r\nYou can find the log of this install session at:\r\n \/u01\/app\/oraInventory\/logs\/installActions2018-01-17_06-24-40PM.log\r\nThe installation of Oracle Client 12c was successful.\r\nPlease check '\/u01\/app\/oraInventory\/logs\/silentInstall2018-01-17_06-24-40PM.log' for more details.\r\n\r\nAs a root user, execute the following script(s):\r\n\t1. \/u01\/app\/oraInventory\/orainstRoot.sh\r\n\t2. \/u01\/app\/oracle\/product\/12.2.0.1\/client_1\/root.sh\r\n\r\n\r\n\r\nSuccessfully Setup Software.<\/pre>\n<p>Run the 2 scripts as root and you are all set.<\/p>\n<p>Now next step is to configure the Connection Manager. It&#8217;s also a pretty easy task. Create a file called cman.ora in <strong>$ORACLE_HOME\/network\/admin <\/strong>folder:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$ cat $ORACLE_HOME\/network\/admin\/cman.ora\r\nCMAN_exaocm01 =\r\n  (CONFIGURATION=\r\n    (ADDRESS=(PROTOCOL=tcp)(HOST=exaocm01)(PORT=1521))\r\n    (RULE_LIST=\r\n      (RULE=(SRC=10.10.0.0\/16)(DST=129.10.10.0\/27)(SRV=*)(ACT=accept))\r\n      (RULE=(SRC=opcexaocm01)(DST=127.0.0.1)(SRV=cmon)(ACT=accept))\r\n    )\r\n    (PARAMETER_LIST=\r\n#     (ASO_AUTHENTICATION_FILTER=ON)\r\n      (CONNECTION_STATISTICS=YES)\r\n#     (EVENT_GROUP=INIT_AND_TERM,MEMORY_OPS,PROCESS_MGMT)\r\n      (IDLE_TIMEOUT=3600)\r\n      (INBOUND_CONNECT_TIMEOUT=10)\r\n#     (LOG_DIRECTORY=\/home\/user\/network\/admin\/log)\r\n      (LOG_LEVEL=ADMIN)\r\n#     (MAX_CMCTL_SESSIONS=6)\r\n      (MAX_CONNECTIONS=100)\r\n      (MAX_GATEWAY_PROCESSES=20)\r\n      (MIN_GATEWAY_PROCESSES=5)\r\n      (OUTBOUND_CONNECT_TIMEOUT=10)\r\n#     (REMOTE_ADMIN=NO)\r\n#     (SESSION_TIMEOUT=60)\r\n#     (TRACE_DIRECTORY=\/home\/user\/network\/admin\/trace)\r\n#     (TRACE_FILELEN=100)\r\n#     (TRACE_FILENO=2)\r\n#     (TRACE_LEVEL=SUPPORT)\r\n#     (TRACE_TIMESTAMP=ON)\r\n    )\r\n  )\r\n\r\nREGISTRATION_INVITED_NODES_cman_exaocm01=(129.10.10.0\/27)<\/pre>\n<p>Some points:<\/p>\n<ul>\n<li>The name of configuration should be CMAN_<em>hostname<\/em> to be the default one when you call <em>cmctl<\/em> utility.<\/li>\n<li>I&#8217;m allowing in the Rule list all the clients on my IAAS VLan network to connect to the ExaCS Client IP through this machine.<\/li>\n<li>I&#8217;m also allowing this own server to configure OCM.<\/li>\n<li>In last row, I&#8217;m permitting the ExaCS to register services in this OCM server.<\/li>\n<\/ul>\n<p><em>Note that depending on the number of connections you are routing, the value for max connections and gateway processes must be adapted.<\/em><\/p>\n<p>After everything is set, I can now start the OCM gateways:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ cmctl\r\n\r\nCMCTL for Linux: Version 12.2.0.1.0 - Production on 19-JAN-2018 20:41:51\r\n\r\nCopyright (c) 1996, 2016, Oracle.  All rights reserved.\r\n\r\nWelcome to CMCTL, type \"help\" for information.\r\n\r\nCMCTL&gt; administer\r\nCurrent instance CMAN_exaocm01 is not yet started\r\nConnections refer to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=exaocm01)(PORT=1521))).\r\nThe command completed successfully.\r\nCMCTL:CMAN_exaocm01&gt; startup\r\nStarting Oracle Connection Manager instance CMAN_exaocm01. Please wait...\r\nCMAN for Linux: Version 12.2.0.1.0 - Production\r\nStatus of the Instance\r\n----------------------\r\nInstance name             cman_exaocm01\r\nVersion                   CMAN for Linux: Version 12.2.0.1.0 - Production\r\nStart date                19-JAN-2018 20:41:56\r\nUptime                    0 days 0 hr. 0 min. 9 sec\r\nNum of gateways started   5\r\nAverage Load level        0\r\nLog Level                 ADMIN\r\nTrace Level               OFF\r\nInstance Config file      \/u01\/app\/oracle\/product\/12.2.0.1\/client_1\/network\/admin\/cman.ora\r\nInstance Log directory    \/u01\/app\/oracle\/diag\/netcman\/exaocm01\/cman_exaocm01\/alert\r\nInstance Trace directory  \/u01\/app\/oracle\/diag\/netcman\/exaocm01\/cman_exaocm01\/trace\r\nThe command completed successfully.\r\nCMCTL:CMAN_exaocm01&gt; exit<\/pre>\n<p>Good. Now all do all those same steps for <em>exaocm02<\/em>: install the client, configure the cman.ora and start the service, only changing the hostname accordingly.<\/p>\n<h3>2. Configuring the Database to Register Services on both OCMs machines<\/h3>\n<p>This step is very straight forward. All you need is to configure additional remote listeners to the database services running on your ExaCS. To do that, just log in and check the current value:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 12.1.0.2.0 Production on Fri Jan 19 20:50:37 2018\r\n\r\nCopyright (c) 1982, 2014, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 12c EE Extreme Perf Release 12.1.0.2.0 - 64bit Production\r\nWith the Partitioning, Real Application Clusters, Automatic Storage Management, Oracle Label Security,\r\nOLAP, Advanced Analytics and Real Application Testing options\r\n\r\nSQL&gt; show parameter remote_listener\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\nremote_listener                      string      lpclscan-c1r101.us6.oracleclou\r\n                                                 d.com:1521\r\nSQL&gt; \r\n<\/pre>\n<p>Now update it adding the 2 OCMs in the remote_listener configuration:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"oracledb\">SQL&gt; alter system set remote_listener='lpclscan-c1r101.us6.oraclecloud.com:1521','exaocm01:1521','exaocm02:1521' scope=both sid='*';\r\n\r\nSystem altered.\r\n\r\nSQL&gt; alter system register;\r\n\r\nSystem altered.<\/pre>\n<p><em>PS: Note here that I&#8217;m using\u00a0exaocm01 and\u00a0exaocm02 instead of the IP addresses. To make it work, you need to create entries for both machines on the \/etc\/hosts of your DB Nodes. Otherwise keep the raw IP addresses.<\/em><\/p>\n<p>Now to check if the database instance was correctly registered on the OCMs. To validate just print the listener status:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">$ lsnrctl status\r\n\r\nLSNRCTL for Linux: Version 12.2.0.1.0 - Production on 19-JAN-2018 21:08:56\r\n\r\nCopyright (c) 1991, 2016, Oracle.  All rights reserved.\r\n\r\nConnecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=exaocm01)(PORT=1521)))\r\nSTATUS of the LISTENER\r\n------------------------\r\nAlias                     cman_exaocm01\r\nVersion                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production\r\nStart Date                19-JAN-2018 20:41:56\r\nUptime                    0 days 0 hr. 26 min. 59 sec\r\nTrace Level               off\r\nSecurity                  ON: Local OS Authentication\r\nSNMP                      OFF\r\nListener Parameter File   \/u01\/app\/oracle\/product\/12.2.0.1\/client_1\/network\/admin\/cman.ora\r\nListener Log File         \/u01\/app\/oracle\/diag\/netcman\/exaocm01\/cman_exaocm01\/alert\/log.xml\r\nListening Endpoints Summary...\r\n  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=exaocm01)(PORT=1521)))\r\nServices Summary...\r\nProxy service \"cmgw\" has 1 instance(s).\r\n  Instance \"cman\", status READY, has 5 handler(s) for this service...\r\nService \"RJOPC01.us6.oraclecloud.com\" has 2 instance(s).\r\n  Instance \"RJOPC011\", status READY, has 1 handler(s) for this service...\r\n  Instance \"RJOPC012\", status READY, has 1 handler(s) for this service...\r\nService \"RJOPC01XDB.us6.oraclecloud.com\" has 2 instance(s).\r\n  Instance \"RJOPC011\", status READY, has 1 handler(s) for this service...\r\n  Instance \"RJOPC012\", status READY, has 1 handler(s) for this service...\r\nService \"cmon\" has 1 instance(s).\r\n  Instance \"cman\", status READY, has 1 handler(s) for this service...\r\nService \"pdb1.us6.oraclecloud.com\" has 2 instance(s).\r\n  Instance \"RJOPC011\", status READY, has 1 handler(s) for this service...\r\n  Instance \"RJOPC012\", status READY, has 1 handler(s) for this service...\r\nThe command completed successfully<\/pre>\n<p>Perfect! Remember you can also configure several different databases in different servers to do the same, making your OCMs servers a middle tier proxy server for all.<\/p>\n<h3>3. Configuring the client to connect through OCMs<\/h3>\n<p>Finally the last part is to configure your clients to access your services running on ExaCS through the OCM machines.<\/p>\n<p>To accomplish that, simply create a TNS entry pointing to both, as below:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">RJOPC01 =\r\n (DESCRIPTION =\r\n  (FAILOVER = ON)\r\n  (LOAD_BALANCE = ON)\r\n  (ADDRESS_LIST =\r\n   (ADDRESS = (PROTOCOL = TCP)(HOST = exaocm01)(PORT = 1521))\r\n   (ADDRESS = (PROTOCOL = TCP)(HOST = exaocm02)(PORT = 1521)))\r\n  (CONNECT_DATA =\r\n   (SERVER = DEDICATED)\r\n   (SERVICE_NAME = RJOPC01.us6.oraclecloud.com)\r\n   (FAILOVER_MODE =\r\n     (TYPE = SELECT)\r\n     (METHOD = BASIC)\r\n     (DELAY = 5)\r\n     (RETRIES = 100)\r\n )))<\/pre>\n<p><em>PS: Note here that I&#8217;m using\u00a0exaocm01 and\u00a0exaocm02 instead of the IP addresses. To make it work, you need to create entries for both machines on the \/etc\/hosts of your client. Otherwise keep the raw IP addresses.<\/em><\/p>\n<p>And what if you have a Dataguard environment with <em>Fast-Start Failover<\/em> enabled and want your TNS to be transparently aware of node failover? In this case your TNS would be:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">RJOPC01 =\r\n (DESCRIPTION =\r\n  (FAILOVER = ON)\r\n  (ADDRESS_LIST =\r\n   (LOAD_BALANCE = ON)\r\n   (FAILOVER = ON)\r\n   (ADDRESS = (PROTOCOL = TCP)(HOST = ocmexa01)(PORT = 1521))\r\n   (ADDRESS = (PROTOCOL = TCP)(HOST = ocmexa02)(PORT = 1521)))\r\n  (ADDRESS_LIST =\r\n   (ADDRESS = (PROTOCOL = TCP)(HOST = exadg)(PORT = 1521)))\r\n  (CONNECT_DATA =\r\n   (SERVER = DEDICATED)\r\n   (SERVICE_NAME = RJOPC01.us6.oraclecloud.com)\r\n   (FAILOVER_MODE =\r\n     (TYPE = SELECT)\r\n     (METHOD = BASIC)\r\n     (DELAY = 5)\r\n     (RETRIES = 100)\r\n )))<\/pre>\n<p>Meaning that oracle would first try to load balance and failover between both OCMs to only then failover to your DG environment.<\/p>\n<h3>4. Conclusion<\/h3>\n<p>After everything set, all you gotta do is connect transparently to your database using sqlplus\/jdbc\/etc using the TNS alias. I strongly recommend also running the <a href=\"http:\/\/dominicgiles.com\/swingbench.html\" target=\"_blank\" rel=\"noopener\">swingbench<\/a>\u00a0tool to ensure the performances you have before\/after the OCMs are acceptable.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">$ .\/charbench -c ~\/my.conf\r\nAuthor  :\t Dominic Giles\r\nVersion :\t 2.6.0.1076\r\n\r\nResults will be written to results.xml.\r\nHit Return to Terminate Run...\r\n\r\nTime\t\tUsers\tTPM\tTPS\r\n\r\n12:11:38 PM     4       98842   1694<\/pre>\n<b>Have you enjoyed? Please leave a comment or give a \ud83d\udc4d!<\/b>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style2 like-3300 jlk' href='javascript:void(0)' data-task='like' data-post_id='3300' data-nonce='de4404f630' rel='nofollow'><img class='wti-pixel' src='https:\/\/www.dbarj.com.br\/wp-content\/plugins\/wti-like-post\/images\/pixel.gif' title='Like' \/><span class='lc-3300 lc'>+1<\/span><\/a><\/div><\/div> <div class='status-3300 status align-left'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>One of the biggest problemas we have in Oracle Cloud Infrastructure Classic is that when you provision an ExaCS you cannot assign &#8220;IP Network&#8221; addresses (as known as private IPs, eg: 10.x.x.x) to your ExaCS machine. That being said, you have only 2 options if you want to communicate your applications in Compute Classic (as &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/\">Continue lendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44,2],"tags":[],"class_list":["post-3300","post","type-post","status-publish","format-standard","hentry","category-oracle-cloud","category-database","item-wrap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Implementing Oracle Connection Manager with High Availability - DBA - Rodrigo Jorge - Oracle Tips and Guides<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"DBA RJ\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/\"},\"author\":{\"name\":\"DBA RJ\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"headline\":\"Implementing Oracle Connection Manager with High Availability\",\"datePublished\":\"2018-01-22T12:15:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/\"},\"wordCount\":946,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/img_5a624fa8aa696-1024x648.png\",\"articleSection\":[\"Oracle Cloud\",\"Oracle Database General\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/\",\"name\":\"Implementing Oracle Connection Manager with High Availability - DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/img_5a624fa8aa696-1024x648.png\",\"datePublished\":\"2018-01-22T12:15:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/img_5a624fa8aa696-1024x648.png\",\"contentUrl\":\"http:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/img_5a624fa8aa696-1024x648.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/2018\\\/01\\\/implementing-oracle-connection-manager-high-availability\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Implementing Oracle Connection Manager with High Availability\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/\",\"name\":\"DBA - Rodrigo Jorge - Oracle Tips and Guides\",\"description\":\"Blog about Databases, Security and High Availability\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/pt-br\\\/#\\\/schema\\\/person\\\/28a44ca3a6633fe4156ad1ea209d40a9\",\"name\":\"DBA RJ\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"url\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"contentUrl\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\",\"width\":712,\"height\":712,\"caption\":\"DBA RJ\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.dbarj.com.br\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/RodrigoJorgePOUG19.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Implementing Oracle Connection Manager with High Availability - DBA - Rodrigo Jorge - Oracle Tips and Guides","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/","twitter_misc":{"Escrito por":"DBA RJ","Est. tempo de leitura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/#article","isPartOf":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/"},"author":{"name":"DBA RJ","@id":"https:\/\/www.dbarj.com.br\/pt-br\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"headline":"Implementing Oracle Connection Manager with High Availability","datePublished":"2018-01-22T12:15:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/"},"wordCount":946,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"image":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/#primaryimage"},"thumbnailUrl":"http:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696-1024x648.png","articleSection":["Oracle Cloud","Oracle Database General"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/","url":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/","name":"Implementing Oracle Connection Manager with High Availability - DBA - Rodrigo Jorge - Oracle Tips and Guides","isPartOf":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/#primaryimage"},"image":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/#primaryimage"},"thumbnailUrl":"http:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696-1024x648.png","datePublished":"2018-01-22T12:15:00+00:00","breadcrumb":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/#primaryimage","url":"http:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696-1024x648.png","contentUrl":"http:\/\/www.dbarj.com.br\/wp-content\/uploads\/2018\/01\/img_5a624fa8aa696-1024x648.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbarj.com.br\/pt-br\/2018\/01\/implementing-oracle-connection-manager-high-availability\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dbarj.com.br\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Implementing Oracle Connection Manager with High Availability"}]},{"@type":"WebSite","@id":"https:\/\/www.dbarj.com.br\/pt-br\/#website","url":"https:\/\/www.dbarj.com.br\/pt-br\/","name":"DBA - Rodrigo Jorge - Oracle Tips and Guides","description":"Blog about Databases, Security and High Availability","publisher":{"@id":"https:\/\/www.dbarj.com.br\/pt-br\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbarj.com.br\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.dbarj.com.br\/pt-br\/#\/schema\/person\/28a44ca3a6633fe4156ad1ea209d40a9","name":"DBA RJ","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","url":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","contentUrl":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png","width":712,"height":712,"caption":"DBA RJ"},"logo":{"@id":"https:\/\/www.dbarj.com.br\/wp-content\/uploads\/2019\/09\/RodrigoJorgePOUG19.png"}}]}},"_links":{"self":[{"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/posts\/3300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/comments?post=3300"}],"version-history":[{"count":0,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/posts\/3300\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/media?parent=3300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/categories?post=3300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbarj.com.br\/pt-br\/wp-json\/wp\/v2\/tags?post=3300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}