Oracle Database 10gR2 (10.2.0.3 and higher patches) Single Instance (not RAC) is certified with Solaris 10 ZFS on SPARC 64-bit. Please read Solaris ZFS_Best_Practices_Guide. You may need to limit ARC cache.
Skip to content, navigation.
Oracle Database 10gR2 (10.2.0.3 and higher patches) Single Instance (not RAC) is certified with Solaris 10 ZFS on SPARC 64-bit. Please read Solaris ZFS_Best_Practices_Guide. You may need to limit ARC cache.
Configuration example of Oracle ASM in Solaris Container.
In this post I will give you a tip on how to setup Oracle ASM in Solaris Container. The main point of container's configuration is to set proper privileges. Your container should have proc_priocntl (must) and proc_lock_memory (highly recommended) privileges in order to function properly with ASM in it. Use the following as an configuration example when creating container and adjust it for your needs. Please read comments inlined:
create
# container will be named zone1
# make sure that directory /zones exist and have permissions 700
set zonepath=/zones/zone1
set autoboot=true
set limitpriv=default,proc_priocntl,proc_lock_memory
set scheduling-class="FSS"
set max-shm-memory=16G
# use ip-type exclusive at your wish, non-exclusive is also possible
set ip-type=exclusive
add net
set physical=e1000g1
end
add fs
set dir=/usr/local
# make sure /opt/zone1/local exist
set special=/opt/zone1/local
set type=lofs
end
add fs
# mount /distro from global zone into container.
# I have Oracle distribution files there
set dir=/distro
set special=/distro
set type=lofs
add options [ro]
end
# this device will be used for ASM inside container
add device
set match=/dev/rdsk/c4t600A0B8000562790000005D04998C446d0s0
end
# permit to use 16 cpu within container
add dedicated-cpu
set ncpus=16-16
end
verify
commit
Put this confing into zone1.txt and edit this file to adjust your configuration. Then create, install and boot container.
# zonecfg -z zone1 -f zone1.txt
# zoneadm -z zone1 install
# zoneadm -z zone1 boot
When you are done login to newly created container and proceed with installing Oracle and configuring ASM.
Tips:
Since I have dual-FC connected 6140 array I have it configured with Solaris I/O multipathing feature enabled
# stmsboot -D fp -e
I really like to use VNC to access my lab remotely
When you are creating Oracle Database using templates/examples from the Oracle Database distribution you may fail with ORA-00018: maximum number of sessions exceeded. This can happen on a systems with Niagara chip. It seems that it have too many CPUs (virtual ones). Quick workaround is to turn off most of them at this time:
# psradm -f 16-255
Then create database and turn them back.
# psradm -n 16-255
Your system may have not so many (256) vCPUs. I faced the same problem with 64 vCPU and solution works for me.
The same trick works for Oracle Application Server reporting ORA-00371: not enough shared pool memory. Confirmed by Alexey, such trick is working.
Update: Glenn Fawcett offers another solution, suggesting to set CPU_COUNT on systems that have large number of vcpu's.
The following system will be used in this example: Sun T5220 with attached 6140 array, Solaris 10 (10/08) and Oracle 11.
Briefly, Oracle Database installation steps can be performed as five separate steps:
Install Oracle binaries only
Install Oracle patchset
Configuring ASM
Configuring Listener
Database Creation
“Best Practices for Running Oracle Databases in Solaris Containers” now available on Sun/BluePrints site. This document describes Solaris Containers features for using with Oracle databases. You will learn how to setup Container and assign resources to it (scheduler, CPU and memory capping). It tells you which privilege gives you ability to use Dynamic Intimate Shared Memory (DISM) with Oracle. You may find how to setup Container so it will have it's own IP stack. Mounting UFS and ZFS filesystems, devices in Containers and System V Resource Controls also covered.
Summary
Solaris Containers provide a very flexible and secure method of managing multiple applications on a single Solaris OS instance. Solaris Containers use Solaris Zones software partitioning technology to virtualize the operating system and provide isolated and secure runtime environments for applications. Solaris Resource Manager can be used to control resource usage, such as capping memory and CPU usage,helping to ensure workloads get required system resources. By utilizing Solaris containers, multiple applications, or even multiple instances of the same application, can securely coexist on a single system, providing potential server consolidation savings.
Oracle 9i R2 and 10g R2 databases have been certified to run in a Solaris container. This paper provides step-by-step directions for creating a non-global zone in a Solaris container that is appropriate for running a non-RAC Oracle database. In addition, it describes special considerations that apply when running an Oracle database within a Solaris container.
This blog copyright 2009 by Roman Ivanov