Thursday Mar 13, 2014

New Java Collections in Remote Diagnostic Agent (RDA) 8.03

What is RDA?

Not familiar with RDA (Remote Diagnostic Agent)? Learn more, take a look at :

Resolve Problems Faster! Use Remote Diagnostic Agent - Fusion Middleware and WebLogic Server [ID 1498376.1

RDA 8.03

RDA 8.03 was released on March 11th 2014. The download links can be found in the support document referenced above. Changes / fixes / enhancements in this version can be found in "RDA Release Notes [ID 414970.1]". In particular, there are new data collection profiles for:

  • Glassfish Server
  • Business Intelligence Applications
  • Oracle Identity Manager

And here are some other Fusion Middleware product highlights:

     Product  Enhancement
     WebLogic
    • Included Oracle Java Virtual Machine-related information
    • MBean configuration values collected even if WLST connection to Admin Server fails.
    Oracle Internet Directory
    • Added replication information
    • Added WebLogic process information
    • Added DIP profile configuration information
    SOA Suite
    • Extended MBean collections (via WLST)
    • Support finding of DB details from multiple data sources
    • Included version information
    Oracle Service Bus
    • Extended MBean collections (via WLST)

    New JVM Diagnostic Collections - WebLogic Server and Glassfish

    A significant addition to the WebLogic and Glassfish data collection set is the capture of JVM related information. RDA 8.03 does the following:

    • harvests JVM information from the log files
    • makes best efforts to find and collect garbage collection and JVM crash logs
    • identifies the JVM pid and leverages os (unix only) and JDK tools to capture diagnostic information such as heap summary, process map, address space and native thread stack.

    Screenshots of JVM Related Info collections in RDA

    Currently these new java collections are performed by RDA if run against a result set configuration created using the WebLogicServer or GlassFishServer profiles - example:

    Create a WebLogicServer profile result set configuration. In this example, we will use the '-s' to explicitly name the result set configuration rather than leave RDA to create the result set configuration using the default name - output.cfg

    rda.sh -S -s mywlscollection -p WebLogicServer

    Run the collection:

    rda.sh -s mywlscollection

    Instructions to view the output will be provided in the standard out after the collection is complete.

    Friday Feb 28, 2014

    Read all about it! March 2014 Edition of Middleware Support News

    March 2014 edition of "Oracle Fusion Middleware Support News" is published!

    Image of FMW Support News

    Oracle Fusion Middleware Support News : Current Edition - Volume 11 : March 2014 [ID 1347075.1]

    Highlights:

    • Reasons for upgrading to Oracle Forms 11g Release 2 …
    • Remote Diagnostic Agent Now Available in OPatch Format …
    • WebCenter Content Clustering and High Availability …
    • WebCenter Customer Advisory Board (CAB) Meetings in March and April, 2014 …
    • Critical Patch Update For Oracle Fusion Middleware - CPU January 2013 …
    • Oracle Fusion Middleware - Proactive Patching Corner …
    • Fusion Middleware Proactive Support Blogging …
    • And Finally ... New Look Support Communities! …

    Note: My Oracle Support login is required to view the Support News article.

    Tuesday Jan 21, 2014

    Critical Patch Update for Oracle Fusion Middleware - CPU January 2014

    The latest Critical Patch Update (CPU) has been released for Oracle products. Start your reading here

    Critical Patch Updates, Security Alerts and Third Party Bulletin 

    This is the home page containing links to all "Critical Patch Updates" released to date, along with sections detailing 

    • Security Alerts 
    • Third Party Bulletin
    • Public Vulnerabilities Fixed
    • Policies
    • Reporting Security Vulnerabilities

    On this page you will find the link to the

    Oracle Critical Patch Update Advisory - January 2014

    The advisory lists the support documents that cover the patch availability for all Oracle products. For Oracle Fusion Middleware, go to:

    Patch Set Update and Critical Patch Update January 2014 Availability Document [ID 1594621.1]

    If you are hit any unexpected errors when applying the CPU patches, check out the known issues documented in these two support documents.

    • Critical Patch Update January 2014 Oracle Fusion Middleware Known Issues  [ID 1594610.1]
    • Critical Patch Update January 2014 Database Known Issues [ID 1593192.1]

    And lastly, for an informal summary of what the Critical Patch Update fixes, check out the blog posts by "Oracle Software Security Assurance" team

    January 2014 Critical Patch Update Released

    Thursday Dec 19, 2013

    RDA not working due to Perl being unavailable or inaccessible?

    What is RDA?

    Not familiar with RDA (Remote Diagnostic Agent)? Learn more, take a look at :

    • Resolve Problems Faster! Use Remote Diagnostic Agent - Fusion Middleware [ID 1498376.1]

    The Perl Problem 

    RDA is written in perl. If RDA cannot find Perl 5.005 or above, you may see one of the following messages:

    Error: ORACLE_HOME is not set
    Please set your ORACLE_HOME.

    or 

    Error: Perl not found in the PATH or in known folder locations.
    Although the default RDA engine requires Perl, a compiled version without Perl requirements is available.
    Please download the platform-specific RDA engine from My Oracle Support and place it within the top folder of your RDA installation.

    To work around you can configure RDA to use a compiled binary engine. The compiled engine is available for most platforms and is shipped as part of the RDA / OCM bundle. Find the engine binary in "RDA_HOME/engine".

    Good news! RDA 8.02 auto-enables the compiled engine

    The recently released RDA 8.02 automatically enables the compiled engine should RDA determines Perl is not available, accessible or valid. If you are reading this blog, having experienced the messages above or other perl errors, the likelihood is that you are using an older version of RDA. Upgrade to 8.02 now to benefit from this enhancement and others!

    Earlier versions of RDA require the compiled engine to be manually enabled if RDA is not able to use Perl.  

    Reference: 
    How to Manually Enable the Remote Diagnostic Agent ( RDA ) Compiled Engine .. [ID 1603021.1]

    Using RDA 8.02 and the perl problem described above still reproduces? Check the following:

    1. Does "RDA_HOME/engine" contain a compiled engine binary (rda_<platform> e.g rda_linux) and a rda.cfg.

    • You may have downloaded RDA standalone rather than the RDA / OCM Bundle. Or, you are working on a platform for which no compiled engine is available.

    2. Does the os user have read / write privileges to:

    • the directory from which they are launching the RDA command script
    • the RDA_HOME/engine/rda.cfg 

    3. Are you able to manually enable the compiled engine as per the instructions given in  [ID 1603021.1]

    Monday Nov 18, 2013

    Fusion Middleware Error Correction Policy - Have You Got a Patch and Maintain Strategy?

    It is not uncommon to come across Fusion Middleware 11g product solutions which do not have the latest patch set applied. Example: a business has a SOA Suite 11.1.1.3 in production. The solution has been working fine for three years, and then new business requirements forces an application change. The change, unfortunately, breaks rather than enhances existing functionality. A Service Request is logged with My Oracle Support and the business receive the news that the problem is caused by a bug, a patch for which is available. "Good news!" But, it is a patch which can only be applied against the latest patch set. Furthermore, the fix will not be backported to 11.1.1.3. "Oh .. really .. why can't we get a fix for the patch set we are on? Lifetime Support Policy - Level: Premier Support - has not yet expired for 11g."

    The business has been blissfully unaware of the Server Technology Products Software Error Correction Policy.  This document describes the different types of patches which Oracle may release for products and the policies which surround them. It is particularly important, however, to read the product line specific advice found in the Appendix. To part quote, the advice for Oracle Fusion Middleware:

    Grace Period: up to 1 year, minimum 3 months.

    You have up to one year from the initial release of the patch set to install the new patch set, and can receive new bug fixes for the previous patch set during that time ...

    For details (including links to documents containing error correction dates for specific products and patch sets), see

    Error Correction Support Dates for Oracle Fusion Middleware (10g/11g/WLS) (Doc ID 944866.1).

    In 944866.1, you will find a link to

    Error Correction Support Dates for Oracle Fusion Middleware 11g (11.1.1/11.1.2) (Doc ID 1290894.1)

    which shows that the error correction grace period for Fusion Middleware (which covers SOA) 11.1.1.3 ended in January 2012. This explains why, in our scenario above, the business will need to first apply the latest available patch set, followed by the interim patch in order to fix their issue.

    In conclusion, having a patch and maintain strategy is essential. Maintaining Fusion Middleware products at the latest major version and/or patch set release + updates has the following benefits:

    • Proactively applying the latest patch set and updates can avoid problems and therefore minimize downtime.
    • It can reduce the time taken to consume or obtain fixes for new issues.

    If you are using Oracle Fusion Middleware 11g, bookmark and regularly review:

    Information Center: Patching and Maintaining Oracle Fusion Middleware 11g (Doc ID 1341616.2)

    Screenshot of Information Center: Patching and Maintain Fusion Middleware 11g

    This Information Center contains links to knowledge articles which discuss the Error Correction policy and list Error Correction end dates. The Information Center is also a one stop shop for links to patch and patch set collateral:

    • Patch Set Release Announcements
    • Patch Set Updates (including Critical Patch Update) information
    • Patching Documentation 
    • And more ..

    Get proactive, know your error correction end dates and put in a place a strategy to keep your product up to date with the latest patch set and updates.

    Thursday Oct 31, 2013

    Critical Patch Update for Oracle Fusion Middleware - CPU October 2013

    The latest Critical Patch Update (CPU) has been released for Oracle products. Start your reading here

    Critical Patch Updates, Security Alerts and Third Party Bulletin 

    This is the home page containing links to all "Critical Patch Updates" released to date, along with sections detailing 

    • Security Alerts 
    • Third Party Bulletin
    • Public Vulnerabilities Fixed
    • Policies
    • Reporting Security Vulnerabilities

    On this page you will find the link to the

    Oracle Critical Patch Update Advisory - October 2013

    The advisory lists the support documents that cover the patch availability for all Oracle products.

    For Oracle Fusion Middleware, go to:

    Patch Set Update and Critical Patch Update October 2013 Availability Document [ID 1571391.1]

    If you are hit any unexpected errors when applying the CPU patches, check out the known issues documented in these two support documents.

    • Critical Patch Update October 2013 Oracle Fusion Middleware Known Issues  [ID 1571369.1]
    • Critical Patch Update October 2013 Database Known Issues [ID 1571653.1]

    And lastly, for an informal summary of what the Critical Patch Update fixes, check out the blog posts by "Oracle Software Security Assurance" team

    October 2013 Critical Patch Update Released

    Monday Oct 07, 2013

    RDA 8.01 - Now A Better Experience for WebLogic Administrators

    What is RDA?

    Not familiar with RDA (Remote Diagnostic Agent)? Well I won't use this blog entry to provide a lesson, but if you want to learn more, take a look at these two support articles:

    • Get Proactive with Fusion Middleware : Resolve Problems Faster! Use Remote Diagnostic Agent [ID 1498376.1]
    • How to Run Remote Diagnostic Agent ( RDA ) Against Oracle WebLogic Server ( WLS ) [ID 1262157.1]

    Too many questions in set up

    "I have to answer too many questions at set up time!". The first of two criticisms leveled at a RDA collection which targeted a WebLogic Server based technology stack. Well I pleased to say that the number of questions of has been reduced.

    If, for example, you set up RDA using the "WebLogicServer" profile, you will encounter a set up dialogue similar to the one copied / pasted from a Weblogic 12c solution, on Unix, below.

    Tip: Work through the set up questions a little quicker by configuring your environment variables to point at your Middleware Home and location of your WebLogic domain prior to running RDA set up. Doing so, allows RDA to find default values for certain questions, which means you can just hit return and move on.

    # Setting the environment
    
    . /home/oracle/app/FMW12c_1212/config/user_projects/domains/my_domain/bin/setDomainEnv.sh
    ORACLE_HOME=/home/oracle/app/FMW12c_1212/oh; export ORACLE_HOME
    
    # Running RDA set up 
    
    cd /home/oracle/software/rda
    ./rda.sh -S -p WebLogicServer
     
    # Set up dialogue
    Enter the network domain name for this server
    > uk.acme.com
    
    Enter the Oracle home to be used for data analysis
    Hit "Return" to accept the default (/home/oracle/app/FMW12c_1212/oh)
    > 
    
    Enter the location of the directory where the domains to analyze are located
    (For example in UNIX, <BEA Home>/user_projects/domains or 
    <Middleware Home>/user_projects/domains)
    Hit "Return" to accept the default
    (/home/oracle/app/FMW12c_1212/config/user_projects/domains)
    > 
    For a successful WLS connection, ensure that the domain Admin Server is up 
    and running.
    
    Data Collection Type:
      1  Perform offline collection
      2  Perform online collection (using WLS connection)
    
    Enter the item number
    Hit "Return" to accept the default (2)
    > 
    
    Select a Oracle WebLogic Server domain home target list:
      1  Domain my_domain (in
         /home/oracle/app/FMW12c_1212/config/user_projects/domains)
    
      A  All Oracle WebLogic Server domain home targets
      D  Define a new Oracle WebLogic Server domain home target
      E  Edit an Oracle WebLogic Server domain home target
      N  No Oracle WebLogic Server domain home targets
     
    Enter your selection, as a comma-separated list of item numbers or ranges
    Hit "Return" to accept the default (1)
    > 
    
    Server list for 'my_domain' domain:
      1  AdminServer
      2  ms3
    Enter your selection, as a comma-separated list of item numbers or ranges
    Hit "Return" to accept the default (1-2)
    > 
    Are custom scripts used to start Oracle WebLogic servers (Y/N)?
    Hit "Return" to accept the default (N)
    >
    
    # The next prompt concerns OCM. You are not required to configure OCM. 
    # If time is short, just answer 'N'
    
    RDA benefits from Oracle Configuration Manager by improving its 
    data collection. Oracle Configuration Manager (OCM) collects the 
    configuration information and uploads it to the OCM Repository 
    in connected mode. When OCM is configured in disconnected mode, it 
    adds the OCM payload to the RDA report packages in future RDA runs.
    
    Pending Configurations in /home/oracle/app/FMW12c_1212/oh:
      MH_T0001  Middleware home /home/oracle/app/FMW12c_1212/oh
    
    Hit 'Return' to continue
    
    Do you want RDA to configure OCM now (Y/N)?
    Hit "Return" to accept the default (Y)
    > N
    
    
    # After answering the prompts set up will be complete. 
    # Now just launch the command line script (no parameters) 
    # to run the collection
    
    ./rda.sh 

    "Cannot see the wood for the trees" in the output

    This is the second of the criticisms. RDA does collects many files and metrics - this is one its strengths. Yet I think it is fair to say that the presentation of WebLogic Server data in the RDA Start Menu (generated as part of the output) lacked some order and structure. For example, server log files were somewhat buried, and similarly, unless you knew to scroll down to WLST collections, you could not easily ascertain the basic contents of a targeted Weblogic domain. In RDA 8.01, the sub menus for the WebLogic Domain and Servers have been re-ordered to address this concern. Review the screenshots below.

    Figure 1 : WebLogic Domain Sub Menu


    Note: In the Main Index, RDA will only list managed servers which have been targeted for collection. In this example, only AdminServer and ms3 were targeted for collection. Yet we can see from the Domain MBeans that the domain contains other managed servers and a cluster. 

    Figure 2 : MBean Drill Down Example - Admin Server State

    Figure 3: WebLogic Server Sub Menu


    To take advantage of these changes download the latest version of RDA. The download links can be found in

    Get Proactive with Fusion Middleware : Resolve Problems Faster! Use Remote Diagnostic Agent [ID 1498376.1]

    Monday Sep 16, 2013

    OOW 2013 - Sessions Focused on Support Services and Oracle Fusion Middleware


    Only a few days to go and Oracle OpenWorld 2013 will be upon us! Oracle Support and Services will be at Oracle OpenWorld in full force this year with 500 Services experts, 40+ sessions, a Support Stars Bar, a My Oracle Support Community Meet up, and demos of powerful new support tools. Learn best practices for maintaining Oracle Fusion Middleware, how to utilize Oracle Fusion Middleware products in a private cloud environment, tips for running Oracle Fusion Middleware in critical environments, and more. Go here a listing of Fusion Middleware specific sessions - for example:

    Conference Sessions

    Best Practices for a Private Cloud with Oracle Fusion Middleware

    Running Oracle Fusion Middleware in Critical Environments: Tips from SWIFT

    Best Practices for Maintaining Oracle Fusion Middleware

    Demo

    Migration Tools and Resources for Oracle Fusion Middleware

    And more

    There is also a My Oracle Support Meet Up Event" on Monday, Sep 23 and do come visit the Support Stars Bar - Monday 23rd through to Wednesday 25th

    To all going, have an enjoyable OpenWorld 2013!

    Friday Sep 06, 2013

    Read all about it! Middleware Support News

    The September 2013 edition of Oracle Fusion Middleware Support News is now available - featuring:

    • Introducing Fusion Middleware 12c (12.1.2) Infrastructure
    • New to SOA 11g Adapters? Here's an overview
    • WebCenter 11.1.1.8 - Center of Mobile Engagement for Business
    • Get an Identity Management education in bitesize chunks!
    • + all the latest proactive patch and patch set release news

    Since the last time I blogged about the support news (June 2012), this My Oracle Support knowledge article has undergone a face lift. As well as looking a little more groovy, you can collapse / expand news articles to make for easier reading. Here's a screenshot.


    Find the Support News by navigating to the document below:

    Oracle Fusion Middleware Support News : Current Edition - Volume 9 : September 2013 (Document 1347075.1)

    Enjoy! 

    Thursday Jul 18, 2013

    Critical Patch Update for Oracle Fusion Middleware - CPU July 2013

    The latest Critical Patch Update (CPU) has been released for Oracle products. Start your reading here

    Critical Patch Updates, Security Alerts and Third Party Bulletin 

    This is the home page containing links to all "Critical Patch Updates" released to date, along with sections detailing 

    • Security Alerts 
    • Third Party Bulletin
    • Public Vulnerabilities Fixed
    • Policies
    • Reporting Security Vulnerabilities

    On this page you will find the link to the

    Oracle Critical Patch Update Advisory - July 2013

    The advisory lists the support documents that cover the patch availability for all Oracle products.

    For Oracle Fusion Middleware, go to:

    Patch Set Update and Critical Patch Update July 2013 Availability Document [ID 1548709.1]

    Highlights - WebLogic Server Patch Set Updates (PSU)

    • WebLogic Server - 12.1.1.0.5
    • WebLogic Server - 10.3.6.0.5

    July 2013 marks the end of CPU/PSU patches for Weblogic Server 10.3.5. Looking forward, we will see the final CPU patches for Weblogic Server 9.2.3.0 and 9.2.4.0 in October 2013

    If you are hit any unexpected errors when applying the CPU patches, check out the known issues documented in these two support documents.

    • Critical Patch Update July 2013 Oracle Fusion Middleware Known Issues  [ID 1548690.1]
    • Critical Patch Update July 2013 Database Known Issues [ID 1546428.1]

    And lastly, for an informal summary of what the Critical Patch Update fixes, check out the blog posts by "Oracle Software Security Assurance" team

    July 2013 Critical Patch Update Released

    Tuesday Jun 25, 2013

    Example WLST Script to Obtain JDBC and JTA MBean Values

    Introduction

    Following on from the blog entry "Get an Offline or Online WebLogic Domain Summary Using WLST!", I have had a request to create a smaller example which only collects a selection of JDBC (System Resource) and JTA configuration and runtime MBeans values. So, here it is.

    Download Sample Script

    You can grab the sample script by clicking here.

    Instructions to Run:

    1. After download, extract the zip to the machine hosting the WebLogic environment. You should have three directories along with a readme.txt

    • output
    • Sample_Output
    • scripts

    2. In the scripts directory, find the start wrapper script startWLSTJDBCSummarizer.sh (Unix) or startWLSTJDBCSummarizer.cmd (MS Windows). Open the appropriate file in an editor and change the environment variable settings to suit your system.

    Example - startWLSTDomainSummarizer.cmd

    set WL_HOME=D:\product\FMW11g\wlserver_10.3
    set DOMAIN_HOME=D:\product\FMW11g\user_projects\domains\MyDomain
    set WLST_OUTPUT_PATH=D:\WLSTDomainSummarizer\output\
    set WLST_OUTPUT_FILE=WLST_JDBC_Summary_Via_MBeans.html
    call "%WL_HOME%\common\bin\wlst.cmd" WLS_JDBC_Summary_Online.py

    Note: The WLST_OUTPUT_PATH directory value must have a trailing slash. If there is no trailing slash, the script will error and not continue. 

    3. Run the shell / command line wrapper script. It should launch WLST and kick off "WLS_JDBC_Summary_Online.py". This will hit you with some prompts e.g.

    Is your domain Admin Server up and running and do you have the connection details? (Y /N ):
    Y
    Enter connection URL to Admin Server e.g t3://mymachine.acme.com:7001 :
    t3://localhost:7001
    
    Enter weblogic username:
    weblogic
    Enter weblogic username password (function prompt 1):
    welcome1
    

    (Note: the value typed in for password will not be echoed back to the console).

    4. If the scripts run successfully, you should get a HTML summary in the specified output directory. See example screenshots below:

    Screenshot 1 - JDBC System Resource Tab Page

     Screenshot 2 - JTA Tab Page

    5. For the HTML to render correctly, ensure the .js and .css files provided (review the output directory created by the zip file extraction) are accessible. For example, to view the HTML locally (without using a web server), place the HTML output, jquery-ui.js, spry.js and wlstsummarizer.css in the same directory.

    Disclaimer

    This is a sample script. I have tested it against WebLogic Server 10.3.6 domains on MS Windows and Unix.  I cannot guarantee that the script will run error free or produce the expected output on your system. If you have any feedback add a comment to the blog. I will endeavour to fix any problems with my WLST code.

    Credits

    JQuery: http://jquery.com/
    Spry (Adobe) : https://github.com/adobe/Spry
    http://www.red-team-design.com/cool-headings-with-pseudo-elements

    Friday May 31, 2013

    How to Query Fusion Middleware Metadata Schemas Via JDBC

    Introduction

    You are dealing with a Fusion Middleware product, such as SOA, which uses Metadata Schemas, typically created in an Oracle Database via the Repository Creation Utility (RCU). As a Middleware administrator you would like to run a script which queries the schemas. However, the database resides on a different host from the Middleware Home, and there is no SQL*Plus or similar tool available. 

    The solution? Although Fusion Middleware products do not ship SQL*Plus, Weblogic Server does include JDBC drivers. This presents an opportunity to try out / brush up your java program coding skills.

    Example Solution

    Having recently dabbled in WLST to query Weblogic Domain MBeans - Get an Offline or Online WebLogic Domain Summary Using WLST! - I have written an example java program to tackle the problem outlined above. The program utilizes the standard Oracle JDBC driver to:

    • establish a connection to an Oracle Database (which can be remote from the machine hosting Weblogic)
    • attempts three queries listed below
    • renders the output in HTML. (I have reused the html / javascript techniques I employed for the WLST Domain Summarizer to present the results in a nice readable format.)

    Query ALL_USERS for owners / "prefixes" of Fusion Middleware schemas.

    SELECT USERNAME, CREATED
    FROM ALL_USERS
    WHERE USERNAME LIKE  '%_MDS'
    OR USERNAME LIKE '%_IAU'
    OR USERNAME LIKE '%_IAU_%'
    OR USERNAME LIKE '%_WLS'
    OR USERNAME LIKE '%_STB'
    OR USERNAME LIKE '%_UMS'
    OR USERNAME LIKE '%_UCSCC'
    OR USERNAME LIKE '%_OPSS' 
    OR USERNAME LIKE '%_SOAINFRA'
    ORDER BY 2

    Schema Version Registry Summary

    SELECT COMP_ID, COMP_NAME, VERSION, STATUS, UPGRADED
    FROM
    SCHEMA_VERSION_REGISTRY
    ORDER BY 1,2

    SOAINFRA - Cube Instance Summary

    SELECT COMPOSITE_NAME, COMPONENT_NAME, COMPONENTTYPE,
    (CASE WHEN STATE=1 THEN 'OPEN AND RUNNING'
    WHEN STATE=2 THEN 'OPEN AND SUSPENDED'
    WHEN STATE=3 THEN 'OPEN AND FAULTED' 
    WHEN STATE=4 THEN 'CLOSED AND PENDING'
    WHEN STATE=5 THEN 'CLOSED AND COMPLETED'
    WHEN STATE=6 THEN 'CLOSED AND FAULTED'
    WHEN STATE=7 THEN 'CLOSED AND CANCELLED'
    WHEN STATE=8 THEN 'CLOSED AND ABORTED'
    WHEN STATE=9 THEN 'CLOSED AND STALE'
    WHEN STATE=10 THEN 'NON-RECOVERABLE' ELSE STATE || ''  END) AS STATE,
    COUNT(*) AS NUM_OF_CUBE_INST
    FROM " + v_dbuser_soainfra + ".CUBE_INSTANCE
    GROUP BY COMPOSITE_NAME, COMPONENT_NAME, COMPONENTTYPE,STATE
    ORDER BY COUNT(*) DESC

    Download

    You can grab the zip package containing  the class, java source and example output by clicking here.

    Instructions

    1. After download, extract the zip.

    2. cd to the directory labelled "class"

    3. Edit the LaunchMetadataCollector.sh (Unix) or LaunchMetadataCollector.cmd (Windows) and change the environment variable setting - WL_HOME - to point at your Weblogic Server home.

    4. Then run the LaunchMetadataCollector wrapper script. This will prompt for database connection details e.g.

    >Enter the database hostname or ip address: mydbhost.acme.com
    >Enter the database port number: 1521
    >Enter the database sid: orcl
    >Enter the database username: system
    >Enter the password: 
    >Enter the password again: 
    [Optional] Enter the database user which owns the SOAINFRA schema: DEV

    5. If the program runs successfully you should see the result of the queries in an output file labelled MetadataCollectorOutput.html

    If you want to amend / adapt / enhance the program feel free to take a look at the java source file which is located in the "source" directory.

    Monday May 13, 2013

    My Take on Getting Started With WebLogic Scripting Tool (WLST)

    Introduction

    WebLogic Scripting Tool (WLST) has been a long established favourite for experienced WebLogic Server administrators. Over the past two / three weeks I have spent time getting to know WLST - and by getting to know I mean developing a script to produce a solution rather than randomly running three or four commands :-). For the final result of my efforts, see my previous blog entry

    Get an Offline or Online WebLogic Domain Summary Using WLST! 

    This is a short summary of the resources I used. 

    Initial reading and understanding

    If you are never encountered WLST, spend a few minutes reading:

    Oracle Fusion Middleware Administrator's Guide 11g Release 1 (11.1.1)
    3.5.1 Getting Started Using the Oracle WebLogic Scripting Tool (WLST)

    Oracle Fusion Middleware WebLogic Scripting Tool Command Reference 11g
    Overview of WLST Command Categories

    Unsurprisingly, you will also find yourself using the Command Reference as a look up for available commands, functionality and syntax.

    WLST Code Snippets and Examples

    (There are many more WLST postings (questions, examples, discussions) to be found on the web.)

    Jython

    WLST is based on the Java scripting interpreter, Jython and as such supports standard Jython features such as local variables, conditional variables, and flow-control statements. Therefore, to achieve something more interesting and exciting you must prepared to learn (by doing) a little Jython. Fortunately, the Jython documentation is comprehensive and provides some good examples:

    Use an editor which recognizes Jython / Python

    Jython (like it's "parent" language Python) is very sensitive to syntax errors. In particular, the language requires the use of indents when coding conditions (e.g IF statements) and loops. Attempt to write Jython using a plain text editor, and before long stress levels will rise. You can make life easier by using an editor which recognizes Jython. Editors like Oracle Eclipse ** and SCITE assist the developer by for example:

    • auto-formatting lines of code
    • color coding of syntax
    • providing option to show line numbers

    ** Eclipse requires the Python and Jython Interpreters to be configured. Instructions can be found here.

    My Oracle Support Documents

    And finally, if you have access to My Oracle Support, here are a few knowledge articles which provide some nice WLST examples:

    • How To Debug WLST Jython Scripts? [ID 1360744.1]
    • WLST sample script To Obtain Managed Server Status [ID 1373532.1]
    • WLST Script for monitoring and getting statistics of WebLogic JMS Destinations. [ID 1327086.1]
    • How to get JDBC and Connection Pool data from a WLST or shell script [ID 1453818.1]
    • How to Startup or Shutdown Multiple WebLogic Managed Servers With a WLST Script [ID 1383150.1]
    • How To Take Thread Dumps With WLST [ID 1274713.1]

    Tuesday May 07, 2013

    Get an Offline or Online WebLogic Domain Summary Using WLST!

    Introduction

    Further to blog entry "WLST Offline Script to Create Summary of WebLogic Domain", I have created a solution which extends the capability to collecting an online summary if a connection to the domain's Admin Server can be established.

    Search the web, and you will find many WLST examples which summarize managed server status and performance, JMS, JDBC and more. In this respect, my efforts are nothing new. However, I thought I would share as my scripts have the following "bells and whistles".

    1. If you are unable to connect to the domain's Admin Server, an offline summary of the domain will automatically be obtained

    2. The script renders the collected data in HTML, using some javascript to give the final result some interactive formatting for ease of reading. See screenshot snippet below:

    Screenshot : Snippet of WLST Summarizer HTML Output
    

    Screenshot showing WLST Summarizer HTML output

    3. If a managed server has a "FAILED" health state or there is 1 or more thread hogs in its JVM thread pool, three thread dumps will be captured (15 seconds apart).

    Download Sample Script

    You can grab the sample script by clicking here.

    Instructions to Run:

    1. After download, extract the zip to the machine hosting the WebLogic environment. You should have three directories along with a readme.txt

    • output
    • Sample_Output
    • scripts

    2. In the scripts directory, find the start wrapper script startWLSTDomainSummarizer.sh (Unix) or startWLSTDomainSummarizer.cmd (MS Windows). Open the appropriate file in an editor and change the environment variable settings to suit your system.

    Example - startWLSTDomainSummarizer.cmd

    set WL_HOME=D:\product\FMW11g\wlserver_10.3
    set DOMAIN_HOME=D:\product\FMW11g\user_projects\domains\MyDomain
    set WLST_OUTPUT_PATH=D:\WLSTDomainSummarizer\output\
    set WLST_OUTPUT_FILE=WLST_Domain_Summary_Via_MBeans.html
    
    call "%WL_HOME%\common\bin\wlst.cmd" StartDomainSummarizer.py

    Note: The WLST_OUTPUT_PATH directory value must have a trailing slash. If there is no trailing slash, the script will error and not continue. 

    3. Run the shell / command line wrapper script. It should launch WLST and kick off "StartDomainSummarizer.py". This initial python script will hit you with some prompts e.g.

    Is your domain Admin Server up and running and do you have the connection details? (Y /N ):
    Y
    Enter connection URL to Admin Server e.g t3://mymachine.acme.com:7001 :
    t3://localhost:7001
    
    Enter weblogic username:
    weblogic
    Enter weblogic username password (function prompt 1):
    welcome1
    

    (Note: the value typed in for password will not be echoed back to the console).

    Depending on your responses it will call "WLSDomainInfoOffline.py" or "WLSDomainInfoOnline.py". 

    4. If the scripts run successfully, you should get a HTML summary in the specified output directory. 

    5. For the HTML to render correctly, ensure the .js and .css files provided (review the output directory created by the zip file extraction) are accessible. For example, to view the HTML locally (without using a web server), place the HTML output, jquery-ui.js, spry.js and wlstsummarizer.css in the same directory.

    Disclaimer

    This is a sample script. I have tested it against WebLogic Server 10.3.6 domains on MS Windows and Unix.  I cannot guarantee that the script will run error free or produce the expected output on your system. If you have any feedback add a comment to the blog. I will endeavour to fix any problems with my WLST code.

    Credits

    JQuery: http://jquery.com/
    Spry (Adobe) : https://github.com/adobe/Spry
    http://www.red-team-design.com/cool-headings-with-pseudo-elements

    Friday Apr 19, 2013

    WLST Offline Script to Create Summary of WebLogic Domain

    Introduction

    I have always believed it is important to find out the bigger picture early on in a problem investigation. For example, if a managed server is exhibiting problematic behaviour, as well as I looking at the logs, I like to know the context - for example:

    • Is the server part of a cluster?
    • How many servers / clusters are in the Weblogic Domain?
    • Is the domain spread across multiple machines?
    • Are System Resources such JDBC and JMS in play?

    Weblogic Server scripting ( WLST ) has been around for many years. Consequently there are a large number of examples to be found in blogs, websites and forums. The vast majority assume you can run the script in online mode. What if, however, a WLST online connection cannot be established? Ok, sure we can manually peruse the DOMAIN_HOME/config/config.xml. It is not a friendly a solution partly because some of the configuration is held in other xml files referenced by the config.xml. There has to be another way, I thought, after all WebLogic Server holds domain configuration in MBeans. This got me thinking about WLST.


    WLST's readDomain Function

    We can use WLST's readDomain function, in offline mode, to load the domain MBean configuration hierarchy / tree. It is as simple this:

    Example: Unix Machine:

    WL_HOME=/oracle/middleware/wlserver_10.3
    DOMAIN_HOME=/oracle/middleware/user_projects/domains/MyDomain
    $WL_HOME/common/bin/wlst.sh
    wls:/offline/readDomain('/oracle/middleware/user_projects/domains/MyDomain')

    Now you are ready to navigate the "tree" using "cd" and "ls" style syntax

    wls:/offline/MyDomain/ls()

    drw-   AnyMachine
    drw-   AppDeployment
    drw-   Cluster
    drw-   EmbeddedLDAP
    drw-   FileStore
    drw-   JDBCSystemResource
    drw-   JMSServer
    drw-   JMSSystemResource
    drw-   Library
    drw-   MigratableTarget
    drw-   Security
    drw-   SecurityConfiguration
    drw-   Server
    drw-   ShutdownClass
    drw-   StartupClass
    drw-   WLDFSystemResource
    -rw-   Active                                        false
    -rw-   AdminServerName                               AdminServer
    -rw-   AdministrationMBeanAuditingEnabled            false
    -rw-   AdministrationPort                            9002
    .... etc
    wls:/offline/MyDomain/cd ('Server')
    wls:/offline/MyDomain/Server/ls()
    
    drw-   AdminServer
    drw-   MyManagedServer
    drw-   MyManagedServer01
    
    wls:/offline/MyDomain/Server/cd ('MyManagedServer')
    wls:/offline/MyDomain/Server/MyManagedServer/ls()
    drw-   DataSource
    drw-   NetworkAccessPoint
    drw-   SSL
    drw-   ServerDiagnosticConfig
    
    -rw-   AcceptBacklog                                 300
    -rw-   AdminReconnectIntervalSeconds                 10
    -rw-   AdministrationPort                            0
    -rw-   AdministrationPortEnabled                     false
    -rw-   AdministrationProtocol                        null
    ...
    -rw-   JavaCompilerPostClassPath                     null
    -rw-   JavaCompilerPreClassPath                      null
    -rw-   JavaStandardTrustKeyStorePassPhraseEncrypted  null
    -rw-   JdbcLoginTimeoutSeconds                       0
    -rw-   KeyStores                                     null
    -rw-   ListenAddress                                 127.0.0.1
    -rw-   ListenDelaySecs                               0
    -rw-   ListenPort                                    7021
    -rw-   ListenPortEnabled                             true
    
    ... etc
    
    wls:/offline/MyDomain/Server/MyManagedServer/foo = get('ListenPort')
    wls:/offline/MyDomain/Server/MyManagedServer/print foo
    

    7021
    

     

    Sample Script and Output

    To write a script, which automates the capture and print out of attributes useful to a summary, is challenging because the functions to traverse and search the MBean tree are limited compared to online mode. You are pretty much stuck with the cd(), ls() and get(). However, with a bit of coding creativity with IF and FOR loop syntax you can programmatically explore the tree and return output in a nice format - in my sample I have chosen HTML tables.

    Sample Output

    To view sample output, go here

    Screenshot below shows snipper of sample output.


    Download Sample Script

    You can grab the sample script by clicking here.

    Instructions to Run:

    1. Edit the environment variables in the start wrapper script startWLSofflineCollection.sh (Unix) or startWLSofflineCollection.cmd (MS Windows) to suit your system

    Example - startWLSofflineCollection.sh

    WL_HOME=/oracle/middleware/wlserver_10.3
    DOMAIN_HOME=/oracle/middleware/user_projects/domains/MyDomain; export DOMAIN_HOME
    WLST_OUTPUT_PATH=/temp/wlst/; export WLST_OUTPUT_PATH
    WLST_OUTPUT_FILE=WLST_MBean_Config_Summary.html; export WLST_OUTPUT_FILE
    ${WL_HOME}/common/bin/wlst.sh CollectWLSConfigOffline.py

    Note: The WLST_OUTPUT_PATH directory value must have a trailing slash. If there is no trailing slash script will error and not continue.

    2. Then run the wrapper script. It should launch WLST and run the script. The script will collect MBean values and render them in a HTML file.
    (Once the script has invoked the WLST shell, the execution of the python script should not take longer than 5 to 10 seconds.)

    Disclaimer

    This is a sample script. I have tested it against WebLogic Server 10.3.6 domains on MS Windows and Unix.  I cannot guarantee that the script will run error free or produce the expected output on your system. That said, a number of colleagues have also run the script and with their feedback I have ironed out a few problems. If you have any feedback add a comment to the blog. I will endeavour to fix any problems with my WLST code. 

    Credits

    I found the following blogs particularly useful.

    Java / Oracle SOA blog
    [http://biemond.blogspot.co.uk/2010/02/invoking-fmw-application-mbeans-in.html]

    WLST By Examples
    [http://wlstbyexamples.blogspot.co.uk/]


    Some Pitfalls (which required coding around)

    Checking whether Configuration MBean Hierarchy Exists

    If a service or functionality, such as Clusters, JDBC, JMS, Filestore are not configured, the related MBean hierarchy will not be visible when listing at domain level. Example: If Cluster, JDBC, JMS and Filestore have not been configured, the ls() will show:

    wls:/offline/MyDomain/ls()

    drw-   AnyMachine
    drw-   AppDeployment
    drw-   EmbeddedLDAP
    drw-   Library
    drw-   MigratableTarget
    drw-   Security
    drw-   SecurityConfiguration
    drw-   Server
    drw-   ShutdownClass
    drw-   StartupClass
    drw-   WLDFSystemResource

    A programmatic attempt to cd to a directory not listed will return an error e.g.

    Error: cd() failed. Do dumpStack() to see details.
    

    To work-around, the script contains a custom findMBean function. The function places the contents of the ls() in an array using the returnmap parameter. We can then loop through the array and check whether a given string - the MBean directory name exists e.g.

    def findMBean(v_pattern):
            # get a listing of everything in the current directory
        mydirs = ls(returnMap='true');

            v_compile_pattern = java.util.regex.Pattern.compile(v_pattern);

        found = 'Nope not here';

        for mydir in mydirs:
            x = java.lang.String(mydir);
            v_matched = v_compile_pattern.matcher(x);
            if v_matched.find():
                found = 'true';

            return found;

    AnyMachine v Machines

    In WebLogic Server 10.3, if a domain has one or more machines configured (i.e nodemanager related machines) the ls() at domain level will show

    wls:/offline/MyDomain/ls()

    drw-   AnyMachine

    A cd ('AnyMachine'), however, will fail. The correct cd syntax is

    wls:/offline/MyDomain/cd ('Machines')

    Identifying Target Information

    Features such as JDBC System Resources, Clusters may or may not have targets. An attempt to cd to an MBean directory or get an MBean attribute which does not exist will throw an error and prevent the script from continuing. To work-around we can use TRY / EXCEPT syntax. Example - snippet from sample script which deals with the capture of JDBC System Resource targets.

    try:
                v_any_targets = '';
                v_jdbc_target = get('Target');

                # Even if the get fails, the variable is assigned a value of none, set the flag variable accordingly
                if v_jdbc_target == 'None':
                    v_any_targets = 'None';
                    v_no_of_targets = 1;
                else:   
                    # If the get has succeeded then set flag accordingly and obtain length of array returned by the get
                    # The array length will be used to determine the HTML rowspan value

                    v_any_targets ='Use v_jdbc_target';
                    v_no_of_targets = len(v_jdbc_target);

            except:

                # Setting flag and rowspan variable here as well .. belt and braces
                v_any_targets = 'None';
                v_no_of_targets = 1;

                # The exception will still display to standard out, which may cause alarm
                # So adding this message telling the user the exception is expected and can be ignored
                print "IGNORE this exception";   

    About

    This is the blog of the Oracle Fusion Middleware Proactive Support Delivery Team. Here we will provide information about our activities, publications, product related information and more. Feedback welcome.

    Follow OracleMWSupport on Twitter

    Search

    Archives
    « April 2014
    SunMonTueWedThuFriSat
      
    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
       
           
    Today