Oracle VM PDF
Oracle VM PDF
Oracle VM PDF
Oracle VM Template Developers Guide: Creating Pre-Built VMs for Rapid Software Deployment
Introduction ......................................................................................... 1 Oracle VM Templates: Concept and Usage........................................ 2 Template Creation, Overview.......................................................... 2 What You Need to Know About Licenses ....................................... 5 Prerequisites for Oracle VM Template Creation.............................. 6 Creating an Oracle VM Template........................................................ 6 Step-by-Step: Template Creation........................................................ 7 1. Decide On Your Template Specification ..................................... 7 2. Using JeOS kit, Create the Initial Template ............................... 8 3. Set-up the Template Development Environment ...................... 11 4. Configure the Virtual Machine for Product Installation .............. 12 5. Install the Product Software into the VM ................................... 12 6. Identify Actions for Product Software Configuration at Install ... 14 7. Define the Product Specific Reconfiguration Actions ............... 15 8. Define the Product Specific Cleanup Scripts ............................ 16 9. Remove Proprietary Files from OS Disk Image & Replace Parameter Values by Placeholder Strings .................................... 17 10. Package the Template ............................................................ 17 APPENDIX A..................................................................................... 20 APPENDIX B..................................................................................... 26
Introduction
An Oracle VM Template is a virtual machine (VM), or group of VMs, containing a full software stack that is pre-installed, pre-configured, and ready to use. Simply download and import a Template into Oracle VM, and then deploy the template as a VM in order to use the pre-configured software. This eliminates the steps of installing, patching, and configuring complex software. Oracle VM Templates support both Oracle and non-Oracle applications, and can be built by anyone including Oracle, ISVs, and third party solution providers. By using an operating system like Oracle Enterprise Linux, developers can build their application as a full stack virtual machine on an enterprise-class operating system that is freely redistributable without any special agreement, and the template can be backed by enterprise-class support. This technical white paper is for those interested in knowing how to package applications in a standard, pre-configured way as an Oracle VM Template. Its a fast and reliable way to deploy complex enterprise applications. For information on the broader context of Oracle VM Templates, their benefits, and how they are deployed, customized, and used from Oracle VM Manager, refer to the Creating and Using Oracle VM Templates: The Fastest Way to Deploy Any Enterprise Software white paper, and visit oracle.com/virtualization for more information about Oracle VM.
/oracle11g.img /vm.cfg
The tar file contents can also be a multi-VM template set. For example, the Oracle Enterprise Manager Grid Control template contains two virtual machines: a middle tier management server (OMS) VM and a backend Oracle Database repository VM. Consequently, the template archive consists of two directories, each containing 3 files:
db/system.img /db.img /vm.cfg gc/system.img /gc.img /vm.cfg (disk image with OS) (disk image with oracle DB software) (vm configuration file) (disk image with OS) (disk image with oracle GC software) (vm configuration file)
Note: Packaging a template that consists of several virtual machines in a single archive simplifies the download for the end user because there is less chance that an inconsistent or wrong combination of VMs or files will be downloaded. A template is a copy of a pre-installed virtual machine. To create this copy, one needs first to create the virtual machine itself running the desired OS, and then install and configure the target software. The next step is to implement a script to perform dynamic reconfiguration of the OS and application at initial boot-time, if required. The virtual machine with the desired OS can be created from scratch using Oracle Enterprise Linux, or you can begin with an existing Oracle VM OS Template available from Oracles EDelivery website. Oracle has made available for free download a Just enough OS or JeOS edition of the Oracle Enterprise Linux 4 and 5 operating systems to facilitate building an OS instance with a bare minimum number of packages needed for your template. This helps reduce the disk footprint by up to 2GB or more per VM, and also improves security and reliability of the virtual machine. Of course, you can customize and add packages to the JeOS edition package list to completely tailor to the needs of the application. The JeOS edition download also includes a script to help configure parameters such as disk sizes, etc. Details on JeOS, including a complete description of the included modifyjeos script can be found on the Oracle Open Source Software website at oss.oracle.com/el5/docs/modifyjeos.html The dynamic reconfiguration boot time actions can be implemented in product specific scripts as described later in this paper. The scripts are then installed in the template and can be set to automatically run when the VM is first booted. Note: Throughout the rest of this white paper, unless indicated otherwise, the term product will be used to refer to any software product(s) included in the template in addition to the OS.
VM OS boots at runlevel 3
No reconfiguration required
No
Reconfigure Template?
Yes
End
Yes
No
No Yes Execute JeOS reconfiguration scripts: Obtain network configuration from user at console
End
Figure 1: The Virtual Machine Start-Up and Product Configuration Process. At the VM first boot, the VM OS (OEL) and application can be configured with new IP address, hostname, and registered to the Unbreakable Linux Network for on-going support.
Since Oracle VM Templates do not require any proprietary directory structures or metadata, there is no reason why the software included in the template cannot be completely compatible with any utilities for patching and support provided by software vendors. However, in order to support this compatibility, you may need to consider whether any additional packages or software needs to be included in your template to support any required vendor utilities used for maintenance of the template. For example, the template once deployed should be able to support OS and product standard operating procedures going forward with regards to: Patching Upgrade Configuration changes Monitoring Tech Support For example, you should consider if it is likely that a monitoring agent, or agent used for patching will need to be installed. You can consider either including these agents directly or just plan to make sure the appropriate packages are included to allow future installation in the guest VMs.
For hardware requirements and other specifics on installing or using Oracle VM or Enterprise Linux software, refer to the user documentation available at oracle.com/virtualization or oracle.com/linux.
6. Identify the product configuration actions normally performed product installation that will need to be performed by a template configuration script (e.g. system files modified, product configuration files that refer to used-at-install hostname, IP address); 7. Develop a script for the product specific reconfiguration actions (e.g. in product configuration files, replacement of used-at-install IP address by actual IP address assigned to the virtual machine at deployment); 8. Develop the product specific cleanup scripts;
9. Remove the proprietary files from OS disk image and replace the relevant real parameter values by placeholders; 10. Package and archive the template.
Guest type: paravirtualized (PVM) or fully virtualized (also known as hardware virtualized or HVM). Generally stated, PVMs are higher performance and more scalable and thus are generally preferable. Consult Oracle VM user documentation and white papers for more discussion on PVMs vs. HVMs Version of product(s) to install Product configuration Product install directory Product install partition size
Number of virtual CPUs to be configured when the guest VM is created. Note that this value can be edited later and even changed from the Oracle VM Manager GUI. Size of virtual memory. Note that, in Oracle VM, as with any virtualization product using the Xen hypervisor component, the amount of memory consumed by all the VMs running on a physical server at any one time cannot exceed the amount of physical memory in the server. This may be a consideration if you plan on running multiple VMs on the same physical machine. Swap size: Depends on the application. For Linux operating systems, 512B-1024GB is usually sufficient but more may be ideal for your application. For example, for Oracle Database, 2GB is recommended. Free size of root partition desired after OS install Name for your product disk images Mount point for the product disk image(s)
Template name (default name for the archive and virtual machine(s)). Keep in mind that templates containing multiple VMs will create a separate directory based on the VM name for each VM. To avoid later confusion or conflicts when you have many templates deployed in the same Oracle VM instance, it is recommended that you develop a naming convention that will not only contain the name of the individual VM but also the name of the template that it is associated with. For example, if you have multiple templates that contain a database VM, do not name each VM simply as database because this will create a directory naming conflict but also create confusion
later as to which overall template a given database belongs-to. Also keep in mind versioning as you are likely to update the template over time with patched or updated software or settings. Dependencies, overall topology, or other things specific to the products you are including. Note: Although Oracle developed templates generally include two virtual disk images, it is technically optional to create a second disk for the application install and it may or may not be required for a given template. But, often two disk images may be needed to separate products with different license terms and conditions, e.g. to separate software with open licenses such as GPL from software or files that have a proprietary license. Consult the software license authority with any questions regarding licensing requirements.
Step 1 Example: Oracle Enterprise Manager Agent Template Template Specification
In this example of an Oracle Enterprise Manager Agent template, the template specification is as follows:
OS version: Enterprise Linux 5 Update 2 for x86 platform Guest type: Paravirtulized (PVM) Product Version: EM Agent 10.2.0.4 for Linux x86 Product configuration: standard install Product install directory: /u01. Product install disk size: 5 GB Number of virtual CPU: 1 Size of virtual memory: 1GB Swap size: 2GB Free size of root partition after OS install: 2GB Name for your product disk images: Emagent.img Mount point for the product disk image: /u01 Template name: OVM_EL5U2_X86_EMAGENT_PVM.
Download and install JeOS rpm to a system running OEL 5 Update 2 or later. It can be either a bare metal system or a virtual machine. The documentation, which is part of the rpm, is a comprehensive guide on how to develop with JeOS. Tips: -The JeOS edition of Enterprise Linux only includes English language support by default. If your template needs to support additional languages, these packages should be added to your OS build. -If you have rpm-based software products you wish to include and can configure access to the rpm repository for that software, you may provide those packages as input to modifyjeos command. If the product(s) you wish to add are not rpm based, and need to run their own installer, you can do so by running the installer in the VM before completion of your template packaging as described later in this paper.
Step 2 Example: Oracle Enterprise Manager Agent Template Initial Template Creation with OEL JeOS
As a root user, install JeOS kit on the virtual machine running OEL5.2: ovm-modify-jeos-1.1.0-2.el5.noarch.rpm ovm-el5u2-xvm-jeos-1.1.0-1.el5.i386.rpm
Create the working directory to be used for JeOS output files and enter this directory: # mkdir /<any_path>/emagent_work # cd /<any_path>/emagent_work
To create the template, we need to know the disk size(s), number of virtual CPUs and memory size. This information should have been included as a part of the specification described in Step 1 above. Identify the additional packages required for the product. Get these packages using modifyjeos and specify either a DVD ISO mount point or a YUM repository on the network as a repository location. It should be local ISO (DVD) or YUM repository accessible via network. Refer to JeOS documentation for more details. We will use an YUM repository as the source for packages in this example: http://public-yum.oracle.com/repo/EnterpriseLinux/EL5/2/base/i386
The addpkg.lst file used as input by JeOS contains a list of additional packages to be added to the standard, base JeOS image. For an EMagent install, create 'addpkg.lst' with the following lines (packages): * oracle-validated Note that this is a very special and helpful rpm if your template will include the Oracle Database or other software that depends on some of the Database libraries, as is the case with the EM Agent. Basically you can think of this as a kind of master rpm that contains references to all the dependencies / rpms that you need on top of the JeOS base to support the Database. By specifying this package alone, it will pull-in and install all the other packages recommended and required by Oracle for the Database, eliminating the need to manually identify each individual Database package required. Named after, and derived from Validated Configurations program, oracle-validated also creates an oracle OS user and an oinstall and dba group. Kernel parameters are also set properly, ensuring that the Oracle Universal Installer will proceed without complaints. * nc * unzip - required, used in template reconfiguration script - optional but recommended, may be used to unzip the Agent
software source * wget - optional but recommended, may be used to download the Agent software. Next, run the modifyjoes command to add the packages and generate the .img and vm.cfg files: # modifyjeos -i EL52_i386_PVM_jeos \ -n OVM_EL5U2_X86_EMAGENT_PVM \ -mem 1024 -cpu 1 \ -r http:// public-yum.oracle.com repo/EnterpriseLinux/EL5/2/base/i386 \ -p addpkg.lst \ -S 2048 -I 6096 -R 2048 \
10
u01/emagent-reconfig.sh referenced above is the name of reconfiguration script well develop later in Step 7. /u01/emagent-cleanup.sh referenced above is the name of cleanup script well develop later in Step 8.
The following files are then produced in the current directory: System.img: This is the OS system image file Emagent.img: This is the image file for the EM agent vm.cfg: This is the virtual machine configuration file describing the parameters needed to create the guest VM.
A partition with ext3 file system is created on Emagent.img and the partition will be mounted on /u01.
Copy these three files to the directory reachable via http or ftp, for example to /var/www/html/emagent_templ. Note: For a complete description of all the modifyjeos options, refer to the README file hosted at http://oss.oracle.com/el5/docs/modifyjeos.html
In our example, we have Oracle VM server installed already, and have imported the initial VM (the disk images and vm.cfg created in step 2) into Oracle VM Manager. We now start the virtual machine using Oracle VM
11
Manager and then open the virtual machine console using the Console button on the Virtual Machines page. Youll be prompted to choose DHCP configuration or specify the IP address, gateway, netmask, and DNS to configure the virtual machine network. Choose the option which works better for you. It will not have an effect on the template eventually created. Answer the interview questions, and login to running virtual machine as user root using password ovsroot.
We used JeOS to install the required dependant packages, and configure the second disk. The oracle-validated.rpm created all the required user accounts and set all the required OS parameters. Refer to Oracle Database Installation Guide for information about oraclevalidated.rpm.
12
product installation is not rpm-based, and you need to run your installer, you would run it as a part of this step. For the product install, use the disk mounted at the mount point specified during the spec phase (Step 1). This disk may or may not be formatted with the file system depending on how you created the template.
Step 5 Example: Oracle Enterprise Manager Agent Template Install Product Software
We downloaded agent software from the Oracle Technology Network (OTN) and did an install using silent installation mode (refer to the Oracle Enterprise Manager Installation Guide).
1)On the product image disk mounted at /u01, create a directory owned by user oracle and group dba # mkdir /u01/app
# chown oracle:dba /u01/app 2) Check and configure the hostname, both in file /etc/hosts, and by using command hostname, as the agent installer will check the local hostname 3)Extract the agent install media from downloaded zip file Unzip it in <UNZIP_DIR> directory 4) Modify <UNZIP_DIR>/response/additional_agent.rsp, set BASEDIR=u01/app/oracle/product sl_OMSConnectInfo={dummy, 9999} These dummy host name and dummy port allows to install emagent without registering to OMS server. This is convenient if you do not have OMS server installed in your environment. You can specify the values for real OMS hostname and port if you wish. In this example, we assume that there is no OMS server available at the template development time. 5) Invoke OUI in silent mode: # su oracle # <UNZIP_DIR>/linux/agent/runInstaller silent force -noConfig responseFile <UNZIP_DIR>/linux/response/additional_agent.rsp In the above syntax, -force noConfig is required if you run installer with dummy OMS server.
13
Step 6 Example: Oracle Enterprise Manager Agent Template Identify the Reconfiguration Actions
In the case of the Oracle EM Agent, each agent instance has to register with the OMS (Oracle Management Service) of Enterprise Manager. Normal EM Agent installation also requires the following data for each new instance: Management Service hostname Management Service IP address (if hostname cannot be resolved) Management Service Port Agent Registration password Those parameter values need to be obtained from the user at initial template boot The configuration file for the EM agent is: $AGENT_HOME/sysman/config/emd.properties
14
OMS port and OMS hostname values are embedded into URLs for OMS Wallet Source and OMS repository parameters. Those values need to be replaced at the template boot to reflect the deployment setting. It may be helpful to create a table describing the parameter names, their values, and where they are stored such as is shown below to help keep track of everything that will need to be addressed in the script(s): Value Stored in Where / When to configure OMS hostname OMS port OMS hostname OMS port Agent password
emd.properties file emd.properties file emd.properties file emd.properties file At agent registration
Step 7 Example: Oracle Enterprise Manager Agent Template Develop The Product Specific Configuration Scripts
For this EM agent example, the script is called emagent-reconfig.sh and should be copied into /u01/. We used this name emagent-reconfig.sh when we ran the modifyjeos command above in Step 2. Refer to Appendix A at the end of this paper for the full source code for the template reconfiguration script for this example. The script is executed at the first boot of the VM created from the template. The actions performed by the script are based on data from Step 6, and consist of three logical parts:
15
1.
Interactively collect the users input using a VNC session brought up Again, the VM console can be accessed by selecting the VM
at first boot.
in Oracle VM Manager and clicking on the Console button in the UI. 2. Replace the placeholder strings by real data for parameters defined
sed -i "/^emdWalletSrcUrl/s|%OMS_HOST%|$OMS_HOST|" $AGENT_HOME/sysman/config/emd.properties sed -i "/^emdWalletSrcUrl/s|%OMS_PORT%|$OMS_PORT|" $AGENT_HOME/sysman/config/emd.properties sed -i "/^REPOSITORY_URL/s|%OMS_HOST%|$OMS_HOST|" $AGENT_HOME/sysman/config/emd.properties sed -i "/^REPOSITORY_URL/s|%OMS_PORT%|$OMS_PORT|" $AGENT_HOME/sysman/config/emd.properties sed -i "/^EMD_URL/s|%HOSTNAME%|$(hostname)|" $AGENT_HOME/sysman/config/emd.properties Note, that to make this approach work, before you archive the template, you need to substitute the development VM parameter values in configuration file by placeholders like %OMS_HOST. This will be done in steps 8 and 9. 3. Start the EM agent and register it to OMS
After you finish the development and testing of the script, copy it to /u01.
Step 8 Example: Oracle Enterprise Manager Agent Template Product Specific Cleanup Scripts
16
For this EM agent example, the cleanup script is called emagentcleanup.sh. We introduced this script name, emagent-cleanup.sh, when we ran the modifyjeos script in Step 2. Develop the script, and copy it to /u01 directory. Refer to Appendix B at the end of this paper for the source code for the template clean up script for this example.
9. Remove Proprietary Files from OS Disk Image & Replace Parameter Values by Placeholder Strings
If the product is up and running, shut it down cleanly. Run the JeOS cleanup script # oraclevm-template --cleanup The JeOS cleanup script invokes the product specific script (emagent-cleanup.sh in our example). Hence, all product specific cleanup actions will be done. For example, the used-at-product-install parameter values will be replaced by placeholders in the product configuration files. The JeOS script cleans up the OS log files in /var/log, removes the systemid from up2date configuration file, cleans up the yum caches, DHCP client caches, the root user's ssh configuration file and bash history files, removes etc/resolv.conf, resets /etc/hostnames to default, resets network configuration to DHCP, and, finally, shuts down network service. Enable 'oraclevm-template' service # oraclevm-template -enable This will make the template ready for the first boot, i.e. will set the sysconfig flag /RUN_TEMPLATE_CONF/ to /YES/.
Step 9 Example: Oracle Enterprise Manager Agent Template Clean Up The Disk Image
17
Copy the virtual machine directory from Oracle VM Server back to the machine where JeOS kit is installed Replace the modified vm.cfg file by the original vm.cfg created by JeOS Zero out the free space in the image files Archive the template
Step 10 Example: Oracle Enterprise Manager Agent Template Package the Template
To package the template, you need a root access to Oracle VM server Shutdown the virtual machine via OVM Manager UI.
Do remote copy of the entire <VM ID>emagent directory content including vm.cfg, vm.cfg.orig, System.img and Emagent.img back to environment where JeOS kit is installed. In our example that was OEL 5.2 virtual machine. From any directory in this virtual, issue
#cd OVM_EL5U2_X86_EMAGENT_PVM
Replace the vm.cfg file generated by OVM manager by the original vm.cfg file created by JeOS. The vm.cfg generated by JeOS is the more generic template vm.cfg file and thus does not contain the MAC address that is specific to the VM you created for development purposes.
# cp /var/www/html/emagent_templ/vm.cfg vm.cfg
18
Zero out image file content: #modifyjeos f System.img zero-out-all This command will automatically mount all other images that are part of a template
#cp --sparse=always System.img System.img.sparse #mv System.img.sparse System.img #cp -sparse=always Emagent.img Emagent.img.sparse #mv Emagent.img.sparse Emagent.img #cd ..
OVM_EL5U2_X86_EMAGENT_PVM
Conclusion
Packaging software as Oracle VM Templates simplifies the product deployment process, saves time, and improves the end-user's experience. With Oracle VM Templates, developers can deliver best practices for software deployment while not restricting users to rigid configurations. For a broader discussion of Oracle VM Templates, refer to the Creating and Using Oracle VM Templates: The Fastest Way to Deploy Any Enterprise Software white paper. Also, visit oracle.com/virtualization for more information about Oracle VM.
19
APPENDIX A
Source Code for Agent Template Reconfiguration Script, /u01/emagent-reconfig.sh #!/bin/bash
# oms_connection function interactively collects user's input for # OMS hostname, ip address, password, and port numbers oms_connection () {
# ask for oms connection information. echo echo "Provide Management Service hostname" while true; do # oms hostname while true; do echo -n "Enter OMS hostname: " read oms_hostname if [ -z $oms_hostname ]; then continue
20
fi break done # if can not resolve the hostname, then request IP address if ! ping -c 3 $oms_hostname >/dev/null 2>&1; then echo "*Can not resolve hostname $oms_hostname." while true; do echo -n "Enter OMS IP address: " read oms_ip if [ -z $oms_ip ]; then continue fi break done fi if [ ! -z $oms_ip ]; then oms_host=$oms_ip else oms_host=$oms_hostname fi # oms port echo -n "Enter OMS port: [4889] " read oms_port if [ -z "$oms_port" ]; then oms_port=4889 fi # test connection if ! nc -w 3 -z $oms_host $oms_port >/dev/null; then
21
echo "*Can NOT connect to $oms_host:$oms_port, please enter OMS information again." oms_ip= continue else OMS_HOST=$oms_hostname OMS_PORT=$oms_port if [ ! -z "$oms_ip" ]; then /bin/cp -f /etc/hosts /etc/hosts.orabak$$ sed -i "/^$oms_ip/d" /etc/hosts echo "$oms_ip $OMS_HOST ${OMS_HOST%%.*}" >> /etc/hosts fi fi break done
# enter password echo echo "Provide the Agent Registration password so that the Management Agent can communicate with Secure Management Service." while true; do echo -n "Enter Agent Registration Password: " stty -echo read secure_passwd stty echo echo if [ -z $secure_passwd ]; then continue fi break
22
done SECURE_PASSWD=$secure_passwd }
# ovm_configure_network function is part of JeOS function library # this function interactively collects user's input for the # virtual machine network configuration: IP address, hostname, # gateway,netmask, DNS ovm_configure_network
AGENT_HOME=/u01/app/oracle/product/agent10g
# replace the placeholder values by the actual OMS hostname, port and virtual machine hostname in emd.properties
23
sed -i "/^emdWalletSrcUrl/s|%OMS_HOST%|$OMS_HOST|" $AGENT_HOME/sysman/config/emd.properties sed -i "/^emdWalletSrcUrl/s|%OMS_PORT%|$OMS_PORT|" $AGENT_HOME/sysman/config/emd.properties sed -i "/^REPOSITORY_URL/s|%OMS_HOST%|$OMS_HOST|" $AGENT_HOME/sysman/config/emd.properties sed -i "/^REPOSITORY_URL/s|%OMS_PORT%|$OMS_PORT|" $AGENT_HOME/sysman/config/emd.properties sed -i "/^EMD_URL/s|%HOSTNAME%|$(hostname)|" $AGENT_HOME/sysman/config/emd.properties # Reconfiguration of Oracle EM agent is done
# secure Oracle EM agent echo echo "Securing Agent..." su oracle -c "$AGENT_HOME/bin/emctl secure agent $SECURE_PASSWD"
24
/etc/init.d/gcstartup start
# create startup script at runlevel 3 5 ln -sf /etc/rc.d/init.d/gcstartup /etc/rc.d/rc3.d/S99gcstartup ln -sf /etc/rc.d/init.d/gcstartup /etc/rc.d/rc5.d/S99gcstartup
# set env variable for user 'oracle' cat >> /home/oracle/.bash_profile <<-EOF
# set environment variables AGENT_HOME=$AGENT_HOME ORACLE_HOME=\$AGENT_HOME JAVA_HOME=\$ORACLE_HOME/jdk PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH EM_SECURE_VERBOSE=1 export ORACLE_HOME AGENT_HOME JAVA_HOME EM_SECURE_VERBOSE PATH alias cdo='cd \$ORACLE_HOME' EOF
25
APPENDIX B
Source Code for Agent Template Reconfiguration Script, /u01/emagent-cleanup.sh
#!/bin/bash
AGENT_HOME=/u01/app/oracle/product/agent10g/
# substitute the parameter values by place holders sed -i \ -e '/^REPOSITORY_URL=/s|=.*|=http://%OMS_HOST%:%OMS_PORT%/em/upload|' \ -e '/^emdWalletSrcUrl=/s|=.*|=http://%OMS_HOST%:%OMS_PORT%/em/wallets/emd|' \ -e '/^EMD_URL/s|=.*|=https://%HOSTNAME%:3872/emd/main/|' \ $AGENT_HOME/sysman/config/emd.properties
26
Oracle VM Template Developers Guide February 2009 Author: Tatyana Bagerman Contributing Authors: Wiekus Beukes, Frank Deng, Van Okamura Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. Worldwide Inquiries: Phone: +1.650.506.7000 Fax: +1.650.506.7200 oracle.com 0109 Copyright 2009, Oracle and/or its affiliates. All rights reserved. This document is provided for information purposes only and the contents hereof are subject to change without notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document and no contractual obligations are formed either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without our prior written permission.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.