티스토리 뷰
Installing Oracle Database 10g Release 2 on Linux - (RHEL 5)
by Jeff Hunter, Sr. Database Administrator
Contents
- Overview
- Hardware Overview
- Install the Linux Operating System
- Install Required Linux Packages for Oracle
- Disk Configuration
- Operating System Configuration
- Network Configuration
- Create "oracle" User and Directories
- Download the Oracle Database 10g Release 2 Software
- Pre-Installation Tasks
- Install the Oracle Database 10g Release 2 Software
- Install the Oracle Database 10g Companion CD Release 2 Software
- Apply the 10.2.0.3 Database Patchset
- Configure Oracle Networking
- Create the Oracle Database
- Post-Installation Tasks
- Creating / Altering Tablespaces
- Setting up Automatic Database Starting and Stopping
- Miscellaneous Options
- About the Author
Overview
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):
This article is a comprehensive guide for installing Oracle Database 10g Release 2 on the Red Hat Enterprise Linux 5 (RHEL5) operating environment.
Oracle Database Installation Guide 10g Release 2 (10.2) for Linux x86 - (B15660-02)
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 Database Quick Installation Guide 10g Release 2 (10.2) for Linux x86 - (B28052-01)
By the time you finish this article, the following will be installed and configured:
The following is a list of items NOT covered in this article:
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.
Install the Linux Operating System
Downloading CentOS
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
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.
Click [Next] to continue.
You will then be prompted with a dialog window asking if you really want to remove all partitions. Click [Yes] to acknowledge this warning. 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: 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:
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. You will be prompted with a warning dialog about not setting the firewall. When this occurs, click [Yes] 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. If you chose not to define any additional operating system user accounts, click [Continue] to acknowledge the warning dialog. Install Required Linux Packages for Oracle
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.
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
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.
In a production environment, these directories would be created on a separate file system. The following steps require use of the root user account: To check the amount of free disk available in the /tmp directory, type:
The default value for ip_local_port_range is ports 32768 through 61000 which is inadequate for a successful Oracle configuration.
Use the following command to determine the value of ip_local_port_range: 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:
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.
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:
To make these changes, run the following as root:
Create "oracle" User and Directories
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:
If you intend to use the oinstall group during the installation process, then you must set the default group to the one that will be maintaining the database before creating the database or permission problems will arise. In this article, we will be taking care of this issue when we install the database software.
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.
After the directory is created, you must then specify the correct owner, group, and permissions for it. At the end of this procedure, you will have the following:
Login to the database server as the oracle user account: Download the Oracle Database 10g Release 2 Software
Oracle offers a development and testing license free of charge. No support, however, is provided and the license does not permit production use. A full description of the license agreement is available on OTN. 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".
Oracle Database 10g Release 2 (10.2.0.1.0) for Linux x86
Oracle Database 10g Release 2 (10.2.0.1.0)
Oracle Database 10g Companion CD Release 2 (10.2.0.1.0)
As the "oracle" user account, extract the two packages you downloaded to a temporary directory. In this example, I will use "~oracle/orainstall".
Extract the Oracle Database 10g Software:
Extract the Oracle Database 10g Companion CD Software:
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.
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.
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:
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.
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].
Partitioning
The installer will then allow you to view (and modify if needed) the disk partitions it automatically selected.
Boot Loader Configuration
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 The installer will use the GRUB boot loader by default. To use the GRUB boot loader, accept all default values and click [Next] to continue.
Network Configuration
Before starting the Linux installation, I verified the NIC interface (card) was installed. This screen should have successfully detected the network device. Since we will be using this machine to host an Oracle database, there will be several changes that need to be made to the network configuration. The settings you make here will, of course, depend on your network configuration. The key point to make is that the machine should never be configured with DHCP since it will be used to host the Oracle database server. You will need to configure the machine with a static IP address. You will also need to configure the server with a real host name.
Time Zone Selection
- 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]
Select the appropriate time zone for your environment and click [Next] to continue.
Set Root Password
Select a root password and click [Next] to continue.
Package Installation Defaults
By default, CentOS installs most of the software required for a typical server. There are several other packages (RPMs), however, that are required to successfully install the Oracle Database software. For the purpose of this article, select the radio button [Customize now] and 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.
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.
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.
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.
After installing CentOS, the next step is to verify and install all packages (RPMs) required by Oracle Database 10g. The Oracle Universal Installer (OUI) performs checks on your machine during installation to verify that it meets the appropriate operating system package requirements. To ensure that these checks complete successfully, verify the software requirements documented in this section before starting the Oracle installs.
# From CentOS 5.1 - [CD #1]
mkdir -p /media/cdrom
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/CentOS
rpm -Uvh binutils-2.*
rpm -Uvh glibc-2*
rpm -Uvh glibc-common-2.*
rpm -Uvh libaio-0*
rpm -Uvh libgcc-4.*
rpm -Uvh libstdc++-4.*
rpm -Uvh make-3*
rpm -Uvh setarch-2*
cd /
eject
# From CentOS 5.1 - [CD #2]
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/CentOS
rpm -Uvh glibc-devel-2.*
rpm -Uvh gcc-4*
rpm -Uvh gcc-c++-4.*
rpm -Uvh libstdc++-devel-4.*
cd /
eject
# From CentOS 5.1 - [CD #3]
mount -r /dev/cdrom /media/cdrom
cd /media/cdrom/CentOS
rpm -Uvh compat-db-4*
rpm -Uvh compat-gcc-34-3*
rpm -Uvh compat-gcc-34-c++-3*
rpm -Uvh compat-libstdc++-33-3*
rpm -Uvh libaio-devel-0.*
rpm -Uvh libXp-1*
rpm -Uvh openmotif-2*
rpm -Uvh sysstat-7.*
cd /
eject
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.
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 SINGLE PARTITION ON SECOND INTERNAL SCSI HARD DISK ]
# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4699, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-4699, default 4699): 4699
Command (m for help): p
Disk /dev/sdb: 38.6 GB, 38654705664 bytes
255 heads, 63 sectors/track, 4699 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 4699 37744686 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
# [ CREATE SINGLE PARTITION ON THIRD INTERNAL SCSI HARD DISK ]
# fdisk /dev/sdc
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4699, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-4699, default 4699): 4699
Command (m for help): p
Disk /dev/sdc: 38.6 GB, 38654705664 bytes
255 heads, 63 sectors/track, 4699 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 4699 37744686 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
# [ 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
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# [ 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
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# [ CREATE MOUNT POINT DIRECTORIES ]
# mkdir /u01
# mkdir /u02
# [ INSERT THE FOLLOWING ENTRIES INTO /etc/vfstab ]
# echo "/dev/sdb1 /u01 ext3 defaults 1 1" >> /etc/fstab
# echo "/dev/sdc1 /u02 ext3 defaults 1 1" >> /etc/fstab
# [ MOUNT THE NEW FILE SYSTEMS ]
# mount /u01
# mount /u02
# [ CHECK FOR NEW FILE SYSTEMS ]
# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
34470656 2787292 29904064 9% /
/dev/sda1 101086 11784 84083 13% /boot
tmpfs 517660 0 517660 0% /dev/shm
/dev/sdb1 37152364 180240 35084892 1% /u01
/dev/sdc1 37152364 180240 35084892 1% /u02
Checking /tmp Directory
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.
# 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
Oracle strongly recommends to set the local port range ip_local_port_range for outgoing messages to "1024 65000" which is needed for systems with high-usage. This kernel parameter defines the local port range for TCP and UDP traffic to choose from.
Networking Settings
# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
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 10g Required Kernel Parameter Settings
# 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
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"
semmsl
250
250
cat /proc/sys/kernel/sem | awk '{print $1}'
semmns
32000
32000
cat /proc/sys/kernel/sem | awk '{print $2}'
semopm
100
32
cat /proc/sys/kernel/sem | awk '{print $3}'
semmni
128
128
cat /proc/sys/kernel/sem | awk '{print $4}'
file-max
65536
102696
cat /proc/sys/fs/file-max
ip_local_port_range
1024 65000
32768 61000
cat /proc/sys/net/ipv4/ip_local_port_range
rmem_default
1048576
109568
cat /proc/sys/net/core/rmem_default
rmem_max
1048576
131071
cat /proc/sys/net/core/rmem_max
wmem_default
262144
109568
cat /proc/sys/net/core/wmem_default
wmem_max
262144
131071
cat /proc/sys/net/core/wmem_max
If the current value for any parameter is higher than the value listed in this table, do not change the value of that parameter. 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.
# +---------------------------------------------------------+
# | 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
# /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.
Configuring Shell Limits for the oracle User
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 cat >> /etc/security/limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
cat >> /etc/pam.d/login <<EOF
session required /lib/security/pam_limits.so
EOF
Update the default shell startup file for the "oracle" UNIX account.
cat >> /etc/profile <<EOF
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF
cat >> /etc/csh.login <<EOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
endif
EOF
Check and Turn off UDP ICMP Rejections
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.
# /etc/rc.d/init.d/iptables status
Firewall is stopped.
# /etc/rc.d/init.d/iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
# chkconfig iptables off
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.
This guide adheres to the Optimal Flexible Architecture (OFA) for naming conventions used in creating the directory structure.
Create Group and User for Oracle
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.
Verify That the User nobody Exists
Before installing the Oracle software, complete the following procedure to verify that the user nobody exists on the system:
# 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.
# /usr/sbin/useradd nobody
Create the Oracle Base Directory
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.
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
Create Directory for Database Files
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
Create Login Script for oracle User Account
To ensure that the environment is setup correctly for the "oracle" UNIX user account, use the following .bash_profile:
# su - oracle
.bash_profile for Oracle User
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
alias ls="ls -FA"
export JAVA_HOME=/usr/local/java
# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_SID=TESTDB
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/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
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!
Download the Oracle Database 10g Release 2 (10.2.0.1.0) Software for Linux x86.
Oracle Database 10g Companion CD Release 2 (10.2.0.1.0) 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:
# su - oracle
$ mkdir -p ~oracle/orainstall
$ cd ~oracle/orainstall
$ unzip 10201_database_linux32.zip
$ cd ~oracle/orainstall
$ unzip 10201_companion_linux32.zip
|
Apply the 10.2.0.3 Database Patchset
Downloading the Patchset
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:
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).
Access to Oracle Metalink requires a valid login and CSI number.
The file name of the patchset to download is p5337014_10203_LINUX.zip (last updated 21-FEB-2007) and is 900MB in size. This may take some time to download.
Extract the Patch File
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 $ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE $ # NODE PERFORMING THE INSTALL $ DISPLAY=<your local workstation>:0.0 $ export DISPLAY
Stop All Oracle Processes
Before starting the OUI to install the patch set, we need to stop all listeners and other processes running in the Oracle home directory. If you have been following the instructions in this article, there should be no Oracle processes running:$ ps -ef | grep ora
Applying the Patchset
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 Specify Home Details Set the destination for the ORACLE_HOME Name and Path to that of the previous Oracle10g Database software install as follows:
Name: OraDb10g_home1
Path: /u01/app/oracle/product/10.2.0/db_1Summary On the Summary screen, click Install to start the installation! Root Script Window - Run root.sh 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. 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!
Running changePerm.sh Script on an Oracle Database Server Home
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.
- Change to the install directory by using the following command:
$ cd $ORACLE_HOME/install- 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:
$ ./changePerm.sh ------------------------------------------------------------------------------- Disclaimer: The purpose of this script is to relax permissions on some of the files in the database Oracle Home so that all clients can access them. Please note that Oracle Corporation recommends using the most restrictive file permissions as possible for your given implementation. Running this script should be done only after considering all security ramifications. ------------------------------------------------------------------------------- Do you wish to continue (y/n) [n]: y Finished running the script successfully Please see /tmp/changePerm_err.log for errors and /tmp/changePerm.log for the log of events
Configure Oracle Networking
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: To start the NETCA, run the following: The Oracle TNS listener process should now be running: Post-Installation Tasks
Restore the Red Hat Release File
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: Ignore any messages indicating that the database contains invalid recycle bin objects similar to the following: 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.
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/common.zip. As the oracle user account, download the common.zip archive to the $ORACLE_BASE directory. For the purpose of this example, the common.zip archive will be copied to /u01/app/oracle. Next, unzip the archive file to the $ORACLE_BASE directory.
For example, perform the following as the 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/common/oracle/sql while logged into SQL*Plus. For example, to query tablespace information while logged into the Oracle database as a DBA user: Creating / Altering Tablespaces
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:
Here is a snapshot of the tablespaces I have defined for my test database environment: Setting up Automatic Database Starting and Stopping
Automatic Database Startup/Shutdown in Oracle10g
Next, create a text file named /etc/init.d/dbora as the root user, containing the following:
Use the chmod command to set the privileges to 750: Associate the dbora service with the appropriate run levels and set it to auto-start using the following command: 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:
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. 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: About the Author
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.
# su - oracle
$ # IF YOU ARE USING A REMOTE CLIENT TO CONNECT TO THE
$ # NODE PERFORMING THE INSTALL
$ DISPLAY=<your local workstation>:0.0
$ export DISPLAY
$ netca &
Oracle Network Configuration Installation Screen Responses
Screen Name
Response
Welcome
Select Listener configuration.
Listener Configuration
(Next 6 Screens)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 name: LISTENER
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.
Naming Methods Configuration
The following screens are:
Selected Naming Methods: Local Naming
Naming Methods configuration complete! [ Next ]
You will be returned to this Welcome (Type of Configuration) Screen.
Welcome
Click Finish to exit the NETCA. $ ps -ef | grep lsnr | grep -v 'grep' | awk '{print $9}'
LISTENER
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.
$ su -
# cp /etc/redhat-release.original /etc/redhat-release
Re-compile Invalid Objects
Run the utlrp.sql script to recompile all invalid PL/SQL packages now instead of when the packages are accessed for the first time. This step is optional but recommended.
$ id -a
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper)
$ sqlplus "/ as sysdba"
SQL> @?/rdbms/admin/utlrp.sql
When the 10.2.0.3 patch set is applied to an Oracle Database 10g Standard Edition database or Standard Edition One database, there may be 42 invalid objects after the utlrp.sql script runs. These objects belong to the unsupported components and do not affect the database operation.
BIN$4lzljWIt9gfgMFeM2hVSoA==$0
Enabling Archive Logs - (Optional)
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).
$ id -a
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper)
$ sqlplus "/ as sysdba"
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 27
Next log sequence to archive 29
Current log sequence 29
Download and Install Custom Oracle Database Scripts - (Optional)
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.
$ mv common.zip /u01/app/oracle
$ cd /u01/app/oracle
$ unzip common.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_BASE/common/oracle/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. SQL> @dba_tablespaces
Status Tablespace Name TS Type Ext. Mgt. Seg. Mgt. Tablespace Size Used (in bytes) Pct. Used
--------- --------------- ------------ ---------- --------- ------------------ ------------------ ---------
ONLINE UNDOTBS1 UNDO LOCAL MANUAL 241,172,480 239,075,328 99
ONLINE SYSAUX PERMANENT LOCAL AUTO 272,629,760 270,663,680 99
ONLINE USERS PERMANENT LOCAL AUTO 5,242,880 65,536 1
ONLINE SYSTEM PERMANENT LOCAL MANUAL 513,802,240 503,250,944 98
ONLINE TEMP TEMPORARY LOCAL MANUAL 29,360,128 28,311,552 96
------------------ ------------------ ---------
avg 79
sum 1,062,207,488 1,041,367,040
To obtain a list of all available Oracle DBA scripts while logged into SQL*Plus, run the help.sql script: SQL> @help.sql
========================================
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.
SQL> select tablespace_name, file_name
2 from dba_data_files
3 union
4 select tablespace_name, file_name
5 from dba_temp_files;
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> create user scott identified by tiger default tablespace users;
SQL> grant dba, resource, connect to scott;
SQL> alter database datafile '/u02/oradata/TESTDB/datafile/o1_mf_users_3rbj6q3y_.dbf' resize 1024m;
SQL> alter tablespace users add datafile size 1024m autoextend off;
SQL> create tablespace indx datafile size 1024m
2 autoextend on next 100m maxsize unlimited
3 extent management local autoallocate
4 segment space management auto;
SQL> -- SYSTEM Tablespace
SQL> alter database datafile '/u02/oradata/TESTDB/datafile/o1_mf_system_3rbj5g8h_.dbf' resize 1024m;
SQL> -- SYSAUX Tablespace
SQL> alter database datafile '/u02/oradata/TESTDB/datafile/o1_mf_sysaux_3rbj68np_.dbf' resize 1024m;
SQL> -- UNDO Tablespace
SQL> alter database datafile '/u02/oradata/TESTDB/datafile/o1_mf_undotbs1_3rbj61p7_.dbf' resize 1024m;
SQL> -- Temporary Tablespace
SQL> alter database tempfile '/u02/oradata/TESTDB/datafile/o1_mf_temp_3rbj6f1s_.tmp' resize 1024m;
SQL> @dba_tablespaces
Status Tablespace Name TS Type Ext. Mgt. Seg. Mgt. Tablespace Size Used (in bytes) Pct. Used
--------- --------------- ------------ ---------- --------- ------------------ ------------------ ---------
ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1,073,741,824 239,075,328 22
ONLINE SYSAUX PERMANENT LOCAL AUTO 1,073,741,824 270,663,680 25
ONLINE USERS PERMANENT LOCAL AUTO 2,147,483,648 131,072 0
ONLINE SYSTEM PERMANENT LOCAL MANUAL 1,073,741,824 503,250,944 47
ONLINE INDX PERMANENT LOCAL AUTO 1,073,741,824 65,536 0
ONLINE TEMP TEMPORARY LOCAL MANUAL 1,073,741,824 28,311,552 3
------------------ ------------------ ---------
avg 16
sum 7,516,192,768 1,041,498,112
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
...
/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. # chmod 750 /etc/init.d/dbora
# chkconfig --level 345 dbora on
The relevant instances should now startup/shutdown automatically at system startup/shutdown!
Known Issues
The following known issue does not apply to this article since we applied the Oracle 10.2.0.3 patchset.
Failed to auto-start Oracle Net Listener using /ade/vikrkuma_new/oracle/bin/tnslsnr
This is due to a hard coded path in the dbstart script. To correct this, edit the $ORACLE_HOME/bin/dbstart script and replace the following line (approximately line 78):
with this:
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
The dbstart script shold now start the listener as expected. ORACLE_HOME_LISTNER=$ORACLE_HOME
Final Notes
The /etc/init.d/dbora script defined in this section uses the "su -" command to run the Oracle scripts dbstart and dbshut:
Starting with Oracle10g, Oracle switched from recommending the "su" command to the "rsh" command of which I completely disagree with. When using the rsh method, the /etc/init.d/dbora script would be defined as follows:
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
(and...)
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
/etc/init.d/dbora - (rsh method)
#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Change the value of ORACLE_HOME to specify the correct Oracle home
# directory for your installation.
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
# -- Install the rhs and rsh-server packages from the OS CD/DVD --
# rpm -Uvh --force rsh-*
# -- Enable rsh and rlogin --
# chkconfig rsh on
# chkconfig rlogin on
# service xinetd reload
Changing Your Oracle Database Environment
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.
$ . 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.
Jeffrey Hunter graduated from Stanislaus State University in Turlock, California, with a Bachelor's degree in Computer Science. Jeff is an Oracle Certified Professional, Java Development Certified Professional, Author, and currently works as a Senior Database Administrator for The DBA Zone, Inc.. His work includes advanced performance tuning, Java and PL/SQL programming, capacity planning, database security, and physical / logical database design in a UNIX, Linux, and Windows server environment. Jeff's other interests include mathematical encryption theory, programming language processors (compilers and interpreters) in Java and C, LDAP, writing web-based database administration tools, and of course Linux. Jeff has been a Sr. Database Administrator and Software Engineer for over 13 years and maintains his own website site at: http://www.iDevelopment.info.
- Total
- Today
- Yesterday
- RHEL4
- unix 보안
- 윈도우즈 2000
- pc정보
- Cisco
- 컴퓨터 소음
- 솔라리스
- hp-ux
- 보안
- network
- 아파치 보안
- Solaris
- XP설치
- 컴퓨터 관리
- PC최적화
- 오라클
- netbackup
- Linux
- 넷백업
- 리눅스
- Oracle
- rhel5
- 키보드 단축키
- Storage
- Unix
- 컴퓨터 다운
- switch
- dell 서버
- dell omsa
- Router
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |