This Blog is discontinued, its only read-only

Saturday, December 19, 2015

Enterprise Manager 13c Presentations on Oracle Technology Network

As everybody already know that the latest version of Oracle Enterprise Manager 13c (13.1.0.0) has been released yesterday (see also my post from 18th December 2015), Oracle has uploaded several interesting presentations around the new Oracle Enterprise Manager 13c.

The presentations are covering various topics around the Oracle Enterprise Manager 13c (some presentations are also still covering Enterprise Manager 12c):

  • General
  • Cloud Management
  • Middleware Management
  • Database Management
  • Installation & Upgrade | Best Practices
  • and so on ...


The presentations can be found under: http://www.oracle.com/technetwork/oem/downloads/em-oow2015-2789798.html





Friday, December 18, 2015

Oracle Enterprise Manager 13c available

Seems its early Christmas :-) the new release of the Oracle Enterprise Manager 13c (13.1.0.0) is available for download in the Oracle Technology Network http://www.oracle.com/technetwork/oem/enterprise-manager/downloads/index.html



The new Oracle Enterprise Manager 13c is available for:


  • Linux x86-64
  • Windows x86-64
  • Solaris (SPARC)
  • Solaris (x86-64)
  • IBM AIX on POWER Systems
  • HP-UX Itanium


Happy download :-)

Oracle Enterprise Manager 13c - First Video on Oracle Learning Library YouTube Channel

I just discovered that since today (18th December 2015) is a first Oracle Learning Library video for the Oracle Enterprise Manager 13c (!!!!!) available.




Enjoy watching it :-)

Friday, December 11, 2015

WebLogic 12.2.1 - Redeployment of versioned applications via RESTful Management Services

With the latest release of Oracle WebLogic Server 12.2.1 came quite a lot of enhancements for the RESTful Management Services. The enhancements are really impressive, you are able to monitor (GET) or to modify (POST) your WebLogic environment in detail with a simple URL call either via Browser or via Command Line Tools like cURL. The response time for such REST calls are really impressive compared to the classical way with WLST scripts :-)

For more details about RESTful Management Services you may have a look into the Official Oracle Documentation: http://docs.oracle.com/middleware/1221/wls/WLRUR/index.html

Within this post, I will show how to deploy a versioned application via a simple REST call over cURL. As base for this example you should have a look on the Oracle Learning Library Example "Oracle WebLogic Server 12c (12.2.1): Configure and Using Production Redeployment". Within this Oracle Learning Library Example you can see the classical way of deploying a versioned application. The below used versioned application is coming from this Oracle Learning Library Example, the versioned applications you can download from the before mentioned URL.

Since Oracle WebLogic Server 12.2.1 you will have a lot more possibilities within the RESTful Management Services, for example: creating Managed Servers, creating Data Sources, modifying WebLogic Server settings, deploying applications and so on.

As preparation I have downloaded the versioned.zip file from the Oracle Learning Library example, transferred it to my server on which my WebLogic Server 12.2.1 is running.

First step unzip the versioned.zip file to any directory of your server, make sure that your Oracle WebLogic Server is up and running and specially that the Managed Server to which you want to deploy the versioned application is up and running.

Second step, I simply created two shell scripts to deploy my 2 versioned applications.

Replace within the below provided script for the first deployment just the password for the weblogic user, in my case Oracle12. Align the provided deploymentPath to your path, align the provided Managed Server Name under targets and align the hostname and AdminServer port provided in the last line of the below script:

Script name: deploy_app_v1.sh

#!/bin/ksh
# Script for deployment of version 1
curl -v --user weblogic:Oracle12c \
     -H X-Requested-By:MyClient \
     -H Accept:application/json \
     -H Content-Type:application/json \
     -d "{
          name: 'simple',
          deploymentPath: '/home/oracle/versioned_app/deployversion1/simple.war',
          targets: [ManagedServer1]
         }" \
     -X POST http://wls1221:7001/management/wls/latest/deployments/application

Replace within the below provided script for the second deployment just the password for the weblogic user, in my case Oracle12. Align the provided deploymentPath to your path, align the provided Managed Server Name under targets and align the hostname and AdminServer port provided in the last line of the below script:

Script name: deploy_app_v2.sh

#!/bin/ksh
# Script for deployment of version 2
curl -v --user weblogic:Oracle12c \
     -H X-Requested-By:MyClient \
     -H Accept:application/json \
     -H Content-Type:application/json \
     -d "{
          name: 'simple',
          deploymentPath: '/home/oracle/versioned_app/deployversion2/simple.war',
          targets: [ManagedServer1]
         }" \
     -X POST http://wls1221:7001/management/wls/latest/deployments/application


Now lets start with the first deployment:
[oracle@wls1221]# ./deploy_app_v1.sh

* About to connect() to wls1221 port 7001 (#0)
*   Trying 192.168.56.10...
* Connected to wls1221 (192.168.56.10) port 7001 (#0)
* Server auth using Basic with user 'weblogic'
> POST /management/wls/latest/deployments/application HTTP/1.1
> Authorization: Basic d2VibG9naWM6T3JhY2xlMTJj
> User-Agent: curl/7.29.0
> Host: wls1221:7001
> X-Requested-By:MyClient
> Accept:application/json
> Content-Type:application/json
> Content-Length: 156
> 
* upload completely sent off: 156 out of 156 bytes
< HTTP/1.1 201 Created
< Date: Fri, 11 Dec 2015 10:37:07 GMT
< Location: http://wls1221:7001/management/wls/latest/deployments/application/id/simple
< Content-Length: 794
< Content-Type: application/json
< X-ORACLE-DMS-ECID: 0681dbbd-5c8c-47c3-bf72-2c795675d5b4-0000001a
< X-ORACLE-DMS-RID: 0
< Set-Cookie: JSESSIONID=XMaQnZ6WaiRtdYIelakH-cFG0PHNKdWdp84MMS5ryxHr1xWLUGc6!-693988513; path=/; HttpOnly
< 
{
    "item": {
        "targets": [{
            "status": "completed",
            "errors": [],
            "name": "ManagedServer1",
            "type": "server"
        }],
        "beginTime": 1449830228082,
        "endTime": 1449830234153,
        "status": "completed",
        "deploymentName": "simple",
        "description": "[Deployer:149026]deploy application simple [Version=v1] on ManagedServer1.",
        "operation": "deploy",
        "name": "ADTR-0",
        "id": "0",
        "type": "deployment"
    },
    "messages": [{
        "message": "Deployed the application 'simple'.",
        "severity": "SUCCESS"
    }],
    "links": [{
        "rel": "job",
        "uri": "http:\/\/wls1221:7001\/management\/wls\/latest\/jobs\/deployment\/id\/0"
    }]
* Connection #0 to host wls1221 left intact


Now lets open a browser and access the newly deployed application, in my case http://wls1221:7003/simple (as my target Managed Server is listening on port 7003). You should see a simple website in a blue color scheme. Type in your First Name, Last Name and Favorite Color and press "OK"


Keep the browser open and now we perform the Production Redeployment of the version 2 of our application via RESTful Management Services.


[oracle@wls1221]# ./deploy_app_v2.sh

* About to connect() to wls1221 port 7001 (#0)
*   Trying 192.168.56.10...
* Connected to wls1221 (192.168.56.10) port 7001 (#0)
* Server auth using Basic with user 'weblogic'
> POST /management/wls/latest/deployments/application HTTP/1.1
> Authorization: Basic d2VibG9naWM6T3JhY2xlMTJj
> User-Agent: curl/7.29.0
> Host: wls1221:7001
> X-Requested-By:MyClient
> Accept:application/json
> Content-Type:application/json
> Content-Length: 156
> 
* upload completely sent off: 156 out of 156 bytes
< HTTP/1.1 201 Created
< Date: Fri, 11 Dec 2015 10:37:56 GMT
< Location: http://wls1221:7001/management/wls/latest/deployments/application/id/simple
< Content-Length: 794
< Content-Type: application/json
< X-ORACLE-DMS-ECID: 0681dbbd-5c8c-47c3-bf72-2c795675d5b4-0000001c
< X-ORACLE-DMS-RID: 0
< Set-Cookie: JSESSIONID=2fCQnl74wd1Ps9WDNmfv7eTjnh3yyGnNV6eyYOnbXJHMPO1IQmDn!-693988513; path=/; HttpOnly
< 
{
    "item": {
        "targets": [{
            "status": "completed",
            "errors": [],
            "name": "ManagedServer1",
            "type": "server"
        }],
        "beginTime": 1449830276956,
        "endTime": 1449830282690,
        "status": "completed",
        "deploymentName": "simple",
        "description": "[Deployer:149026]deploy application simple [Version=v2] on ManagedServer1.",
        "operation": "deploy",
        "name": "ADTR-1",
        "id": "1",
        "type": "deployment"
    },
    "messages": [{
        "message": "Deployed the application 'simple'.",
        "severity": "SUCCESS"
    }],
    "links": [{
        "rel": "job",
        "uri": "http:\/\/wls1221:7001\/management\/wls\/latest\/jobs\/deployment\/id\/1"
    }]
* Connection #0 to host wls1221 left intact


Now open a second browser and access once again the URL of the application http://wls1221:7003/simple and now you should see a website with a green color scheme, which is the second version of the application. Type in once again your data and click "OK"



If you now go back to your first browser (with the blue color scheme), click now the link "Start over ..." and you should be able still to use the version 1 of the application as your HTTP Session object is still valid.


When we look now into the Oracle WebLogic Server Console under "Deployments" you should see the 2 versioned applications as following:


So, Production Redeployment of versioned applications via the new enhancements of the RESTful Management Services is possible and really simple.

RESTful Management is the future within Oracle Products ... see for example the latest release of Oracle Golden Gate, even within this product you have now a RESTful API connectivity for monitoring and diagnosing ... http://docs.oracle.com/goldengate/c1221/gg-winux/GRLWU/toc.htm#GRLWU102

These metrics are recorded in a RESTful API for use in diagnosing issues by Oracle GoldenGate Support and Development. These metrics can be used to improve CPU efficiency thus reducing load on source and target databases.


My advice / recommendation:
 have a closer look to the new enhancements of the RESTful Management Services, you have a whole new world of possibilities to refactoring your old monitoring and deployment script based on WLST, even start / shutdown / suspend / resume operations against your WebLogic Servers are possible with the new enhancements of RESTful Management Services.

Thursday, December 10, 2015

WebLogic 12.2.1 - New Feature for Data Source System Properties

Within the new release of Oracle WebLogic Server 12.2.1 is a really cool new feature for Data Source System Properties.

In case you have mutliple data sources defined within your Oracle WebLogic Server pointing to the same Oracle Database and mostly using the same Oracle Database user, you have currently limited chances to identify in your v$session, which session belongs to which WebLogic Server Data Source.

For example, you have 2 Data Sources defined in your WebLogic Server, each Data Source is assigned to different Managed Servers within your WebLogic Domain and using the same Oracle User, so you normally see following:

select username, osuser, process, machine, terminal, program
from v$session where username = 'WLS_REPOS';
USERNAME    OSUSER    PROCESS    MACHINE       TERMINAL   PROGRAM
---------   --------  --------   -----------   ---------  ------------------
WLS_REPOS   oracle    1234       wls1221       unknown    JDBC Thin Client
WLS_REPOS   oracle    1234       wls1221       unknown    JDBC Thin Client
WLS_REPOS   oracle    1234       wls1221       unknown    JDBC Thin Client

You just see under the column program "JDBC Thin Client", but you don't see which defined Data Source is behind your connection in the Oracle Database :-(

Since Oracle WebLogic Server 12.2.1 you have now the possibilty to push a defined set of variables from your Data Source definition into the v$session.

Variable Description
${pid} First part (up to @) of ManagementFactory.getRuntimeMXBean().getName()
${machine} Second part of ManagementFactory.getRuntimeMXBean().getName()
${user.name} Java system property user.anem
${os.name} System property os.name
${datasourcename} Name of your Data Source
${partition} Name of your Partition
${serverport} Listen Port of your WebLogic Server
${serversslport} SSL Listen Port of your WebLogic Server
${servername} Name of your WebLogic Server
${domainname} Name of your WebLogic Domain

With the above list of defined variables you have a wide range of possibilties to populate them into your v$session.

Snippet of your <datasource_name>-<internal_number>-jdbc.xml Configuration File


  user
  WLS_REPOS


  v$session.osuser
  ${user.name}


  v$session.process
  ${pid}


  v$session.machine
  ${machine}


  v$session.terminal
  ${datasourcename}


  v$session.program
  WLS ${servername} @ ${domainname}

Or you can also modify your data source definition within the Oracle WebLogic Server Console under "Services / Data Sources", just select your Data Source and under "Configuration / Connection Pool" modify the "System Properties"


After saving and activating your changes, simply restart your Managed Server(s) which are the target(s) for your modified Data Sources.

You have to consider following limitations for the v$session columns:

v$session Column Length Limiations
osuser 30 characters
process 24 characters
machine 64 characters
terminal 30 characters
program 48 characters

With the above decribed changes on your Data Source definition, you are now able to identify easily your different Data Source connections into your Oracle Database :-)

select username, osuser, process, machine, terminal, program
from v$session where username = 'WLS_REPOS' order by 5;
USERNAME    OSUSER    PROCESS    MACHINE       TERMINAL   PROGRAM
---------   --------  --------   -----------   ---------  --------------------------------
WLS_REPOS   oracle    2959       wls1221       myDS       WLS ManagedServer1 @ base_domain
WLS_REPOS   oracle    2959       wls1221       myDS       WLS ManagedServer1 @ base_domain
WLS_REPOS   oracle    2959       wls1221       myTestDS   WLS ManagedServer2 @ base_domain