Post

How to Update OSB Data Source Connections

If you create a WebLogic domain for Oracle Service Bus, it will ask you to create database schemas using the Repository Creation Utility or RCU. The OSB WebLogic domain will require connectivity to these database schemas to start up successfully.

So if there comes a chance that the customer decides to migrate their database to another server, that would mean you have to update the data sources defined within the OSB WebLogic domain. You can change these from the XML files within the $DOMAIN_HOME/config/jdbc folder, but that’s something we can automate via WLST. In this post I am going to share a simple set of work instructions to do just that - how to update OSB data source connections in the event of database server migrations via WLST.

In this scenario, the OSB WebLogic 12.1.3 domain uses GridLink connections, so it’s important to get two pieces of information:

  • The new JDBC connection string
  • The new ONS nodes

Once you have these, you can update the script below:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Convert existing Generic Datasources to Active Grid Link
if __name__ == '__main__': 
    from wlstModule import *#@UnusedWildImport
    
def updateDataSource(datasource, jdbcURL, nodes):
    print 'Processing ' + datasource
    # Remove DataSource Targets
    edit()
    startEdit()
    
    
    jdbcDS = getMBean('/JDBCSystemResources/' + datasource)
    dsTargets = jdbcDS.getTargets()
    jdbcDS.setTargets(jarray.array([], weblogic.management.configuration.TargetMBean))
    
    save()
    activate(block="true")
    
    startEdit()
    
    # Update the JDBC Connection String
    jdbcDS = getMBean('/JDBCSystemResources/' + datasource)
    jdbcDriverParams = jdbcDS.getJDBCResource().getJDBCDriverParams()
    
    jdbcDriverParams.setUrl(jdbcURL)
    
    # Set ONS Nodes
    jdbcOracleParams = jdbcDS.getJDBCResource().getJDBCOracleParams()
    jdbcOracleParams.setOnsNodeList(nodes)
        
    save()
    activate(block="true")
    
    startEdit()
    
    # Re-target the datasource
    jdbcDS = getMBean('/JDBCSystemResources/' + datasource)
    jdbcDS.setTargets(dsTargets)
    
    save()
    activate(block="true")

print 'starting the script ....'

username = 'weblogic'
password = 'welcome123'
url='t3://osb-admin-host:7001'

osb_jdbcURL = 'jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=db-scan-address.host.example.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCLDB)))'
nodes = 'db-scan-address.host.example.com:6200'

connect(username,password,url)

updateDataSource('LocalSvcTblDataSource', osb_jdbcURL, nodes)
updateDataSource('mds-owsm', osb_jdbcURL, nodes)
updateDataSource('opss-audit-DBDS', osb_jdbcURL, nodes)
updateDataSource('opss-audit-viewDS', osb_jdbcURL, nodes)
updateDataSource('opss-data-source', osb_jdbcURL, nodes)
updateDataSource('OraSDPMDataSource', osb_jdbcURL, nodes)
updateDataSource('SOADataSource', osb_jdbcURL, nodes)
updateDataSource('SOALocalTxDataSource', osb_jdbcURL, nodes)
updateDataSource('wlsbjmsrpDataSource', osb_jdbcURL, nodes)

Here is the work instruction that you can follow to update the data source connection strings of your OSB WebLogic domain:

Create a backup of the JDBC Configuration. We will back up the jdbc folder inside the WebLogic domain i.e. $DOMAIN_HOME/config/jdbc.

1
cp -r $DOMAIN_HOME/config/jdbc $DOMAIN_HOME/config/jdbc-backup

Create a backup of the fmwconfig folder. Create a backup of the $DOMAIN_HOME/config/fmwconfig folder.

1
cp -r $DOMAIN_HOME/config/fmwconfig $DOMAIN_HOME/config/fmwconfig-backup

Shutdown the OSB managed servers.

Run the updateOSB_DS.py

1
$MW_HOME/oracle_common/common/bin/wlst.sh updateOSB_DS.py

Modify the following JPS configuration files under $DOMAIN_HOME/config/fmwconfig - replace the OLD JDBC connection string:

  • jps-config-jse.xml
  • jps-config.xml

Start OSB Managed Servers

That’s it! The OSB Managed Servers should be running and all deployments should be running or active.

This post is licensed under CC BY 4.0 by the author.