Wednesday, 15 June 2011

Webcenter 11g VM: Add Spaces

As mentioned in my earlier posts, there is a Oracle Virtual Box VM for Webcenter. But it is a VM with Webcenter Portal (11gPS3: 11.1.1.4). It turns out that Webcenter Spaces is not installed.  And since I needed just that for my course-preperations I went looking for a VM that contains spaces. I was directed to the Pre-built Appliances page for the spaces VM but it turns out that the links to download the files were removed, because "in the near future" a new version will be made  available.


So that leaves me with the Webcenter Portal VM. On OTN there is only one download to install Webcenter. So the software of webcenter including spaces is on the VM. The database just does not contain the repository schema's for spaces. So what to do? Well apparently the following:
  1. Run RCU (Repository Creation Utility) for Spaces against the database
  2. Extend the webcenter weblogic domain
  3. Fiddle around somewhat to make things actually working (I found that necessary)
Run the RCU
To be able to run the RCU you have to download the right version (11.1.1.4) and unzip it. You can download it from here. Yannick Ogena's blog was a good starting point here, by the way. Expand the nodes under "Prerequisites & Recommended Install Process" of the 11.1.1.4.0 version. Look for "4 Repository Creation Utility (11.1.1.4.0) for Linux" and download that one. Unzip it somewhere so that you can reach it from inside the VM. A shared folder would be helpful. You could of course FTP/SCP it to the VM, but I don't like that idea since it will unnecessarly expand the vitual disks.
Then start "rcu" from the bin folder.
If you shrunk the database like I did following my previous post on this, you'll hit the error that your processes parameter is too small. It has to be at least 200.
If so increase it like:
SQL> alter system set processes=200 scope=spfile;
System altered.
SQL> shutdown immediate;
...
SQL> startup

In the "Database Connection Details" screen enter:
  • Hostname: localhost
  • Port: 1521
  • Service name: orcl
  • username: sys
  • password: welcome1 (all database passwords in the Webcenter Portal VM are "welcome1" so it might be handy to use that for all other schema's too)
Then you'll see a screen like:

Check the boxes like above. It will suggest however to create a new prefix "DEV1". Instead  select the existing prefix "DEV". Then you'll mention that some of the schema's allready exist and won't be created. That's fine. Then finish the wizard keeping the defaults and confirm with "OK" after the checks. It will ask for creating non existent Tablespaces. Just confirm with OK.

 At the end you can press close to close the RCU.

Extend the domain
Now the repository is ready, to extend the domain. To do so, start the domain configurator. You can find it in "/u01/app/oracle/product/Middleware/wlserver_10.3/common/bin". Start the script "config.sh".

It starts with the screen:
Choose Extend existing Weblogic domain and look for the webcenter domain. It is the folder "/u01/app/oracle/product/Middleware/user_projects/domains/webcenter":


When choosing next you'll be able to select the options to add to the domain. Check the Webcenter options following the next example screendumps:


Then, you'll have to add the connection properties of the different repository schemas. What you can do is select every schema that does not have orcl.localdomain as service and localhost as Host Name. Then enter in the fields in the top of the screen orcl.localdomain as service (just "orcl" is not enough, you have to add "localdomain" as a domain name). Since all the schema's have "welcome1" as a password, you can enter that in the Schema password field. Do not touch the Schema owner field. That won't be changed.


Then finish the wizard. After finishing up the wizard the domain has got some new Manged Servers added. You can start the Admin Server using the "startWeblogic.sh" command in "$DOMAIN_HOME/bin" (in our case: "/u01/app/oracle/product/Middleware/user_projects/domains/webcenter/bin").
After having started the admin server you can browse to http://localhost:7001/console. Log in as:
  • user name: weblogic
  • password: welcome1
At the left you'll see a portlet called "Domain Structure". Open up the "Environment" node and click on servers.
A table with the mananged servers is given:
AdminServer(admin)

RUNNING OK7001
UCM_server1

SHUTDOWN
16200
WC_Collaboration

SHUTDOWN
8890
WC_CustomPortal

SHUTDOWN
8892
WC_Portlet

SHUTDOWN
8889
WC_Spaces

SHUTDOWN
8888
WC_Utilities

SHUTDOWN
8891

Except for "WC_Collaboration" all the WC_% servers are added. Each with it's own port number.

A managed server can be started with the "startManagedWebLogic.sh"  command with as an extra parameter the name of the managed server like:
startManagedWebLogic.sh WC_Spaces
You can start just the managed servers you'll need.

Tuning the domain
However, when you start the added managed servers, you'll find the error: " <Getting boot identity from user.> " in the log. It seems you can enter the weblogic user but it will fail.
I tried to add the info using the weblogic Admin Server console. But that did not work.

When you start the managed server for the first time, it will add a folder with the name of the managed server in the servers folder within the domain folder, like:
[oel50wc oracle /u01/app/oracle/product/Middleware/user_projects/domains/webcenter/servers]$ ls
AdminServer     domain_bak   WC_Collaboration  WC_Portlet  WC_Utilities
AdminServerTag  UCM_server1  WC_CustomPortal   WC_Spaces

That is: when it is not started for the first time, it will not be there.
To solve the boot-identity problem, add a folder called "security" to the managed-server folder. In that folder a file called "boot.properties" is expected. You can copy the security folder from for example the "UCM_server1" or "WC_CustomPortal" managed servers. Edit the boot.properties file with the following values:
username=weblogic
password=welcome1
At startup of the managed server both values will be encripted.

To start the managed servers you can adapt the script vmctl.sh that is provided in the VM. I did not like that, since it has lot's of double code. I like a more modular approach.

When you start all of the managed servers after some time the VM will be very busy with ... swapping! Each of the managed server is started with it's own JVM session. And it turns out that each VM gets an initial heap of 512MB and a max of 1024MB. I think that is somewhat oversized for a demo VM. You can see it in the output of the startup script. Since the first thing it does is to log the memory properties:
JAVA Memory arguments: -Xms512m -Xmx1024m -XX:CompileThreshold=8000 -XX:PermSize=128m  -XX:MaxPermSize=512m 
The settings can be adapted in the "setDomainEnv.sh" script in the bin folder of the webcenter domain.
There you'll find the following values:
XMS_SUN_64BIT="256"
export XMS_SUN_64BIT
XMS_SUN_32BIT="512"
export XMS_SUN_32BIT
XMX_SUN_64BIT="512"
export XMX_SUN_64BIT
XMX_SUN_32BIT="1024"
export XMX_SUN_32BIT
XMS_JROCKIT_64BIT="256"
export XMS_JROCKIT_64BIT
XMS_JROCKIT_32BIT="256"
export XMS_JROCKIT_32BIT

The VM uses 32-bit Linux and the Sun JVM. So the values to change are "XMS_SUN_32BIT" and "XMX_SUN_32BIT" for the min and max heap size respectively. I changed them to "256" and "512". Since each managed server, including the admin server uses the same script, these values are the same for each server. If you might need to adapt for just one managed server then you probably have to copy the scripts specificly for that particular managed server. Or install a node manager...

Together with a downsized database, it has to make to run the VM better.

2 comments :

Anonymous said...

Darwin thanks, very useful....
However, the omniPortlet directory is empty.... Any ideas what to do?

Anonymous said...

Thanks, very useful.....
However, the omniPortlet is empty.... Any ideas???