{"id":4646,"date":"2015-04-26T20:15:29","date_gmt":"2015-04-26T12:15:29","guid":{"rendered":"http:\/\/rmohan.com\/?p=4646"},"modified":"2015-04-26T20:20:42","modified_gmt":"2015-04-26T12:20:42","slug":"different-approaches-for-connecting-weblogic-server-to-rac-database","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=4646","title":{"rendered":"Different approaches for connecting Weblogic Server to RAC database"},"content":{"rendered":"<p>Oracle Real Application Clusters (RAC) is a software component you can add to a high-availability solution that enables users on multiple machines to access a single database with increased performance. RAC comprises two or more Oracle database instances running on two or more clustered machines and accessing a shared storage device via cluster technology.<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/oracle.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4647\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/oracle.jpg\" alt=\"oracle\" width=\"483\" height=\"374\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/oracle.jpg 483w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/oracle-300x232.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/oracle-150x116.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/oracle-400x310.jpg 400w\" sizes=\"(max-width: 483px) 100vw, 483px\" \/><\/a><\/p>\n<div class=\"separator\">If your application requires load balancing across RAC nodes, WebLogic Server supports this capability through use of Using Connect-Time Load Balancing\/Failover with Oracle RAC(JDBC URL based Load Balancing\/Failover), JDBC Multi Data sources with Oracle RAC nodes and Gridlink Data Source.<\/div>\n<div class=\"separator\"><\/div>\n<div class=\"separator\"><b>Multi Data Source:<\/b><\/div>\n<p>Refer the below URL&#8217;s for details on Multi Data Source.<\/p>\n<p>&nbsp;<\/p>\n<h3>JDBC Multi Data Sources in weblogic server<\/h3>\n<p>A\u00a0<em>multi data source<\/em>\u00a0is an abstraction around a group of data sources that provides load balancing or failover processing between the data sources associated with the multi data source. Multi data sources are bound to the JNDI tree or local application context just like data sources are bound to the JNDI tree.\u00a0The Multi Data Source can be used in the same way as we use a Data Source.<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/oracle-2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4648\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/oracle-2.jpg\" alt=\"oracle-2\" width=\"266\" height=\"320\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/oracle-2.jpg 266w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/oracle-2-249x300.jpg 249w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/oracle-2-125x150.jpg 125w\" sizes=\"(max-width: 266px) 100vw, 266px\" \/><\/a><\/p>\n<p>When an application requests a connection, the Multi Data Source determines which data source will provide a connection based on the selected algorithm.<\/p>\n<p>Create two or more data sources, and then create a Multi Data Source and assign data sources to the Multi Data Source.<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-11.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4649\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-11.jpg\" alt=\"weblogicssrrerew-11\" width=\"320\" height=\"148\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-11.jpg 320w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-11-300x139.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-11-150x69.jpg 150w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/><\/a><\/p>\n<p>Configurations for the Multi Data Source.<\/p>\n<p>Algorithm Type<\/p>\n<p><b>Load-Balancing<\/b><\/p>\n<p>Connection requests to a load-balancing multi data source are served from any data source in the list. The multi data source selects data sources to use to satisfy connection requests using a round-robin scheme. When the multi data source provides a connection, it selects a connection from the data source listed just after the last data source that was used to provide a connection. Multi data sources that use the Load Balancing algorithm also fail over to the next data source in the list if a database connection test fails and the connection cannot be replaced, or if the data source is suspended.<\/p>\n<p>Failover<\/p>\n<p>The Failover algorithm provides an ordered list of data sources to use to satisfy connection requests. Normally, every connection request to this kind of multi data source is served by the first data source in the list. If a database connection test fails and the connection cannot be replaced, or if the data source is suspended, a connection is sought sequentially from the next data source on the list.<\/p>\n<p>FailoverRequestIfBusy<\/p>\n<p>With the Failover algorithm, this attribute enables failover when all connections in a data source are in use.<\/p>\n<p><b>TestFrequencySeconds<\/b><\/p>\n<p>This attribute controls the frequency at which Weblogic Server checks the health of data sources previously marked as unhealthy to see if connections can be recreated and if the data source can be re-enabled.<\/p>\n<p>&nbsp;<\/p>\n<h3 class=\"post-title entry-title\">Creating JDBC Multi Data Source through WLST<\/h3>\n<div id=\"post-body-9219405160235447036\" class=\"post-body entry-content\">\n<div dir=\"ltr\">The below WLST script will help us to create the Multi Data Source in weblogic server.CreateMultiDataSource.py<\/p>\n<p>adminURL=&#8217;t3:\/\/&lt;&lt;Admin Server Host&gt;&gt;:&lt;&lt;Port&gt;&gt;&#8217;<br \/>\nadminUserName=&#8217;weblogic&#8217;<br \/>\nadminPassword='&lt;&lt;Password&gt;&gt;&#8217;<br \/>\nconnect(adminUserName, adminPassword, adminURL)<br \/>\nedit()<br \/>\nstartEdit()<br \/>\njdbcSystemResource = create(&#8220;MS1&#8243;,&#8221;JDBCSystemResource&#8221;)<br \/>\njdbcResource = jdbcSystemResource.getJDBCResource()<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\njdbcResource.setName(&#8220;MS1&#8221;)<br \/>\ndsParams = jdbcResource.getJDBCDataSourceParams()<br \/>\njndiName=&#8217;jdbc\/MS1&#8242;<br \/>\ndsParams.setJNDINames([jndiName])<br \/>\ndsParams.setAlgorithmType(&#8216;Failover&#8217;)<br \/>\ndsParams.setDataSourceList(&#8216;DS1,DS2&#8217;)<br \/>\ndsParams.setFailoverRequestIfBusy(true)<br \/>\njdbcSystemResource.addTarget(getMBean(&#8216;Servers\/AdminServer&#8217;))<br \/>\nprint(&#8216;MDS1 created successfully&#8230;&#8217;)<br \/>\nsave()<br \/>\nactivate()<br \/>\ndisconnect()<\/p>\n<p>Before executing this script the member data sources(DS1,DS2) should be created.<\/p>\n<p>&nbsp;<\/p>\n<p><b>Connect-Time Load Balancing\/Failover with Oracle RAC(JDBC URL based Load Balancing\/Failover):<\/b><br \/>\n<b><br \/>\n<\/b>The JDBC connection string can be configure with single data source to support the load balancing and failover with RAC data source nodes.<br \/>\nCreate a Generic Data source in weblogic server and provide the JDBC URL as below.Enable and disable the load balancing and failover accordingly.<\/p>\n<p>jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=<b>(LOAD_BALANCE=on)(FAILOVER=on)<\/b>(ADDRESS=(PROTOCOL=tcp)(HOST=RAC node1)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=RAC node2)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=servicename)))<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-12.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4652\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-12.jpg\" alt=\"weblogicssrrerew-12\" width=\"908\" height=\"487\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-12.jpg 908w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-12-300x161.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-12-150x80.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-12-400x215.jpg 400w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-12-900x483.jpg 900w\" sizes=\"(max-width: 908px) 100vw, 908px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>There are some limitation using this approach like the Global XA transactions are not supported.<\/p>\n<p><b>Gridlink\u00a0Data Source:<\/b><br \/>\n<b><br \/>\n<\/b>In Oracle WebLogic Server 10.3.4, a single data source implementation has been introduced to support an Oracle RAC cluster. It responds to FAN events to provide Fast Connection Failover (FCF), Runtime Connection Load-Balancing (RCLB), and RAC instance graceful shutdown. \u00a0XA affinity is supported at the global transaction Id level. The new feature is called WebLogic Active GridLink for RAC; which is implemented as the GridLink data source within WebLogic Server.<\/p>\n<p><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-13.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4653\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-13.jpg\" alt=\"weblogicssrrerew-13\" width=\"657\" height=\"391\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-13.jpg 657w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-13-300x179.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-13-150x89.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-13-400x238.jpg 400w\" sizes=\"(max-width: 657px) 100vw, 657px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>FastConnection Failover:<\/p>\n<p>A GridLink data source uses Fast Connection Failover to:<\/p>\n<ul>\n<li>Provide rapid failure detection<\/li>\n<li>Abort and remove invalid connections from the connection pool<\/li>\n<li>Perform graceful shutdown for planned and unplanned Oracle RAC node outages<\/li>\n<li>Adapt to changes in topology, such as addingor removing a node<\/li>\n<li>Distribute runtime work requests to all active Oracle RAC instances, including those rejoining a cluster<\/li>\n<\/ul>\n<div>Runtime Connection Load Balancing:<\/div>\n<div>\u00a0GridLink data sources use runtime connection load balancing to distribute connections to Oracle RAC instances based on Oracle FAN events issued by the database.<\/div>\n<div><\/div>\n<div>\n<div>Runtime Connection Load Balancing allows WebLogic Server to:<\/div>\n<div>\n<ul>\n<li>Adjust the distribution of work based on back end node capacities such as CPU, availability, and response time<\/li>\n<li>React to changes in Oracle RAC topology<\/li>\n<li>Manage pooled connections for high performance and scalability<\/li>\n<\/ul>\n<div>XA affinity:<\/div>\n<div>XA affinity is a performance feature that ensures that all database operations performed on a RAC cluster within the context of a global transaction are directed to the same RAC instance. Affinity will be established based on the global transaction id, instead of by individual data source, to ensure that connections obtained from different data sources that are configured for the same RAC cluster are all associated with the same RAC instance<\/div>\n<\/div>\n<\/div>\n<div><\/div>\n<div>Refer the following URL to create the Gridlink datasource through WLST script<\/div>\n<div><\/div>\n<div><\/div>\n<div>\n<h3 class=\"post-title entry-title\">Creating the Gridlink data source through WLST script<\/h3>\n<div id=\"post-body-7112494643324336317\" class=\"post-body entry-content\">\n<div dir=\"ltr\">The below WLST script will help as to create a GridLink datasource in weblogic server.<\/p>\n<p><b>GridLinkDataSource.properties<\/b><br \/>\n<b><br \/>\n<\/b>dbURL=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)HOST=dbhost1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=dbhost2)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=SERVICENAME)))<\/p>\n<p>connectionpool.test.query=SQL SELECT * FROM DUAL<br \/>\nconnectionpool.driver.class=oracle.jdbc.OracleDriver<br \/>\nconnectionpool.username=SOA_EAIOWNER<br \/>\nconnectionpool.password=orasoa11g<br \/>\nconnectionpool.initCapacity=10<br \/>\nconnectionpool.maxCapacity=60<br \/>\ndatasource.name=EAISOAMetadataSource<br \/>\ndatasource.jndi.name=eai\/ds\/EAISOAMetadataSource<br \/>\ndatasource.target=Servers\/AdminServer<\/p>\n<p>domain.AdminIP=localhost<br \/>\ndomain.AdminPort=8000<\/p>\n<p>domain.AdminPasswd=welcome1<\/p>\n<p><b>GridLinkDatasourceCreation.py<\/b><\/p>\n<p>from java.io import FileInputStream<\/p>\n<p>def createGridLinkJDBCResources(configProps):<br \/>\nedit()<br \/>\nstartEdit()<br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\nserver=&#8217;AdminServer&#8217;<br \/>\ncd(&#8220;Servers\/&#8221;+server)<br \/>\ntarget=cmo<br \/>\ncd(&#8220;..\/..&#8221;)<br \/>\nprint &#8216;=========================================&#8217;<br \/>\nprint &#8216;Creating GridLink DataSource&#8230;.&#8217;<br \/>\nprint &#8216;=========================================&#8217;<br \/>\ndsTestQuery=configProps.get(&#8220;connectionpool.test.query&#8221;)<br \/>\ndsDriverName=configProps.get(&#8220;connectionpool.driver.class&#8221;)<\/p>\n<p>cd(&#8216;\/&#8217;)<br \/>\ndsURL= configProps.get(&#8220;dsURL&#8221;) \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\ndsUserName = configProps.get(&#8220;connectionpool.username&#8221;)<br \/>\ndsPassword = configProps.get(&#8220;connectionpool.password&#8221;)<br \/>\ninitCapacity = configProps.get(&#8220;connectionpool.initCapacity&#8221;)<br \/>\nmaxCapacity = configProps.get(&#8220;connectionpool.maxCapacity&#8221;)<br \/>\ndsName = configProps.get(&#8220;datasource.name&#8221;)<br \/>\njndiname = configProps.get(&#8220;datasource.jndi.name&#8221;)<br \/>\ndatasourceTargets = configProps.get(&#8220;datasource.target&#8221;).split(&#8220;,&#8221;)<\/p>\n<p>print &#8216;dsUserName&#8217;,dsUserName<br \/>\nprint &#8216;dsPassword&#8217;,dsPassword<br \/>\nprint &#8216;initCapacity&#8217;,initCapacity<br \/>\nprint &#8216;maxCapacity&#8217;,maxCapacity<br \/>\nprint &#8216;dsName&#8217;,dsName<br \/>\nprint &#8216;jndiname&#8217;,jndiname<br \/>\nprint &#8216;datasourceTargets&#8217;,datasourceTargets<\/p>\n<p>print &#8216;Creating DataSource: &#8216;,dsName,&#8217; &#8230;.&#8217;<br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\nmyResourceName = dsName \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\njdbcSystemResource = create(myResourceName,&#8221;JDBCSystemResource&#8221;)<br \/>\nmyFile = jdbcSystemResource.getDescriptorFileName()<br \/>\njdbcResource = jdbcSystemResource.getJDBCResource()<br \/>\njdbcResource.setName(myResourceName) \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p># Create the DataSource Params<br \/>\ndpBean = jdbcResource.getJDBCDataSourceParams()<br \/>\nmyName=jndiname<br \/>\ndpBean.setJNDINames([myName])<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\ndpBean.setGlobalTransactionsProtocol(&#8216;TwoPhaseCommit&#8217;)<\/p>\n<p># Create the Driver Params<br \/>\ndrBean = jdbcResource.getJDBCDriverParams()<br \/>\ndrBean.setPassword(dsPassword)<br \/>\ndrBean.setUrl(dsURL)<br \/>\ndrBean.setDriverName(dsDriverName)<\/p>\n<p>#Create the Oracle params<br \/>\norapr=jdbcResource.getJDBCOracleParams()<br \/>\norapr.setFanEnabled(true)<br \/>\norapr.setOnsNodeList(&#8216;node1:6200,node2:6200&#8217;)<br \/>\npropBean = drBean.getProperties()<br \/>\ndriverProps = Properties()<br \/>\ndriverProps.setProperty(&#8220;user&#8221;,dsUserName)<br \/>\ne = driverProps.propertyNames()<br \/>\nwhile e.hasMoreElements() : \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span>\u00a0 propName = e.nextElement() \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span>\u00a0 myBean = propBean.createProperty(propName)<br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span>\u00a0 myBean.setValue(driverProps.getProperty(propName)) \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\n# Create the ConnectionPool Params<br \/>\nppBean = jdbcResource.getJDBCConnectionPoolParams()<br \/>\nppBean.setInitialCapacity(int(initCapacity))<br \/>\nppBean.setMaxCapacity(int(maxCapacity))<br \/>\nppBean.setTestConnectionsOnReserve(true)<br \/>\nppBean.setTestTableName(&#8216;SQL SELECT 1 FROM DUAL&#8217;)<\/p>\n<p>xaParams = jdbcResource.getJDBCXAParams()<br \/>\nxaParams.setKeepXaConnTillTxComplete(1) \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p># Add Target<br \/>\nfor datasourceTarget in datasourceTargets:<br \/>\nprint &#8216;DataSourceTargets&#8217;,datasourceTargets<br \/>\nprint &#8216;DataSourceTarget&#8217;,datasourceTarget<br \/>\nif datasourceTarget==&#8221;:<br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span>\u00a0 print &#8221;<br \/>\nelse:<br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span>\u00a0 jdbcSystemResource.addTarget(getMBean(datasourceTarget)) \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span> <span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\n<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>print &#8216;DataSource: &#8216;,dsName,&#8217;, has been created Successfully !!!&#8217;<br \/>\nprint &#8216;=========================================&#8217;<\/p>\n<p>save()<br \/>\nactivate() \u00a0<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\n<p>def main():<br \/>\npropInputStream1 = FileInputStream(&#8220;GridLinkDataSource.properties&#8221;)<br \/>\nconfigProps = util.Properties()<br \/>\nconfigProps.load(propInputStream1)<\/p>\n<p>adminURL=&#8217;t3:\/\/&#8217;+configProps.get(&#8216;domain.AdminIP&#8217;)+&#8217;:&#8217;+configProps.get(&#8216;domain.AdminPort&#8217;)<br \/>\nadminUserName=&#8217;weblogic&#8217;<br \/>\nadminPassword=configProps.get(&#8220;domain.AdminPasswd&#8221;)<br \/>\nconnect(adminUserName, adminPassword, adminURL)<\/p>\n<p>createGridLinkJDBCResources(configProps);<\/p>\n<p>print &#8216;Successfully created JDBC resources for SOACoreDomain&#8217;<\/p>\n<p>disconnect()<\/p>\n<p><span class=\"Apple-converted-space\">\u00a0<\/span><br \/>\nmain()<\/p>\n<p>Change the values accordingly in the property file and execute the \u00a0$WLSHOME\/common\/bin\/wlst.sh GridLinkDatasourceCreation.py<\/p><\/div>\n<div dir=\"ltr\"><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-14.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4655\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-14.jpg\" alt=\"weblogicssrrerew-14\" width=\"807\" height=\"418\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-14.jpg 807w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-14-300x155.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-14-150x78.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-14-400x207.jpg 400w\" sizes=\"(max-width: 807px) 100vw, 807px\" \/><\/a><\/div>\n<div dir=\"ltr\"><\/div>\n<div dir=\"ltr\">After the successful execution of the script login to console and verify the Gridlink datasource created.<\/div>\n<div dir=\"ltr\"><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-15.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4656\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-15.jpg\" alt=\"weblogicssrrerew-15\" width=\"715\" height=\"521\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-15.jpg 715w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-15-300x219.jpg 300w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-15-150x109.jpg 150w, https:\/\/mohan.sg\/wp-content\/uploads\/2015\/04\/weblogicssrrerew-15-400x291.jpg 400w\" sizes=\"(max-width: 715px) 100vw, 715px\" \/><\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Oracle Real Application Clusters (RAC) is a software component you can add to a high-availability solution that enables users on multiple machines to access a single database with increased performance. RAC comprises two or more Oracle database instances running on two or more clustered machines and accessing a shared storage device via cluster technology.<\/p>\n<\/p>\n<p> [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[56],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/4646"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4646"}],"version-history":[{"count":4,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/4646\/revisions"}],"predecessor-version":[{"id":4657,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/4646\/revisions\/4657"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4646"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4646"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4646"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}