Install Oracle Database 10g R2 On Linux
Install Oracle Database 10g R2 On Linux
Install Oracle Database 10g R2 On Linux
Contents
1. Overview
2. Hardware Overview
3. Install the Linux Operating System
4. Install Required Linux Packages for Oracle
5. Disk Configuration
6. Operating System Configuration
7. Network Configuration
8. Create "oracle" User and Directories
9. Download the Oracle Database 10g Release 2 Software
10. Pre-Installation Tasks
11. Install the Oracle Database 10g Release 2 Software
12. Install the Oracle Database 10g Companion CD Release 2 Software
13. Apply the 10.2.0.3 Database Patchset
14. Configure Oracle Networking
15. Create the Oracle Database
16. Post-Installation Tasks
17. Creating / Altering Tablespaces
18. Setting up Automatic Database Starting and Stopping
19. Miscellaneous Options
20. About the Author
Overview
This article is a comprehensive guide for installing Oracle Database 10g Release 2 on the
Red Hat Enterprise Linux 5 (RHEL5) operating environment.
Please keep in mind that this article should not be considered a substitution for
completely reading and understanding the official installation guide and release notes
from Oracle. The following links can be used to download the official installation guides
for Oracle10g Release 2 (10.2.0):
Oracle Database Installation Guide 10g Release 2 (10.2) for Linux x86 - (B15660-02)
Oracle Database Quick Installation Guide 10g Release 2 (10.2) for Linux x86 -
(B28052-01)
Here is a short introduction to some of the configuration parameters that will be used for
installing the Oracle Database Software and creating a fully functional Oracle10g
database:
ORACLE_BASE : /u01/app/oracle
ORACLE_HOME : /u01/app/oracle/product/10.2.0/db_1
ORACLE_SID : TESTDB
By the time you finish this article, the following will be installed and configured:
Installing the Oracle Database software on a system that has an existing Oracle
software installation. The installation in this article describes installing the Oracle
Database 10g software on a system with no previous Oracle installation.
Installing Oracle Cluster Ready Services (CRS) and Oracle Real Application
Clusters (RAC) on a cluster. For a complete discussion on installing Oracle RAC
10g (using iSCSI for the shared storage), see my article "Building an Inexpensive
Oracle RAC 10g Release 2 on Linux - (CentOS 4.5 / iSCSI)".
Enabling Enterprise Manager e-mail notifications or automated backups.
Although this article is titled and introduced to work with Red Hat Enterprise Linux
5.1, I will actually be using a Red Hat Linux clone named CentOS. To read more
about about CentOS, please visit their website at www.centos.org. I will also
provide additional details about CentOS along with installation instructions later in
this article.
Hardware Overview
For the purpose of this document, I will be utilizing a Pentium 4 (32-bit Clone) running
CentOS Release 5.1. The Pentium 4 server will consist of three 36GB internal disks and
1GB of RAM. The first hard disk (/dev/sda) will be used to store the Linux operating
system while the second hard disk (/dev/sdb) will be used to store the Oracle Database
software. Finally, the third hard disk (/dev/sdc) will be used for all physical database
files (data files, control files, online redo log files, flash recovery area)
/dev/sdc
After discussing the hardware being utilized for this article, I end this section by
describing how each of the disks will be used for the database software installation and
database:
This section provides a summary of the screens used to install the Linux operating
system. As already mentioned, this article will use CentOS 5.1. Although I have used Red
Hat Fedora and Red Hat Enterprise Linux in the past, I wanted to switch to a Linux
environment that would guarantee all of the functionality contained with Oracle. This is
where CentOS comes in. The CentOS Project takes the Red Hat Enterprise Linux 5
source RPMs, and compiles them into a free clone of the Red Hat Enterprise Server 5
product. This provides a free and stable version of the Red Hat Enterprise Linux 5
(AS/ES) operating environment that I can now use for testing different Oracle
configurations. I have moved away from Fedora as I need a stable environment that is not
only free, but as close to the actual Oracle supported operating system as possible. While
CentOS is not the only project performing the same functionality, I tend to stick with it as
it is stable and reacts fast with regards to updates by Red Hat.
Downloading CentOS
Use the links (below) to download CentOS 5.1. After downloading CentOS, you will then
want to burn each of the ISO images to CD.
CentOS.org
If you are downloading the above ISO files to a MS Windows machine, there are
many options for burning these images (ISO files) to a CD. You may already be
familiar with and have the proper software to burn images to CD. If you are not
familiar with this process and do not have the required software to burn images to
CD, here are just two (of many) software packages that can be used:
UltraISO
Magic ISO Maker
Installing CentOS
This section provides a summary of the screens used to install CentOS. For more detailed
installation instructions, it is possible to use the manuals from Red Hat Linux
http://www.redhat.com/docs/manuals/. I would suggest, however, that the instructions I
have provided below be used for this Oracle 10g configuration.
After downloading and burning the CentOS images (ISO files) to CD, insert CentOS
Disk #1 into the database server (vmlinux1 in this example), power it on, and answer the
installation screen prompts as noted below.
Boot Screen
The first screen is the CentOS boot screen. At the boot: prompt, hit [Enter] to start the
installation process.
Media Test
When asked to test the CD media, tab over to [Skip] and hit [Enter]. If there were any
errors, the media burning software would have warned us. After several seconds, the
installer should then detect the video card, monitor, and mouse. The installer then goes
into GUI mode.
Welcome to CentOS
At the welcome screen, click [Next] to continue.
Language / Keyboard Selection
The next two screens prompt you for the Language and Keyboard settings. Make the
appropriate selection for your configuration and click [Next] to continue.
Detect Previous Installation
Note that if the installer detects a previous version of CentOS, it will ask if you would like
to "Install CentOS" or "Upgrade an existing Installation". Always select to "Install
CentOS".
Disk Partitioning Setup
If prompted to initialize any of the drives (i.e. the partition table on device /dev/sdX was
unreadable), click [Yes] to acknowledge the warning. Keep the default selection to
[Remove linux partitions on selected drives and create default layout] and check the
option to [Review and modify partitioning layout].
Note: When the installer detects multiple initialized drives, it will check all of them to be
used for the Linux installation. For this installation, I only want to install the Linux
software on the first hard disk (/dev/sda) so I will keep it selected (checked). Uncheck all
other drives that the installer selected which for my installation was /dev/sdb and
/dev/sdc. I will manually partition and create a file system for /dev/sdb and /dev/sdc later
in this article.
You will then be prompted with a dialog window asking if you really want to remove all
partitions. Click [Yes] to acknowledge this warning.
Partitioning
The installer will then allow you to view (and modify if needed) the disk partitions it
automatically selected.
For most automatic layouts, the installer will choose 100MB for /boot, double the
amount of RAM (systems with < 2GB RAM) or an amount equal to RAM (systems with >
2GB RAM) for swap, and the rest going to the root (/) partition. Starting with EL 4, the
installer will create the same disk configuration as just noted but will create them using
the Logical Volume Manager (LVM). For example, it will partition the first hard drive
(/dev/sda for my configuration) into two partitions — one for the /boot partition
(/dev/sda1) and the remainder of the disk dedicate to a LVM named VolGroup00
(/dev/sda2). The LVM Volume Group (VolGroup00) is then partitioned into two LVM
partitions - one for the root filesystem (/) and another for swap.
The main concern during the partitioning phase is to ensure enough swap space is
allocated as required by Oracle (which is a multiple of the available RAM). The
following is Oracle's requirement for swap space:
For the purpose of this install, I will accept all automatically preferred sizes. (Including
2GB for swap since I have 2GB of RAM installed.)
If for any reason, the automatic layout does not configure an adequate amount of swap
space, you can easily change that from this screen. To increase the size of the swap
partition, [Edit] the volume group VolGroup00. This will bring up the "Edit LVM Volume
Group: VolGroup00" dialog. First, [Edit] and decrease the size of the root file system (/)
by the amount you want to add to the swap partition. For example, to add another
512MB to swap, you would decrease the size of the root file system by 512MB (i.e.
36,032MB - 512MB = 35,520MB). Now add the space you decreased from the root file
system (512MB) to the swap partition. When completed, click [OK] on the "Edit LVM
Volume Group: VolGroup00" dialog.
Finally, verify that no partitions or file systems exist for /dev/sdb and /dev/sdc. If any do
exist, click on the partition and [Delete] it so that the entire disk has a single free entry
with all "Free space" available. When all complete, the only partitions that should be
created are the two partitions on the first SCSI disk (/dev/sda1 and /dev/sda2) described
earlier in this section.
Once you are satisfied with the disk layout, click [Next] to continue.
First, make sure that the network device is checked to [Active on boot]. (This should
already be checked by the installer.)
Second, [Edit] eth0 as follows. Verify that the option "Enable IPv4 support" is selected.
Click off the option for "Use dynamic IP configuration (DHCP)" and configure a static
IP address and Netmask for your environment. Click off the option to "Enable IPv6
support". You may choose to use a different IP address for eth0 that I have documented in
this guide and that is OK. Ensure eth0 is configured for your public network:
eth0:
- Check ON the option to [Enable IPv4 support]
- Check OFF the option to [Use dynamic IP configuration (DHCP)] - (select Manual
configuration)
IPv4 Address: 192.168.1.111
Prefix (Netmask): 255.255.255.0
- Check OFF the option to [Enable IPv6 support]
Continue by manually setting your hostname. I used "vmlinux1" for the node. Finish this
dialog off by supplying your gateway and DNS servers.
This is where you pick the packages to install. Most of the packages required for the
Oracle software are grouped into "Package Groups" (i.e. Application -> Editors). Since
this node will be hosting the Oracle Database software, verify that at least the following
package groups are selected for install. Note that for many of the Linux package groups,
not all of the packages associated with that group get selected for installation. (Note the
"Optional packages" button after selecting a package group.) So although the package
group gets selected for install, some of the packages required by Oracle do not get
installed. In fact, there are some packages that are required by Oracle that do not belong
to any of the available package groups (i.e. libaio-devel). Not to worry. A complete list of
required packages for Oracle Database 10g will be provided at the end of this section.
These packages will need to be manually installed from the CentOS CDs after the
operating system install. For now, install the following package groups:
Desktop Environments
o GNOME Desktop Environment
Applications
o Editors
o Graphical Internet
o Text-based Internet
Development
o Development Libraries
o Development Tools
o Legacy Software Development
Servers
o Server Configuration Tools
Base System
o Administration Tools
o Base
o Java
o Legacy Software Support
o System Tools
o X Window System
In addition to the above packages, select any additional packages you wish to install for
this node. After selecting the packages to install click [Next] to continue.
About to Install
This screen is basically a confirmation screen. Click [Continue] to start the installation.
During the installation process, you will be asked to switch CDs depending on which
packages you selected to install.
Congratulations
And that's it. You have successfully installed CentOS on the database server. The installer
will eject the CD from the CD-ROM drive. Take out the CD and click [Reboot] to reboot
the system.
Post Installation Wizard Welcome Screen
When the system boots into CentOS for the first time, it will prompt you with another
Welcome screen for the "Post Installation Wizard". The post installation wizard allows
you to make final O/S configuration settings. On the "Welcome" screen, click [Forward]
to continue.
Firewall
On this screen, make sure to select the [Disabled] option and click [Forward] to
continue.
You will be prompted with a warning dialog about not setting the firewall. When this
occurs, click [Yes] to continue.
SELinux
On the SELinux screen, choose the [Disabled] option if you plan to use the Oracle
Cluster File System (OCFS2). For Oracle installations, I typically opt to disable
SELinux. Click [Forward] to continue.
You will be prompted with a warning dialog warning that changing the SELinux setting
will require rebooting the system so the entire file system can be relabeled. When this
occurs, click [Yes] to acknowledge a reboot of the system will occur after firstboot (Post
Installation Wizard) is completed.
Kdump
Accept the default setting on the Kdump screen (disabled) and click [Forward] to
continue.
Date and Time Settings
Adjust the date and time settings if necessary and click [Forward] to continue.
Create User
Create any additional (non-oracle) operating system user accounts if desired and click
[Forward] to continue. For the purpose of this article, I will not be creating any
additional operating system accounts. I will be creating the "oracle" user account during
the Oracle database installation later in this guide.
If you chose not to define any additional operating system user accounts, click
[Continue] to acknowledge the warning dialog.
Sound Card
This screen will only appear if the wizard detects a sound card. On the sound card screen
click [Forward] to continue.
Additional CDs
On the "Additional CDs" screen click [Finish] to continue.
Reboot System
Given I changed the SELinux option (to disabled), I am prompted to reboot the system.
Click [OK] to reboot the system for normal use.
Login Screen
After rebooting the machine, you are presented with the login screen. Login using the
"root" user account and the password you provided during the installation.
Although many of the required packages for Oracle were installed during the CentOS
installation, several will be missing either because they were considered optional within
the package group or simply didn't exist in any package group!
The packages listed in this section (or later versions) are required for Oracle Database
10g Release 2 running on the x86 (32-bit) CentOS 5.1 platform.
binutils-2.17.50.0.6-5
compat-db-4.2.52-5.1
compat-gcc-34-3.4.6-4
compat-gcc-34-c++-3.4.6-4
compat-libstdc++-33-3.2.3-61
gcc-4.1.2-14
gcc-c++-4.1.2-14
glibc-2.5-18
glibc-common-2.5-18
glibc-devel-2.5-18
libaio-0.3.106-3.2
libaio-devel-0.3.106-3.2
libgcc-4.1.2-14
libstdc++-4.1.2-14
libstdc++-devel-4.1.2-14
libXp-1.0.0-8.1
make-3.81-1.1
openmotif-2.3.0-0.3
setarch-2.0-1.1
sysstat-7.0.0-3
Ensure that libXp.rpm is installed. Note that this package is not installed by default
with the default RPM packages for Red Hat Enterprise Linux 5 and Oracle Linux 5
platforms. So, you must install it manually. For Red Hat Enterprise Linux 4, this file
is provided by the package xorg-x11-deprecated-libs, which is installed with
the default package installation, however, this is not the case for Red Hat Enterprise
Linux 5 and Oracle Linux 5.
To verify the libXp.rpm package is installed (which in case, mine are), run the
following command:
Each of the packages listed above can be found on CD #1, CD #2, or CD #3 on the
CentOS 5.1 CDs. While it is possible to query each individual package to determine
which ones are missing and need to be installed, an easier method is to run the rpm -Uvh
PackageName command from the three CDs as follows. For packages that already exist
and are up to date, the RPM command will simply ignore the install and print a warning
message to the console that the package is already installed.
Disk Configuration
As noted in the section "Hardware Overview", I discussed the disks that will be used for
the Linux operating system, the Oracle Database 10g Software installation, and the
physical database files. This section discusses the steps required to partition (and mount)
the two internal SCSI hard drives to be used by the Oracle software and database files.
Before using the second and third SCSI hard disk, we need to first partition the disks and
then create a file system (ext3) on them. After partitioning and creating the file system,
each of the disks will need to be mounted.
The Linux operating system was installed on the first disk /dev/sda. The second hard
disk (/dev/sdb) will be used to store the Oracle Database 10g Software and mounted to
the directory /u01. The third internal SCSI disk (/dev/sdc) will be used to store the
physical database files and mounted to the directory /u02.
The steps in this section are completely optional as it is possible to simply create
the directories required for installing the Oracle Database 10g software and
database files off of the root directory (i.e. mkdir /u01 /u02). For the sake of
simplicity, this is often done in test environments but however is not recommended
as a general practice.
# [ LOGIN AS ROOT ]
# su -
# [ CREATE NEW EXT3 FILE SYSTEM ON SECOND INTERNAL SCSI HARD DISK ]
# mkfs.ext3 -b 4096 /dev/sdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
4718592 inodes, 9436171 blocks
471808 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
288 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,
2654208,
4096000, 7962624
# [ CREATE NEW EXT3 FILE SYSTEM ON THIRD INTERNAL SCSI HARD DISK ]
# mkfs.ext3 -b 4096 /dev/sdc1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
4718592 inodes, 9436171 blocks
471808 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
288 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,
2654208,
4096000, 7962624
This section describes hardware/software requirements and the steps that should be
performed by the DBA as it relates to the Linux operating system before performing the
Oracle Database 10g software installation. The following steps need to be performed as
the root user account.
Login as root
% su -
RAM Memory
Swap Space
The following is Oracle's requirement for swap space:
Available RAM Swap Space Required
Between 1 GB and 2 GB 1.5 times the size of RAM
Between 2 GB and 8 GB Equal to the size of RAM
More than 8 GB .75 times the size of RAM
(An inadequate amount of swap during the installation will cause the Oracle Universal
Installer to either "hang" or "die")
As root, make a file that will act as additional swap space, let's say about 500MB:
# dd if=/dev/zero of=tempswap bs=1k count=500000
Finally we format the "partition" as swap and add it to the swap space:
# mke2fs tempswap
# mkswap tempswap
# swapon tempswap
Ensure enough disk space in the /tmp directory. An amount of disk space equal to 400
MB (or greater) needs to be available for the Oracle Database installation.
To check the amount of free disk available in the /tmp directory, type:
# df -h /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
33G 2.7G 29G 9% /
If 1 GB or more is not available in /tmp, you can create a "tmp" directory in
another file system, then set the environment variables TMP (used by Oracle) and
TMPDIR (used by operating system programs like the linker "ld" and library
archiver "ar") to point to this location. For example:
# mkdir /u01/app/oracle/tmp
# TEMP=/u01/app/oracle/tmp; export TEMP
# TMPDIR=/u01/app/oracle/tmp; export TMPDIR
This section documents the checks and modifications to the Linux kernel that should be
made by the DBA to support Oracle Database 10g. Before detailing these individual
kernel parameters, it is important to fully understand the key kernel components that are
used to support the Oracle Database environment.
The kernel parameters and shell limits presented in this section are recommended values
only as documented by Oracle. For production database systems, Oracle recommends
that you tune these values to optimize the performance of the system.
Verify that the kernel parameters shown in this section are set to values greater than or
equal to the recommended values. Also note that when setting the four semaphore values
that all four values need to be entered on one line.
Shared Memory
Shared memory allows processes to access common structures and data by placing them
in a shared memory segment. This is the fastest form of Inter-Process Communications
(IPC) available - mainly due to the fact that no kernel involvement occurs when data is
being passed between the processes. Data does not need to be copied between processes.
Oracle makes use of shared memory for its Shared Global Area (SGA) which is an area
of memory that is shared by all Oracle backup and foreground processes. Adequate sizing
of the SGA is critical to Oracle performance since it is responsible for holding the
database buffer cache, shared SQL, access paths, and so much more.
# ipcs -lm
shmmax - Defines the maximum size (in bytes) for a shared memory segment.
The Oracle SGA is comprised of shared memory and it is possible that incorrectly
setting shmmax could limit the size of the SGA. When setting shmmax, keep in
mind that the size of the SGA should fit within one shared memory segment. An
inadequate shmmax setting could result in the following:
# cat /proc/sys/kernel/shmmax
4294967295
For most Linux systems, the default value for shmmax is 32MB. This size is often
too small to configure the Oracle SGA. The default value for shmmax in CentOS 5
is 4GB which is more than enough for the Oracle configuration described in this
article. Note that this value of 4GB is not the "normal" default value for shmmax in
a Linux environment — CentOS 5 inserts the following two entries in the file
/etc/sysctl.conf:
# cat /proc/sys/kernel/shmmni
4096
shmall - This parameter controls the total amount of shared memory (in pages)
that can be used at one time on the system. The value of this parameter should
always be at least:
ceil(SHMMAX/PAGE_SIZE)
# cat /proc/sys/kernel/shmall
268435456
For most Linux systems, the default value for shmall is 2097152 and is adequate
for most configurations. The default value for shmall in CentOS 5 is 268435456
(see above) which is more than enough for the Oracle configuration described in
this article. Note that this value of 268435456 is not the "normal" default value
for shmall in a Linux environment — CentOS 5 inserts the following two entries
in the file /etc/sysctl.conf:
# ipcs -ls
The following list describes the kernel parameters that can be used to change the
semaphore configuration for the server:
File Handles
When configuring the Linux server, it is critical to ensure that the maximum number of
file handles is large enough. The setting for file handles denotes the number of open files
that you can have on the Linux system.
Use the following command to determine the maximum number of file handles for the
entire system:
# cat /proc/sys/fs/file-max
102312
Oracle recommends that the file handles for the entire system be set to at least 65536.
You can query the current usage of file handles by using the following:
# cat /proc/sys/fs/file-nr
3072 0 102312
The file-nr file displays three parameters:
Total allocated file handles
Currently used file handles
# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
Networking Settings
With Oracle 9.2.0.1 and later, Oracle makes use of UDP as the default protocol on Linux
for inter-process communication (IPC), such as Cache Fusion and Cluster Manager buffer
transfers between instances within the RAC cluster.
Oracle strongly suggests to adjust the default and maximum receive buffer size
(SO_RCVBUF socket option) to 1MB and the default and maximum send buffer size
(SO_SNDBUF socket option) to 256KB.
The receive buffers are used by TCP and UDP to hold received data until it is read by the
application. The receive buffer cannot overflow because the peer is not allowed to send
data beyond the buffer size window. This means that datagrams will be discarded if they
don't fit in the socket receive buffer, potentially causing the sender to overwhelm the
receiver.
Use the following commands to determine the current buffer size (in bytes) of each of the
IPC networking parameters:
# cat /proc/sys/net/core/rmem_default
109568
# cat /proc/sys/net/core/rmem_max
131071
# cat /proc/sys/net/core/wmem_default
109568
# cat /proc/sys/net/core/wmem_max
131071
Oracle 10g Required Kernel Parameter Settings
Now let's review what has been covered thus far. The Oracle Database 10g
documentation defines the following parameters and limits that should be validated
before creating an Oracle database.
Parameter Recommended Value Default Value How to Check
shmmax 2147483648 33554432 cat /proc/sys/kernel/shmmax
shmmni 4096 4096 cat /proc/sys/kernel/shmmni
shmall 2097152 2097152 cat /proc/sys/kernel/shmall
shmmin 1 1 ipcs -lm | grep "min seg size"
If the current value for any parameter is higher than the value listed in this table, do
not change the value of that parameter.
Setting Kernel Parameters for Oracle
If the value of any kernel parameter is different to the recommended value, they will need
to be modified. For this article, I identified and provide the following values that will
need to be added to the /etc/sysctl.conf file which is used during the boot process.
Please note that prior to adding the following kernel parameter values to
/etc/sysctl.conf, I removed the two shared memory kernel parameters
(kernel.shmmax and kernel.shmall) put in by CentOS 5.
# +---------------------------------------------------------+
# | KERNEL PARAMETERS FOR ORACLE 10g |
# +---------------------------------------------------------+
# | Configure the kernel parameters for all Oracle Linux |
# | servers by setting shared memory and semaphores, |
# | setting the maximum amount of file handles, setting the |
# | networking parameters, and finally setting the IP local |
# | port range. |
# +---------------------------------------------------------+
# +---------------------------------------------------------+
# | SHARED MEMORY |
# +---------------------------------------------------------+
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
# +---------------------------------------------------------+
# | SEMAPHORES |
# | ---------- |
# | |
# | SEMMSL_value SEMMNS_value SEMOPM_value SEMMNI_value |
# | |
# +---------------------------------------------------------+
kernel.sem = 250 32000 100 128
# +---------------------------------------------------------+
# | FILE HANDLES |
# ----------------------------------------------------------+
fs.file-max = 65536
# +---------------------------------------------------------+
# | LOCAL IP RANGE |
# ----------------------------------------------------------+
net.ipv4.ip_local_port_range = 1024 65000
# +---------------------------------------------------------+
# | NETWORKING |
# ----------------------------------------------------------+
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
After adding the above lines to the /etc/sysctl.conf file, they persist each time the
system reboots. If you would like to make these kernel parameter value changes to the
current system without having to first reboot, enter the following command:
# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
Review the output from the above command and verify that the values are correct. If the
values are not correct, edit the /etc/sysctl.conf to correct the values, re-run the
sysctl -p command and verify the values.
To improve the performance of the software on Linux systems, Oracle recommends you
increase the following shell limits for the oracle user:
Shell Limit Item in limits.conf Hard Limit
Maximum number of open file descriptors nofile 65536
Maximum number of processes available to a single user nproc 16384
During the Linux installation process, I indicated to not configure the firewall option. (By
default the option to configure a firewall is selected by the installer.) I like to do a double-
check that the firewall option is not configured and to ensure udp ICMP filtering is turned
off.
1. Check to ensure that the firewall option is turned off. If the firewall option is
stopped (like it is in my example below) you do not have to proceed with the
following steps.
2. # /etc/rc.d/init.d/iptables status
Firewall is stopped.
3. If the firewall option is operating you will need to first manually disable UDP
ICMP rejections:
4. # /etc/rc.d/init.d/iptables stop
5.
6. Flushing firewall rules: [ OK ]
7. Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
8. Then, to turn UDP ICMP rejections off for next server reboot (which should
always be turned off):
Network Configuration
During the Linux operating system install we already configured the IP address and host
name for the database node. We now need to configure the /etc/hosts file.
Note that the Oracle database server should have a static IP address configured for the
public network (eth0 for this article). Do not use DHCP naming for the public IP
address; you need a static IP address!
Ensure that the node name (vmlinux1) is not included for the loopback address in the
/etc/hosts file. If the machine name is listed in the in the loopback address entry as
below:
127.0.0.1 vmlinux1 localhost.localdomain localhost
it should be removed as shown below:
127.0.0.1 localhost.localdomain localhost
Remove any entry that has to do with IPv6 (for example, ::1
localhost6.localdomain6 localhost6).
This section covers the steps required to create the UNIX groups (oinstall, dba, and
oper) and user (oracle) that will be used to install the Oracle Database 10g software.
Note that members of the UNIX group oinstall are considered the "owners" of the
Oracle software. Members of the dba group can administer Oracle databases, for example
starting up and shutting down databases. In this article, we are creating the oracle user
account to have both responsibilities!
The UNIX group oinstall is used by organizations that have separate teams responsible
for maintaining the Oracle software and the database(s). In situations like this, the group
membership prevents unauthorized access to the database by personal who only maintain
the Oracle software. At the same time, it also prevents database administrators from
making modifications to the database software and the installation's Inventory directory.
The Oracle documentation uses the following definitions when describing the UNIX
groups:
The thing to keep in mind is that the UNIX oinstall group is completely optional and is
not required if the same individuals will be maintaining the software and the database.
Some consider it unnecessary work which adds another layer of complexity to the
maintenance of the installation. In this type of scenario, all that would be required is the
UNIX group dba (and assigning dba as the primary UNIX group for the "oracle" user
account).
This article (along with other Oracle installation guides on this site) adhere to the Optimal
Flexible Architecture (OFA) and create both the oinstall and dba UNIX groups.
This guide adheres to the Optimal Flexible Architecture (OFA) for naming
conventions used in creating the directory structure.
Lets start this section by creating the UNIX oinstall and dba group and oracle user
account:
# groupadd -g 501 oinstall
# groupadd -g 502 dba
# groupadd -g 503 oper
# useradd -m -u 501 -g oinstall -G dba,oper -d /home/oracle -s /bin/bash
-c "Oracle Software Owner" oracle
# id oracle
uid=501(oracle) gid=501(oinstall)
groups=501(oinstall),502(dba),503(oper)
Set the password for the oracle account:
# passwd oracle
Changing password for user oracle.
New UNIX password: xxxxxxxxxxx
Retype new UNIX password: xxxxxxxxxxx
passwd: all authentication tokens updated successfully.
Before installing the Oracle software, complete the following procedure to verify that the
user nobody exists on the system:
1. To determine if the user exists, enter the following command:
2. # id nobody
uid=99(nobody) gid=99(nobody) groups=99(nobody)
If this command displays information about the nobody user, then you do not
have to create that user.
3. If the user nobody does not exist, then enter the following command to create it:
# /usr/sbin/useradd nobody
The next step is to create a new directory that will be used to store the Oracle Database
software. When configuring the oracle user's environment (later in this section) we will
be assigning the location of this directory to the $ORACLE_BASE environment variable.
After the directory is created, you must then specify the correct owner, group, and
permissions for it.
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
Let's now create the directory that will be used to store the Oracle database files and
backup files (on the /u02 file system):
# mkdir -p /u02/oradata
# chown oracle:oinstall /u02/oradata
# chmod 775 /u02/oradata
# mkdir -p /u02/flash_recovery_area
# chown oracle:oinstall /u02/flash_recovery_area
# chmod 775 /u02/flash_recovery_area
To ensure that the environment is setup correctly for the "oracle" UNIX user account,
use the following .bash_profile:
Login to the database server as the oracle user account:
# su - oracle
.bash_profile for Oracle User
# .bash_profile
export JAVA_HOME=/usr/local/java
export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/dba_scripts/common/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
export NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
The next logical step is to install Oracle Database 10g Release 2 (10.2.0.1.0) and
optionally the Companion CD Release 2 (10.2.0.1.0) for Linux x86 software. However,
we must first download and extract the required Oracle software packages from the
Oracle Technology Network (OTN).
If you do not currently have an account with Oracle OTN, you will need to create
one. This is a FREE account!
In this section, we will be downloading and extracting the required software from Oracle
to the database server. Login to the database server as the "oracle" user account. In this
article, I will be downloading the required Oracle software to vmlinux1 and saving it to
"~oracle/orainstall".
Download the Oracle Database 10g Release 2 (10.2.0.1.0) Software for Linux x86.
Next, download the Oracle Database 10g Companion CD for Linux x86. This can be
downloaded from the same page used to download the Oracle Database software:
As the "oracle" user account, extract the two packages you downloaded to a temporary
directory. In this example, I will use "~oracle/orainstall".
# su - oracle
$ mkdir -p ~oracle/orainstall
$ cd ~oracle/orainstall
$ unzip 10201_database_linux32.zip
$ cd ~oracle/orainstall
$ unzip 10201_companion_linux32.zip
Pre-Installation Tasks
This section contains the mandatory tasks that need to be completed before install the
Oracle Database 10g software.
One of the first checks performed by the Oracle Universal Installer (OUI) is to determine
if the host platform is supported. The OUI uses the file /etc/redhat-release to
determine the platform. For the case of Red Hat Enterprise Linux, Oracle Database 10g
Release 2 expects either RHEL 3 or RHEL/OL 4. The OUI will immediately fail if it
doesn't recognize either of these two platforms:
$ /home/oracle/orainstall/database/runInstaller
Exiting Oracle Universal Installer, log for this session can be found at
/tmp/OraInstall2008-01-08_06-06-36PM/installActions2008-01-08_06-06-
36PM.log
The easiest way to get around this error is to modify the /etc/redhat-release file
replacing the current release information (CentOS release 5 (Final)) with the
following:
redhat-4
Before modifying /etc/redhat-release, make a backup copy of the file and ensure to
replace the original one after the Oracle installation and patch process has been
completed.
$ su -
# cp /etc/redhat-release /etc/redhat-release.original
# echo "redhat-4" > /etc/redhat-release
We are now ready to install the Oracle Database 10g Release 2 software. This section will
provide the steps necessary to configure the database server to successfully run the
Oracle Universal Installer (OUI).
For the purpose of this example, we will forgo the "Create Database" option when
installing the Oracle Database software. We will, instead, create the database using
the Database Configuration Assistant (DBCA) after all of the software and patches
have been installed.
Beginning with Oracle version 8i, the Oracle Universal Installer (OUI) is a Java
application and uses a JRE (Java runtime Environment) shipped on the media. Other Java
applications that utilize the JRE are the Database Configuration Assistant and the Oracle
Net Assistant. The JRE shipped by Oracle is the only one supported to run with these
applications. Installations can no longer be performed using character mode.
You must install the Oracle database software from an X windows workstation, an
X terminal, or a PC or other system with X server software installed.
Before starting the Oracle Universal Installer, you should first verify you are logged onto
the server you will be running the installer from (i.e. vmlinux1) then run the xhost +
command as root from the console to allow X Server connections.
Next, login as the oracle user account. If you are using a remote client to connect to the
node performing the installation (SSH or Telnet to vmlinux1 from a workstation
configured with an X Server), you will need to set the DISPLAY variable to point to your
local workstation:
# hostname
vmlinux1
# xhost +
access control disabled, clients can connect from any host
# su - oracle
In most cases, you will have the minimum required swap space (as
shown above) and this can be safely ignored. Simply click the check-
box for "Checking available swap space requirements..." and click
Next to continue.
Select the UNIX groups that will be used for each of the Oracle group
names as follows:
Privileged Operating
System Groups
Database Administrator (OSDBA) Group: dba
Database Operator (OSOPER) Group: oper
Select the option to Install database Software only.
Create Database
Remember that we will create the database as a separate step using
DBCA.
Summary Click Install to start the installation!
After the installation has completed, you will be prompted to run the
orainstRoot.sh and root.sh script. Open a new console window as the
"root" user account.
After running the root.sh script go back to the OUI and acknowledge
the "Execute Configuration scripts" dialog window.
End of installation At the end of the installation, exit from the OUI.
The last screen of a successful Oracle Database 10g Release 2 installation is the "End of
Installation" screen. The OUI provides you with several URLs that will be activated by
the OUI:
The following J2EE Applications have been deployed and are accessible
at the URLs listed below.
iSQL*Plus URL:
http://vmlinux1:5560/isqlplus
After successfully installing the Oracle Database software, the next step is to install the
Oracle Database 10g Companion CD Release 2 software (10.2.0.1.0).
Please keep in mind that this is an optional step. For the purpose of this article, my testing
database will often make use of the Java Virtual Machine (Java VM) and Oracle
interMedia and therefore will require the installation of the Oracle Database 10g
Companion CD. The type of installation to perform will be the Oracle Database 10g
Products installation type.
This installation type includes the Natively Compiled Java Libraries (NCOMP) files to
improve Java performance. If you do not install the NCOMP files, the "ORA-
29558:JAccelerator (NCOMP) not installed" error occurs when a database that uses
Java VM is upgraded to the patch release.
Login as the oracle User Account and Set DISPLAY (if necessary)
As discussed in the previous section, (Install Oracle Database 10g Software), the
terminal shell environment needs to run an X Windows application as the "oracle" user
account. Note that you can utilize the same terminal shell session used in the previous
section which in this case, you do not have to take any of the actions described below
with regards to setting the DISPLAY variable:
# su - oracle
It has been reported that for users who installed the 10g Apache server standalone
from the Companion CD on CentOS 5 (which is not discussed in this article), elicits
the following error from the configuration assistant:
libdb.so.2: cannot open shared object file
A workaround was posted on an Oracle forum and consists of the following tasks:
1. As root, create the following symbolic link:
ln -s /usr/lib/libgdbm.so.2.0.0 /usr/lib/libdb.so.2
2. Change the permissions in the libdb.so.2 file:
3. chmod 755 /usr/lib/libgdbm.so.2.0.0
chmod 755 /usr/lib/libdb.so.2
4. Re-execute the Configuration Assitant.
At the time of this writing, the latest patchset for Oracle Database 10g Release 2 running
on Linux x86 (32-bit) is 10.2.0.3 (also known as patch 5337014).
The Oracle 10.2.0.3 patchset will need to be downloaded from the Oracle Metalink
website (http://metalink.oracle.com).
After logging in to the Oracle Metalink website, click on the "Patches & Updates" tab
on the top menu and use the following to download the correct database patchset:
1. On the "Patches & Updates" screen, select the link for Simple Search.
2. From the Simple Search screen, select the "Product or Family" option in the
Search By pull-down listing. In the text field to the right, enter "RDBMS Server".
3. In the Release option, select "Oracle 10.2.0.3".
4. For the Patch Type option, select "Patchset/Minipack".
5. Finally, for the Platform or Language option, select "Linux x86".
6. When all of the options are filled out, click the "Go" button.
7. This will bring up the available patchsets in the Results section. For the purpose
of this article, I will be downloading and installing patch: 5337014. Select this
patchset in the Results section and then click the Download button to start the
download process.
As the oracle user account, extract the patch file to a temporary directory:
$ id -a
uid=501(oracle) gid=501(oinstall)
groups=501(oinstall),502(dba),503(oper)
$ mkdir -p /home/oracle/orainstall/patches/database_10.2.0.3
$ mv p5337014_10203_LINUX.zip
/home/oracle/orainstall/patches/database_10.2.0.3
$ cd /home/oracle/orainstall/patches/database_10.2.0.3
$ unzip p5337014_10203_LINUX.zip
Login as the oracle User Account and Set DISPLAY (if necessary)
As discussed in the previous section, (Install the Oracle Database 10g Companion CD
Release 2 Software), the terminal shell environment needs to run an X Windows
application as the "oracle" user account. Note that you can utilize the same terminal shell
session used in the previous section which in this case, you do not have to take any of the
actions described below with regards to setting the DISPLAY variable:
# su - oracle
Once all processes running in the Oracle home directory have been stopped, we can now
start the patch installation process. To do this, run the OUI installer (runInstaller) out
of the directory where you extracted the patch set to as the oracle UNIX user account:
$ id -a
uid=501(oracle) gid=501(oinstall)
groups=501(oinstall),502(dba),503(oper)
$ cd ~oracle
$ /home/oracle/orainstall/patches/database_10.2.0.3/Disk1/runInstaller
Oracle 10.2.0.3 Patchset Installation Screen Responses
Screen Name Response
Welcome Screen Click Next
Set the destination for the ORACLE_HOME Name and Path to that of
the previous Oracle10g Database software install as follows:
Specify Home Details
Name: OraDb10g_home1
Path: /u01/app/oracle/product/10.2.0/db_1
Summary On the Summary screen, click Install to start the installation!
After the patch installation has completed, you will be prompted to run
the root.sh script. Open a new console window as the "root" user
account.
Root Script Window - Run root.sh Navigate to the /u01/app/oracle/product/10.2.0/db_1 directory and run
root.sh accepting all default values.
After running the root.sh script go back to the OUI and acknowledge
the "Execute Configuration scripts" dialog window.
End of installation At the end of the installation, exit from the OUI.
The Oracle Database 10g Release 2 Patch Set 2 has now been successfully applied!
During patch set installation, all new files and directories are created with restricted
access, by default. Users or third party applications with a different group identifier from
that of the database owner (dba and oper for example), which try to access client-side
utilities or libraries in the database home, will see permission errors when trying to access
these files or directories. Perform the following steps to change the permissions so that
groups other then just the database owner (for this example, the database owner is
oracle:oinstall) can access client-side utilities and libraries.
1. Change to the install directory by using the following command:
$ cd $ORACLE_HOME/install
2. Run changePerm.sh and specify the patched server Oracle home location, before
accessing client-side utilities or libraries in the database home. Please note that
this script may take several minutes to complete:
3. $ ./changePerm.sh
4.
5. ------------------------------------------------------------------
-------------
6. Disclaimer: The purpose of this script is to relax permissions on
some of the
7. files in the database Oracle Home so that all clients can access
them.
8. Please note that Oracle Corporation recommends using the most
restrictive file
9. permissions as possible for your given implementation. Running
this script
10. should be done only after considering all security
ramifications.
11. ----------------------------------------------------------------
---------------
12.
13. Do you wish to continue (y/n) [n]: y
14. Finished running the script successfully
Please see /tmp/changePerm_err.log for errors and
/tmp/changePerm.log for the log of events
The Database Configuration Assistant (DBCA) requires the Oracle TNS Listener process
to be configured and running on the database server before it can create the database.
Bring up the Network Configuration Assistant (NETCA) and run through the process of
creating a new TNS listener process and to also configure the node for local access.
The terminal shell environment needs to run an X Windows application as the "oracle"
user account. Note that you can utilize the same terminal shell session used in the
previous section which in this case, you do not have to take any of the actions described
below with regards to setting the DISPLAY variable:
# su - oracle
$ netca &
Oracle Network Configuration Installation Screen Responses
Screen Name Response
Welcome Select Listener configuration.
The following screens are now like any other normal listener
configuration. You can simply accept the default parameters for the next
six screens:
What do you want to do: Add
Listener Configuration Listener name: LISTENER
(Next 6 Screens) Selected protocols: TCP
Port number: 1521
Configure another listener: No
Listener configuration complete! [ Next ]
You will be returned to this Welcome (Type of Configuration) Screen.
Welcome Select Naming Methods configuration.
The following screens are:
Selected Naming Methods: Local Naming
Naming Methods Configuration
Naming Methods configuration complete! [ Next ]
You will be returned to this Welcome (Type of Configuration) Screen.
Welcome Click Finish to exit the NETCA.
Before executing the Database Configuration Assistant, make sure that $ORACLE_HOME
and $PATH are set appropriately for the $ORACLE_BASE/product/10.2.0/db_1
environment.
You should also verify that the Oracle TNS listener service is running before attempting
to start the database creation process.
Login as the oracle User Account and Set DISPLAY (if necessary)
As discussed in the previous section, the terminal shell environment needs to run an X
Windows application as the "oracle" user account. Note that you can utilize the same
terminal shell session used in the previous section which in this case, you do not have to
take any of the actions described below with regards to setting the DISPLAY variable:
# su - oracle
I used IDEVELOPMENT.INFO for the database domain. You may use any domain.
Keep in mind that this domain does not have to be a valid DNS domain.
Leave the default options here which is to Configure the Database with Enterprise
Management Option
Manager / Use Database Control for Database Management
I selected to Use the Same Password for All Accounts. Enter the password (twice) and
Database Credentials
make sure the password does not start with a digit number.
Storage Options For this article, we will select to use File System.
Select the option to use Use Oracle-Managed Files:
Database File Locations
Database Area: /u02/oradata
Check the option for Specify Flash Recovery Area. For this example, I will create a Flash
Recovery Area of 10GB.
Recovery Configuration
Flash Recovery Area: /u02/flash_recovery_area
Flash Recovery Area Size: 10240
I left all of the Database Components (and destination tablespaces) set to their default
Database Content value, although it is perfectly OK to select the Sample Schemas. This option is available
since we installed the Oracle Companion CD software.
Initialization Parameters Change any parameters for your environment. I left them all at their default settings.
Database Storage Change any parameters for your environment. I left them all at their default settings.
Keep the default option Create Database selected. I also always select to Generate
Database Creation Scripts. Click Finish to start the database creation process. After
acknowledging the database creation report and script generation dialog, the database
Creation Options creation will start.
When the Oracle Database Configuration Assistant has completed, you will have a fully
functional Oracle database running!
If you selected to configure Enterprise Manager during the database creation process, the
OUI will provide the URL. For example:
http://vmlinux1:1158/em
I like to review the log files that were created by the DBCA process. For the
purpose of the example in this article, my log files were created in
"/u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/dbca/TESTDB".
Post-Installation Tasks
This section contains several tasks that can be applied to your new Oracle 10g
environment in order to enhance availability as well as database management. Also
included are the steps required to restore the Red Hat Release File which was modified
earlier in this article.
Earlier in this article during the Pre-Installation Tasks section, we were required to
Modify the Red Hat Release File (/etc/redhat-release) in order for the Oracle
Universal Installer to detect a supported platform.
Prior to modifying the Red Hat Release File, we made a backup copy of the original file.
Given the Oracle database installation is now completed, we should now restore the
original version of this file:
$ su -
# cp /etc/redhat-release.original /etc/redhat-release
Ignore any messages indicating that the database contains invalid recycle bin
objects similar to the following:
BIN$4lzljWIt9gfgMFeM2hVSoA==$0
Oracle tracks and logs all changes to database blocks in online redolog files. An Oracle
instance (i.e. TESTDB) will have its own set of online redolog files known as a thread. The
Oracle instance (or thread) will use its group of online redologs in a circular manner.
Once an online redolog fills, Oracle moves to the next one. If the database is in "Archive
Log Mode", Oracle will make a copy of the online redo log before it gets reused. A thread
must contain at least two online redologs (or online redolog groups).
As already mentioned, Oracle writes to its online redolog files in a circular manner. When
the current online redolog fills, Oracle will switch to the next one. To facilitate media
recovery, Oracle allows the DBA to put the database into "Archive Log Mode" which
makes a copy of the online redolog after it fills (and before it gets reused). This is a
process known as archiving.
The Database Configuration Assistant (DBCA) allows users to configure a new database
to be in archive log mode, however most DBA's opt to bypass this option during initial
database creation. In cases like this where the database is in no archive log mode, it is a
simple task to put the database into archive log mode. Note however that this will require
a short database outage. Use the following tasks to put your new database into archive log
mode.
1. Login to the database server as the "oracle" user account and shutdown the
database:
2. $ id -a
3. uid=501(oracle) gid=501(oinstall)
groups=501(oinstall),502(dba),503(oper)
4.
5. $ sqlplus "/ as sysdba"
SQL> shutdown immediate
6. Next, MOUNT the database:
DBA's rely on Oracle's data dictionary views and dynamic performance views in order to
support and better manage their databases. Although these views provide a simple and
easy mechanism to query critical information regarding the database, it helps to have a
collection of accurate and readily available SQL scripts to query these views.
In this section you will download and install a collection of Oracle DBA scripts that can
be used to manage many aspects of your database including space management,
performance, backups, security, and session management. The Oracle DBA scripts
archive can be downloaded using the following link
http://www.idevelopment.info/data/Oracle/DBA_scripts/dba_scripts_archive_Oracle.zip.
As the oracle user account, download the dba_scripts_archive_Oracle.zip archive
to the $ORACLE_BASE directory. For the purpose of this example, the
dba_scripts_archive_Oracle.zip archive will be copied to /u01/app/oracle. Next,
unzip the archive file to the $ORACLE_BASE directory.
$ mv dba_scripts_archive_Oracle.zip /u01/app/oracle
$ cd /u01/app/oracle
$ unzip dba_scripts_archive_Oracle.zip
The final step is to verify (or set) the appropriate environment variable for the current
UNIX shell to ensure the Oracle SQL scripts can be run from SQL*Plus while in any
directory. For UNIX verify the following environment variable is set and included in your
login shell script:
ORACLE_PATH=ORACLE_PATH=$ORACLE_BASE/dba_scripts/common/sql:.:
$ORACLE_HOME/rdbms/admin
export ORACLE_PATH
Note that the ORACLE_PATH environment variable should already be set in the
.bash_profile login script that was created in the section Create Login Script for
oracle User Account.
Now that the Oracle DBA scripts have been unzipped and the UNIX environment
variable ($ORACLE_PATH) has been set to the appropriate directory, you should now be
able to run any of the SQL scripts in your $ORACLE_BASE/dba_scripts/common/sql
while logged into SQL*Plus. For example, to query tablespace information while logged
into the Oracle database as a DBA user:
SQL> @dba_tablespaces
========================================
Automatic Shared Memory Management
========================================
asmm_components.sql
========================================
Automatic Storage Management
========================================
asm_alias.sql
asm_clients.sql
asm_diskgroups.sql
asm_disks.sql
asm_disks_perf.sql
asm_drop_files.sql
asm_files.sql
asm_files2.sql
asm_templates.sql
< --- SNIP --- >
perf_top_sql_by_buffer_gets.sql
perf_top_sql_by_disk_reads.sql
========================================
Workspace Manager
========================================
wm_create_workspace.sql
wm_disable_versioning.sql
wm_enable_versioning.sql
wm_freeze_workspace.sql
wm_get_workspace.sql
wm_goto_workspace.sql
wm_merge_workspace.sql
wm_refresh_workspace.sql
wm_remove_workspace.sql
wm_unfreeze_workspace.sql
wm_workspaces.sql
When creating the Oracle database, we left all tablespaces set to their default size. If you
are using a large set of drives for database storage, you may want to make a sizable
testing database.
Below are several optional SQL commands for modifying and creating all tablespaces for
the test database.
NOTE: Please keep in mind that the database file names (OMF files) being listed in
these examples may differ from what the Oracle Database Configuration Assistant
(DBCA) creates for your environment. When working through this section, substitute the
data file names that were created in your environment where appropriate. The following
query can be used to determine the file names for your environment:
TABLESPACE_NAME FILE_NAME
---------------
---------------------------------------------------------
SYSAUX /u02/oradata/TESTDB/datafile/o1_mf_sysaux_3rbj68np_.dbf
SYSTEM /u02/oradata/TESTDB/datafile/o1_mf_system_3rbj5g8h_.dbf
TEMP /u02/oradata/TESTDB/datafile/o1_mf_temp_3rbj6f1s_.tmp
UNDOTBS1
/u02/oradata/TESTDB/datafile/o1_mf_undotbs1_3rbj61p7_.dbf
USERS /u02/oradata/TESTDB/datafile/o1_mf_users_3rbj6q3y_.dbf
$ sqlplus "/ as sysdba"
SQL> alter tablespace users add datafile size 1024m autoextend off;
Here is a snapshot of the tablespaces I have defined for my test database environment:
SQL> @dba_tablespaces
6 rows selected.
This section contains the recommended method defined by Oracle for automating
database startup and shutdown of Oracle10g and Oracle11g instances.
Once the instance is created, edit the /etc/oratab file setting the restart flag (the last
field) to "Y" for the instance you want to automatically startup and shutdown. For the
purpose of this example, the only instance defined in the /etc/oratab file is TESTDB:
/etc/oratab
...
TESTDB:/u01/app/oracle/product/10.2.0/db_1:Y
...
Next, create a text file named /etc/init.d/dbora as the root user, containing the
following:
/etc/init.d/dbora
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/u01/app/oracle/product/10.2.0/db_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
;;
esac
Note that the /etc/init.d/dbora script listed above may look a little different
from a similar one used for Oracle9i — most notably the omission of the
commands to start/stop the Oracle TNS listener process. As of Oracle 10g Release 2
the dbstart script includes the commands to automatically start/stop the listener.
Associate the dbora service with the appropriate run levels and set it to auto-start using
the following command:
Known Issues
The following known issue does not apply to this article since we applied the Oracle
10.2.0.3 patchset.
If you haven't patched the Oracle Database software, there is a documented bug with
Oracle 10g Release 2 where calling dbstart might result in the following error message:
Final Notes
The /etc/init.d/dbora script defined in this section uses the "su -" command to run
the Oracle scripts dbstart and dbshut:
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
(and...)
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
#
# Change the value of ORACLE to the login name of the
# oracle owner at your site.
#
ORACLE=oracle
PATH=${PATH}:$ORACLE_HOME/bin
HOST=`hostname`
PLATFORM=`uname`
export ORACLE_HOME PATH
#
if [ ! "$2" = "ORA_DB" ] ; then
if [ "$PLATFORM" = "HP-UX" ] ; then
remsh $HOST -l $ORACLE -n "$0 $1 ORA_DB"
exit
else
rsh $HOST -l $ORACLE $0 $1 ORA_DB
exit
fi
fi
#
case $1 in
'start')
$ORACLE_HOME/bin/dbstart $ORACLE_HOME
;;
'stop')
$ORACLE_HOME/bin/dbshut $ORACLE_HOME
;;
*)
echo "usage: $0 {start|stop}"
exit
;;
esac
#
exit
Note that this method relies on the presence of an RSH server, which requires additional
packages and configuration. The RSH server does not get installed by default on many
Linux distributions (and for good reason!).
Given the RSH server (and other r* packages) do not get installed by default, the DBA
would need to locate and install them before this method could be used:
I completely disagree with the recommendation to use rsh and prefer to stick with using
the su command method. Furthermore, using the rsh method can be problematic when
attempting to use it under Fedora Core 5 and Fedora Core 6 where rsh is deprecated.
Miscellaneous Options
This final section of the article contains several miscellaneous options that may be of use
to newcomers of Oracle10g.
During the database creation section, we asked for DBCA to create the Enterprise
Manager Database Console application. In almost all cases, the DBCA will
automatically start the OEM Database Console application. To check for the process, type
the following:
$ emctl status dbconsole
TZ set to US/Eastern
Oracle Enterprise Manager 10g Database Control Release 10.2.0.3.0
Copyright (c) 1996, 2006 Oracle Corporation. All rights reserved.
http://vmlinux1:1158/em/console/aboutApplication
Oracle Enterprise Manager 10g is running.
------------------------------------------------------------------
Logs are generated in directory
/u01/app/oracle/product/10.2.0/db_1/vmlinux1_TESTDB/sysman/log
If you recieve something similar to the above output, then OEM Database Console is
running. If you need to manually start this application, login as the UNIX oracle user
account and type the following:
$ emctl start dbconsole
TZ set to US/Eastern
Oracle Enterprise Manager 10g Database Control Release 10.2.0.3.0
Copyright (c) 1996, 2006 Oracle Corporation. All rights reserved.
http://vmlinux1:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 10g Database Control ............
started.
------------------------------------------------------------------
Logs are generated in directory
/u01/app/oracle/product/10.2.0/db_1/vmlinux1_TESTDB/sysman/log
The OEM DB Console application may take several minutes to start.
Once the DB Console application is up and running, point your web browser to
http://<Database_Server>:1158/em as in the following:
http://vmlinux1:1158/em
Login:
User Name: SYSTEM
Password: <The password you chose during installation>
Connect As: Normal
The emctl start dbconsole / emctl stop dbconsole commands can be placed
in the /etc/init.d/dbora script to be started and stopped when the database
server is cycled.
In some cases, you may have more than one database running on your single database
server. It is even possible to be using two different databases running on different releases
of the Oracle Database software. (i.e. Oracle 8.1.7, Oracle 9.2.0, and 10.2.0). For
example, you may have two database - ORA920 (using Oracle release 9.2.0) and TESTDB
(using Oracle release 10.2.0). Whatever the case may be, you need an efficient way to
modify your environment variables to switch between these two databases. This requires
you update environment variables like ORACLE_HOME, ORACLE_SID, PATH,
LD_LIBRARY_PATH, etc. Although this can be done manually at the command line, it can
get old real quick. Instead you can use a single command line script to switch between all
database environments declared in your /etc/oratab file.
If you have been following along with this article, the required scripts for switching your
Oracle database environment is already included (in /usr/local/bin). From the
command prompt, simply run the following:
$ . oraenv
ORACLE_SID = [ORA920] ? TESTDB
Notice that in the above example, we didn't just run the oraenv script, but rather, we
sourced it by using a dot followed by a space and then the script name oraenv. When
sourcing the oraenv script, it will prompt you for the ORACLE_SID, (defined in your
/etc/oratab file), you want to switch to. In the above example, if an entry exists for
TESTDB, then all required environment variables would be reset to access this database.
All articles, scripts and material located at the Internet address of http://www.idevelopment.info is the
copyright of Jeffrey M. Hunter and is protected under copyright laws of the United States. This document
may not be hosted on any other site without my express, prior, written permission. Application to host any
of the material elsewhere can be made by contacting me at [email protected].
I have made every effort and taken great care in making sure that the material included on my web site is
technically accurate, but I disclaim any and all responsibility for any loss, damage or destruction of data or
any other property which may arise from relying on it. I will in no case be liable for any monetary damages
arising from such loss, damage or destruction.
Last modified on
Sunday, 22-Jan-2012 00:29:41 EST
Page Count: 1646