Updates from January, 2014 Toggle Comment Threads | Keyboard Shortcuts

  • Pandyan Ramar 8:12 pm on January 15, 2014 Permalink | Reply
    Tags: Cluster, Oracle WebCenter, , Oracle WebCenter Portal, WebCenter Install   

    Installing WebCenter Portal Cluster 

    This post describes the high level installation steps for installing Oracle WebCenter Portal and Content in a Clustered architecture to achieve High Availability. Host A and Host B are the two machines (nodes) to be included in the cluster.

    1. Run the WebCenter Portal Repository Creation Utility (RCU)

    2. Install the following software on both Host A and Host B

    • JDK (Sun or JRockit)
    • WebLogic Server (10.3.6)
    • Oracle WebCenter Portal (
    • Oracle WebCenter Content (

    3. Configure Domain on Host A


    Define Cluster, Machine and Managed Servers as follows:

    Cluster Machine Managed Server
    Spaces_Cluster Host A WC_Spaces1
    Spaces_Cluster Host B WC_Spaces2
    Content_Cluster Host A UCM_server1
    Content_Cluster Host B UCM_server2
    Portlet_Cluster Host A WC_Portlet1
    Portlet_Cluster Host B WC_Portlet2
    Collaboration_Cluster Host A WC_Collaboration1
    Collaboration_Cluster Host B WC_Collaboration2
    Utilities_Cluster Host A WC_Utilities1
    Utilities_Cluster Host B WC_Utilities1

    Add AdminServer to Host A

    Post bind GID: oinstall, Post bind UID: oracle

    Start Admin Server

    Create boot properties file for AdminServer with login id/password /


    4. Propagate Domain Configuration to Host B

    Pack the domain configuration in Host A:

    cd /<MIDDLEWARE_HOME>/oracle_common/common/bin
    ./pack.sh -managed=true -domain= /<MIDDLEWARE_HOME>/user_projects/domains/<DOMAIN_NAME> –template=/<MIDDLEWARE_HOME>/<DOMAIN_NAME>.jar -template_name=<DOMAIN_NAME>

    Copy the <DOMAIN_NAME>.jar file to Host B

    Un-Pack the domain configuration in Host B:

    cd /<MIDDLEWARE_HOME>/oracle_common/common/bin
    ./unpack.sh –domain= /<MIDDLEWARE_HOME>/user_projects/domains/<DOMAIN_NAME> –template= /<MIDDLEWARE_HOME>/<DOMAIN_NAME>.jar

    5. Configure Node Manager

    Update Node Manager properties on Host A and Host B

    vi nodemanager.properties

    Enroll Node Manager with Domain on Host A and repeat the same on Host B

    Connect to the AdminSever on Host A

    6. Start Servers

    Start Node Manager on both the nodes

    Start all Managed Servers through Admin Console

  • Pandyan Ramar 8:09 pm on November 11, 2013 Permalink | Reply
    Tags: Dynamic Convertor, WebCenter Content   

    Configuring WebCenter Content Dynamic Converter – Quick Overview 

    This post describes how to setup WebCenter Content Dynamic Converter in 5 minutes.

    Dynamic Converter allows users to check-in MS Word (and a range of other file formats) in to Content Server and view the same in HTML format. All images in the MS-Word document are automatically checked-in to Content Server also. The conversion from MS-Word to HTML happens dynamically in real-time when users access the document. This feature is useful if your users are more convenient using MS Office tools and would like to publish documents to be viewed in HTML format for example from a website or portal. Dynamic Converter is an out-of-the box component available in WebCenter Content and does not require the install of any additional server or component.

    Login to Content Server as weblogic.

    Ensure Dynamic Converter component is enabled.


    Configuration Settings:

    Click Administration > Dynamic Converter Admin > Configuration Settings

    Under Conversion Formats, scroll down and select Microsoft Word 2007 Document and click Update button in the bottom of the page.


    Create a new HTML Conversion Template:

    Administration > Dynamic Converter Admin > Create New Template


    Create Template Selection Rule:

    Content Server > Administration > Dynamic Conversion > Template Selection Rules


    Check-in a MS Word document in to the content server and note down the Content ID. Test Dynamic Conversion by accessing the document with the following URL:


  • Pandyan Ramar 5:31 pm on July 1, 2013 Permalink | Reply
    Tags: Fusion Middleware, OOM, Out of memory,   

    Troubleshooting Out of Memory issues in WebCenter 

    Troubleshooting Out of Memory issues in Oracle Fusion Middleware applications requires planning and patience. It is similar to looking for a needle in a haystack.  The approach should be to monitor, gather data and then analyze the data to determine the root cause. Out of  Memory can be caused by the code that is deployed on to the middleware infrastructure,  or there may be an underlying issue with the Fusion Middleware infrastructure (Framework/Cache issues). This post outlines the approach to understanding the problem and identifying the root cause for the OOM issues along with commands that can assist with the data gathering and analysis of OOM.

    There are different types of Out of Memory issues. The following are some of the most common types:

    1. java.lang.OutOfMemoryError: requested XXXX bytes for Chunk::new. Out of swap space?
    2. java.lang.OutOfMemoryError: unable to create new native thread
    3. java.lang.OutOfMemoryError: PermGen space
    4. java.lang.OutOfMemoryError: allocLargeObjectOrArray
    5. java.lang.OutOfMemoryError: getNewTla
    6. java.lang.OutOfMemoryError: Java Heap Space
    7. java.lang.StackOverflowError

    1. Determine if your managed servers is reporting OOM:

    Go to the managed servers location and execute find command to locate files with OOM exceptions logged

    cd /Oracle/Middleware/user_projects/domains/mydomain/servers
    find ./ -type f -exec grep -l java.lang.OutOfMemoryError {} \;

    An entry from a .log or .out file, is an indication that your managed server(s) is/are reporting OOM. From the output, see which managed server is reporting OOM exceptions. For example, from the following output you can determine that WLS_Spaces1 is reporting OOM:


    Go to the log location of that managed server and execute find and print the line

    cd WLS_Spaces1/logs
    find ./ -type f -exec grep java.lang.OutOfMemoryError {} \;

    Note: Your log location may be different based on your settings

    From the output look for the lines that immediately follow the text java.lang.OutOfMemoryError. Pipe your output to more for convenience if required.

    For example the following output suggests that this managed server is experiencing allocLargeObjectOrArray and getNewTla OOM exceptions:

    Exception in thread "Thread-665" java.lang.OutOfMemoryError: allocLargeObjectOrArray: [B, size 8208
    Exception in thread "Thread-664" java.lang.OutOfMemoryError: allocLargeObjectOrArray: [B, size 8208
    Exception in thread "WsMgmtWorkScheduler" java.lang.OutOfMemoryError: getNewTla

    2. Collect Thread and Heap Dumps

    Thread Dumps:

    Thread dump is a snapshot of the state of all the threads that are in the process. To collect a thread dump, execute the following command every 5 seconds for 8 to 10 times:

    >kill -3 <PID>

    Dumps will be written to the <Server_Name>.out file in the defined log directory (Ex: /Oracle/Middleware/user_projects/domains/mydomain/servers/myserver/logs).


    >. ./setDomainEnv.sh
    >jrcmd <pid> print_threads >tdump.txt

    Heap Dumps:

    Heap dump is a snapshot of the memory of a Java process at a certain point of time. To collect heap dumps execute the following command once.

    >/<Jrockit_home>/bin/jrcmd <PID> hprofdump filename=heapdump.hprof

    Dump file will be written to the domain home (Ex: /Oracle/Middleware/user_projects/domains/mydomain/)

    GC Logs:

    Enable GC tracing in the application server by including the following as a java startup parameter:

    -Xverbose:gc -Xverbosetimestamp -Xverboselog:/<dir_name>/<file_name>

    3. Analyze dumps 

    Analyzing Thread Dumps:

    When your managed server is experiencing slow response or showing a health warning in the WebLogic admin console, run top to determine the process that is consuming high resource.

    On the host that is running the managed server run top:

    top - 16:26:55 up 584 days,  5:57,  4 users,  load average: 4.96, 5.08, 5.10
    Tasks: 167 total,   2 running, 165 sleeping,   0 stopped,   0 zombie
    Cpu(s): 86.0%us,  0.5%sy, 13.5%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:  16436932k total, 15797128k used,   639804k free,   166504k buffers
    Swap: 12289684k total,  1662108k used, 10627576k free,  1229076k cached
    29381 oracle    15   0 4249m 3.0g  32m S 171.8 19.0 190:12.57 java
    21162 oracle    18   0 3499m 2.2g 4240 S 10.0 14.0 123:06.66 java
    21139 oracle    18   0 3450m 2.1g 7984 S  9.3 13.6 109:11.02 java
    21365 oracle    20   0 3196m 1.7g  16m S  7.0 10.9  80:56.99 java

    Note the PID of the process that is consuming high resources. In the above top output PID 29381 is our guy. Type q to quit out of top.

    The JVM for Linux implements Java threads as native threads, which results in each thread being a separate Linux process. To determine the thread process that is consuming high resource, run top –H –b –p <PID>

    top -H -b -p 29381 >tophbp.txt
    vi tophbp.txt
    top - 16:25:21 up 584 days,  5:55,  4 users,  load average: 4.96, 5.17, 5.14
    Tasks: 129 total,   3 running, 126 sleeping,   0 stopped,   0 zombie
    Cpu(s):  2.5%us,  0.4%sy,  9.8%ni, 86.1%id,  0.9%wa,  0.1%hi,  0.2%si,  0.0%st
    Mem:  16436932k total, 15794704k used,   642228k free,   165840k buffers
    Swap: 12289684k total,  1662108k used, 10627576k free,  1228912k cached
    29876 oracle    25   0 4248m 3.0g  32m R 77.0 19.0  61:41.25 [STANDBY] Execu
    29389 oracle    16   0 4248m 3.0g  32m R 55.3 19.0  24:15.73 (Code Optimizat
    29449 oracle    18   0 4248m 3.0g  32m R 43.4 19.0  61:51.18 [STANDBY] Execu
    29381 oracle    15   0 4248m 3.0g  32m S  0.0 19.0   0:00.00 java

    Note the thread process id that is consuming high resource. In the above top output PID 29876 should be our interest.

    Export domain variables and collect thread dumps for the managed servers java process (use jcmd command if you are using SUN Java)

    cd /Oracle/Middleware/user_projects/domains/mydomain/bin
    . ./setDomainEnv.sh
    cd ~/
    jrcmd 29381 print_threads >tdump.txt

    Examine the thread dump file to look for the thread process id

    vi tdump.txt
    "[STUCK] ExecuteThread: '4' for queue: 'weblogic.kernel.Default (self-tuning)'" id=134 
    idx=0x200 tid=29876 prio=1 alive, native_blocked, daemon
    at java/util/HashMap.buildCache(HashMap.java:589)
    at java/util/HashMap.resize(HashMap.java:576)

    Note: If you are using SUN Java you need to convert the thread pid to hex using the following command. If you are using JRockit this is not required

    printf "%x \n" <thread_pid>

    In the above example, it was HashMap.buildCache that was causing issues. However if you have a faulty code that is leaking memory, you now have a clue to the same. You can now go and examine the referenced code in JDeveloper to further investigate. When you open a Support Ticket with Oracle Support, providing the Heap and Thread Dumps along with the top output, would further assist the support engineers in determining the root cause of the issue.

    Thread Deadlock is another situation contributing to OOM. If you suspect a deadlock, you can feed your thread dump to a Thread Dump Analyzer such as Samurai or TDA which can identify the deadlock.

    Analyzing Heap Dumps:

    Use MTA to analyze your heap dumps to determine any leak suspects. You can select the Run Leak Suspect report to determine which object is consuming high heap memory.


    Here are some more nice articles that explain OOM:

  • Pandyan Ramar 3:52 pm on March 26, 2013 Permalink | Reply
    Tags: Oracle SES, Secure Enterprise Search Start/Stop, SES   

    Oracle SES Startup Issue 

    This is with regards to startup issues with Oracle Secure Enterprise Search version


    When issuing searchctl stopall command there is a prompt to enter password. Upon entering the password, an error is reported that the id/password is not valid. Though the same password was allowing successful login to the SES Admin console.


    Execute the following command before issuing the searchctl stopall

    export ORACLE_SID=ses
    export ORACLE_HOME=/INSTALL_LOCATION/Oracle/ses1/
    export PATH=$PATH:$ORACLE_HOME/bin
    sqlplus sys/mypassword as sysdba

    This starts the Oracle Database. Now you can stop and start the SES instance successfully.

    ./searchctl stopall
    ./searchctl startall
  • Pandyan Ramar 10:53 pm on October 26, 2011 Permalink | Reply
    Tags: Archiver, Folder Structure Archiver, Migrate Content, ,   

    UCM – Migrating folder and its contents 

    Folders are an easy way to let users organize content stored in Content Server. Though folders are virtual, it gives a clean presentation of the content in a familiar user interface for users. Use of WebDAV further simplifies access and update of content.

    If you are using folders, while migrating contents from one Content Server to another the component “Folder Structure Archive” can be of great help.

    Folder Structure Archive: The Folder Structure Archive component enables an administrator to configure a Content Server Archive to archive the folder structure as well as its associated content. The structure of the folders is archived via database table replication.

    This component allows you to browse and select the folder from the following screen (Administration > Folder Archive Configuration) and create an export archive.

    You can then use the Admin Applet Archiver to export the collection to a target collection if you have connectivity between the two content servers. If your content servers are in different network, you can zip or tar the collection file, usually at the following location


    and copy it to the same location in the target content server. Then you can launch the Admin Applet Archiver in the target content server and import the folder and its content.

    Note: If you dont want all the revisions (to save space), before exporting change the revision selection settings as below:

    Admin Applet > Archiver >  Your_Collection_Name > Export Data > Content : Edit : Query Options – Select “Latest Revision”

    You can notice that since the Folder Structure Archiver archives content through database replication, the Query Expression is empty. Explore the “Table” tab to see collection that is being exported.

    This feature can be used to migrate content from a 10G to a 11G UCM environments also. Make sure you have migrated the security configurations and other required custom meta-data you have defined using the Config Migration Admin prior to migrating the content.

    • vivek lal 6:53 am on September 3, 2012 Permalink | Reply

      Quite useful..

    • Senuke XCr 6:51 pm on November 26, 2012 Permalink | Reply

      At this time I am ready to do my breakfast, once having my breakfast
      coming yet again to read further news.

    • Arun 2:40 pm on January 7, 2013 Permalink | Reply

      I have an issue with UCM stellent migration. I did the first push of content from one server to another using the following steps

      Import the folder Archive
      Site Studiio Upload/Restore.

      I want to do increment update to the target system.
      Contents in existing folders are getting updated. But new folders are not being created when i do this.

      I cant do the import folder archive as it deletes all the contents.

      Any help appreciated..

  • Pandyan Ramar 10:37 pm on October 25, 2011 Permalink | Reply
    Tags: Content Server, Dynamic Conversion, Java, , RIDC, , ,   

    RIDC to display Dynamically Converted content 

    Quite often customers want a quick and easy way to publish a Word document and display it as HTML in a Portal. Dynamic Converter and RIDC comes handy in such situations. After you have setup the Dynamic Converter and tested the dynamic conversion from within the Content Server, you can use simple RIDC code snippet to display the content in a WebCenter Portal page.

    First you need to import “oracle.ucm.ridc.jdev-11.1.1.zip” file manually into your JDeveloper. Then you can use the following code to build a bean to pass the content id and get the content.

    This bean takes two parameters – the first is the Content ID, the second is a boolean value indicating if the content is dynamically converted or not. If all you need is to display a regular content, pass false as the second parameter.

    package view;
    import java.io.IOException;
    import oracle.stellent.ridc.IdcClient;
    import oracle.stellent.ridc.IdcClientException;
    import oracle.stellent.ridc.IdcClientManager;
    import oracle.stellent.ridc.IdcContext;
    import oracle.stellent.ridc.model.DataBinder;
    import oracle.stellent.ridc.protocol.ServiceResponse;
    public class RIDCBean {
        private String content;
        public RIDCBean(String dDocName, boolean dynamicConversion) throws 
                                         IdcClientException, IOException {
            // Arguments needed to connect to UCM
            String idcConnectionURL;
            idcConnectionURL = "idc://mycontentserver.com:4444";
            String username;
            username = "myappid";
            String password;
            password = "myapppwd";
            // Create the IdcClient
            IdcClientManager clientManager = new IdcClientManager ();
            IdcClient client = clientManager.createClient (idcConnectionURL);
            IdcContext userContext = new IdcContext(username, password);
            // Create a new binder
            DataBinder dataBinder = client.createBinder ();
            // Retrieve the file
            if (dynamicConversion) {
              dataBinder.putLocal ("IdcService", "GET_DYNAMIC_CONVERSION");
            } else {
              dataBinder.putLocal ("IdcService", "GET_FILE");
            dataBinder.putLocal ("dDocName", dDocName);
            dataBinder.putLocal("RevisionSelectionMethod", "LatestReleased");
            ServiceResponse ridc_response;
            ridc_response = client.sendRequest (userContext, dataBinder);
            // Get the response as a string
            content = ridc_response.getResponseAsString ();
        public String getContent() {
            return content;

    Note: If the Dynamically Converted Word document had images, they will be checked-into the content server automatically by the Dynamic Converter. Based on your Dynamic Converter template, IMG tags will be generated. The IMG tags will use a URL to load these images in the converted content. This will work fine as long as your Content Server is accessible by end users. If you have your Content Server locked behind a firewall, you will have issues and need to convince the customer to have a consumption UCM server (read only) that can be opened up to users access by punching a hole in the firewall.

    • Manuel Cavazos 12:13 pm on December 7, 2011 Permalink | Reply


    • kevin Smith 12:17 pm on September 13, 2012 Permalink | Reply

      This does not work. The output from the call only returns the information on the document, not the actual HTML.

      Also, you say

      > Note: If the Dynamically Converted Word document had images, they will be
      > checked-into the content server automatically by the Dynamic Converter.

      This is also not correct. The images are saved to the UCM file system, but they are not actually checked in as separate content items.

      • Sunderapandyan 1:40 pm on September 13, 2012 Permalink | Reply


        When you print the string “content” what do you see as the output?.

    • kevin Smith 1:47 pm on September 13, 2012 Permalink | Reply

      My mistake. I missed the dataBinder.putLocal(“IsJava”,”0″);

      This works now.


  • Pandyan Ramar 6:58 pm on June 19, 2008 Permalink | Reply
    Tags: , , selling, shopping cart   

    How to rescue the Shopping Cart from being abandoned? 

    Every year, hoards of online shoppers bolt when they’re just a click or two away from finishing the checkout process. Maybe it’s a security concern, or what if returning the item turns out to be too much of a hassle? Whatever the reason, one study found that as many as 60 percent of online shoppers flee, making shopping cart abandonment a huge and costly problem for any business selling on the Web. The great frustration for online businesses is that a salesperson can’t just walk over to you and offer help.

    A start-up firm is using automated chat to keep online customers from abandoning their virtual shopping carts.

  • Pandyan Ramar 5:55 pm on April 30, 2008 Permalink | Reply
    Tags: summit,   

    What Happened at the SFO Web 2.0 Expo? 

    Is the Web 2.0 economy in limbo? Wrapping up the Web 2.0 conference CNET News.com Editor in Chief Dan Farber and reporter Caroline McCarthy wrap up the Web 2.0 conference in San Francisco and discuss the current Web 2.0 boom and how long it will be sustained.

    Watch the video

  • Pandyan Ramar 5:50 pm on April 30, 2008 Permalink | Reply
    Tags: ajax, cross domain ajax, , javascript, json   

    JSON – Elegant Approach for cross domain AJAX scripting: 

    Tried it and fell in love with it right away. This is a sure winner for those writing cross domain widgets for the Internet. JSON is a data format that can be handled with ease in JavaScript (or Java or any programming/scripting language). It also allows cross domain scripting which is not supported by AJAX. Here are some cool resources to get started.

    Introduction to JSON:

    Using JSON to exchange data:

  • Pandyan Ramar 5:47 pm on April 30, 2008 Permalink | Reply
    Tags: , Sales,   

    Web 2.0 – What have you to offer Sales? 

    Leveraging Web 2.0 to Sell by Geoffrey James
    The Internet is the ultimate disruptive technology. Like telephony, radio, television, and even the printing press, the Internet is dramatically changing nearly every aspect of daily life, both inside businesses and in the daily lives of individuals. Much of this disruption has been both unplanned and unexpected, and nothing more so than the sudden prominence of what’s been called Web 2.0: the blogs, wikis and social networking sites where users generate content for consumption by other users. 


    Sales 2.0 represents not just a better way of selling, but a substantial enhancement of the customer experience. The Web 1.0 environment, with its emphasis on pushing information out to a wider audience, overloaded customers with information. While they had access to information that in the past belonged entirely to sales professionals (i.e. product features, comparison pricing, customer complaints etc.), many customers saw all that data as an undifferentiated blur of meaningless facts. By creating a more collaborative environment, Sales 2.0 allows the sales professional to use his or her specific expertise to help the customer differentiate between information that’s essential and information that’s not.

    Read More


Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc