Reference Architectures-2017-Deploying Oracle Database 12c Release 2 On Red Hat Enterprise Linux 7-En-US
Reference Architectures-2017-Deploying Oracle Database 12c Release 2 On Red Hat Enterprise Linux 7-En-US
Reference Architectures-2017-Deploying Oracle Database 12c Release 2 On Red Hat Enterprise Linux 7-En-US
Roger Lopez
refarch-feedback@redhat.com
Legal Notice
Copyright © 2018 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons
Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is
available at
http://creativecommons.org/licenses/by-sa/3.0/
. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must
provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert,
Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity
logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other
countries.
Linux ® is the registered trademark of Linus Torvalds in the United States and other countries.
XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States
and/or other countries.
MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and
other countries.
Node.js ® is an official trademark of Joyent. Red Hat Software Collections is not formally related to
or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack ® Word Mark and OpenStack logo are either registered trademarks/service marks
or trademarks/service marks of the OpenStack Foundation, in the United States and other countries
and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or
sponsored by the OpenStack Foundation, or the OpenStack community.
Abstract
This document provides the best practices to deploy Oracle Database 12c Release 2 on Red Hat
Enterprise Linux 7.
Table of Contents
Table of Contents
. . . . . . . . . . . .AND
COMMENTS . . . .FEEDBACK
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4. . . . . . . . . .
. . . . . . . . . .1.. .EXECUTIVE
CHAPTER . . . . . . . . . . SUMMARY
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5. . . . . . . . . .
. . . . . . . . . .2.. .REFERENCE
CHAPTER . . . . . . . . . . . ARCHITECTURE
. . . . . . . . . . . . . . . ENVIRONMENT
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. . . . . . . . . .
2.1. REFERENCE ARCHITECTURE OVERVIEW 6
2.2. NETWORK TOPOLOGY 6
2.3. HARDWARE DETAILS 7
2.4. FILE SYSTEM LAYOUT & DISK SPACE DETAILS 8
2.5. SWAP SPACE 9
2.6. SECURITY: FIREWALL SETTINGS 10
2.7. SECURITY: SELINUX 10
.CHAPTER
. . . . . . . . .3.. .REFERENCE
. . . . . . . . . . . ARCHITECTURE
. . . . . . . . . . . . . . . CONFIGURATION
. . . . . . . . . . . . . . . .DETAILS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
...........
3.1. SETTING OS HOSTNAME 12
3.2. NETWORK CONFIGURATION 12
3.2.1. Configuring /etc/resolv.conf file 12
3.2.2. Public Network Configuration 13
3.2.3. iSCSI Network Configuration 15
3.2.3.1. iSCSI Switch and Dell EqualLogic Recommendations 15
3.3. OS CONFIGURATION 16
3.3.1. Red Hat Subscription Manager 16
3.3.2. Chrony Configuration 17
3.3.3. Oracle Database 12c Release 2 Package Requirements 18
3.3.4. Configuring Security-Enhanced Linux (SELinux) 19
3.3.5. Configuring Firewall Settings 20
3.3.6. Modifying Kernel Parameters 21
3.3.7. Setting Virtual Memory 21
3.3.8. Setting Shared Memory (SHMMAX, SHMALL, SHMMNI) 23
3.3.9. Setting Semaphores (SEMMSL, SEMMNI, SEMMNS) 24
3.3.10. Ephemeral Network Ports 26
3.3.11. Optimizing Network Settings 26
3.3.12. Increasing synchronous I/O Requests 26
3.3.13. Increasing File Handles 26
3.3.14. User Accounts & Groups 28
3.3.15. Setting Shell Limits for the Grid and Oracle User 29
3.4. STORAGE CONFIGURATION 31
3.4.1. iSCSI CHAP Authentication 31
3.4.2. Configuring Host Access to Volumes 32
3.4.3. Device Mapper Multipath 33
3.4.4. Partitioning Device Mapper Shared Disks 36
3.4.5. Configuring Oracle ASM Disks 37
3.4.5.1. Oracle ASMLib and Oracle ASM Filter Driver Alternative: Configuring udev Rules 38
3.4.6. Optimizing Database Storage using Automatic System Tuning 39
3.4.6.1. Customizing the tuned-profiles-oracle profile 42
.CHAPTER
. . . . . . . . .4.. .ORACLE
. . . . . . . .12C
. . . .RELEASE
. . . . . . . . .2. CONFIGURATION
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
...........
4.1. INSTALLING ORACLE GRID INFRASTRUCTURE (REQUIRED FOR ASM) 44
4.2. INSTALLING ORACLE 12C R1 DATABASE SOFTWARE 48
4.3. CREATING ASM DISKGROUPS VIA THE ASM CONFIGURATION ASSITANT (ASMCA) 52
4.4. CREATING PLUGGABLE DATABASES USING DATABASE CONFIGURATION ASSISTANT (DBCA) 53
4.5. ENABLING HUGEPAGES 57
1
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
. . . . . . . . . .5.. .LOGGING
CHAPTER . . . . . . . . .INTO
. . . . .THE
. . . .ORACLE
. . . . . . . .CONTAINER
. . . . . . . . . . .DATABASE
. . . . . . . . . . .12C
. . . RELEASE
.........2
. . . . . . . . . . . . . . . . . . . .60
...........
CHAPTER 6. COMMON TASKS WHEN MANAGING CONTAINER DATABASE (CDB) AND PLUGGABLE
. . . . . . . . . . . . (PDB)
DATABASES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63
...........
6.1. CONNECT TO A CDB 63
6.2. CONNECT TO A PDB 64
6.3. MANAGING A CDB 65
6.4. MANAGING A PDB 65
6.5. LOCATION OF DATA FILES OF PDB & CDB 67
. . . . . . . . . .7.. .CONCLUSION
CHAPTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69
...........
. . . . . . . . . . A.
APPENDIX . . .CONTRIBUTORS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .70
...........
. . . . . . . . . . B.
APPENDIX . . .DM
. . .MULTIPATH
. . . . . . . . . . .CONFIGURATION
. . . . . . . . . . . . . . . .FILE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
...........
. . . . . . . . . . C.
APPENDIX . . .HUGE
. . . . . PAGES
. . . . . . . SCRIPT
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73
...........
. . . . . . . . . . D.
APPENDIX . . .ORACLE
. . . . . . . .DATABASE
. . . . . . . . . . PACKAGE
. . . . . . . . . .REQUIREMENTS
. . . . . . . . . . . . . . .TEXT
. . . . .FILE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
...........
. . . . . . . . . . E.
APPENDIX . . KERNEL
. . . . . . . . PARAMETERS
. . . . . . . . . . . . . .(98-ORACLE-KERNEL.CONF)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
...........
. . . . . . . . . . F.
APPENDIX . . LIMITS
. . . . . . .CONFIGURATION
. . . . . . . . . . . . . . . .FILE
. . . .(99-GRID-ORACLE-LIMITS.CONF)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .76
...........
. . . . . . . . . . G.
APPENDIX . . .99-ORACLE-ASMDEVICES.RULES
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77
...........
. . . . . . . . . . H.
APPENDIX . . .SAMPLE
. . . . . . . .KICKSTART
. . . . . . . . . . FILE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .78
...........
. . . . . . . . . . I.. .CONFIGURATION
APPENDIX . . . . . . . . . . . . . . . FILES
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
...........
. . . . . . . . . . J.
APPENDIX . . TROUBLESHOOTING
. . . . . . . . . . . . . . . . . . . ORA-*
. . . . . .ERRORS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
...........
. . . . . . . . . . K.
APPENDIX . . .REFERENCES
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85
...........
. . . . . . . . . . L.
APPENDIX . . REVISION
. . . . . . . . . HISTORY
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86
...........
2
Table of Contents
3
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
4
CHAPTER 1. EXECUTIVE SUMMARY
5
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
6
CHAPTER 2. REFERENCE ARCHITECTURE ENVIRONMENT
Minimum of 1 Network Interface Card (NIC), however 2 NICs are recommended for high
availability (HA) as used in the reference environment
Console access that supports 1024 x 768 for the Oracle Universal Installer (OUI)
Table 2.1, “Server Details” specifies the hardware for the server within this reference environment. This
hardware meets the minimum requirements for properly installing Oracle Database 12c Release 2 on a
x86_64 system.
7
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
Oracle Database 12c Release 2 Standalone Server Red Hat Enterprise Linux 7 3.10.0-514.el7.x86_64
(db-oracle-node1) [1 x PowerEdge M520]
2 socket, 8 core, 16 threads, Intel® Xeon® CPU E5-
2450 0 @ 2.10GHz
Table 2.2, “Switch Details” specifies the switches within this reference environment.
Switch Hardware
Table 2.3, “Storage Details” specifies the storage within this reference environment.
Storage Hardware
/tmp 1 GB
8
CHAPTER 2. REFERENCE ARCHITECTURE ENVIRONMENT
NOTE
The actual amount of disk space consumed for Oracle Grid Infrastructure Home and
Oracle Database Home Enterprise Edition may vary.
Table 2.5, “File System Layout” specifies the file system layout for the server used in this reference
environment. The layout ensures the disk space requirements to properly install the Oracle Grid
Infrastructure and Oracle Database software for Oracle Database 12c Release 2
/ 15 GB
/boot 250 MB
/home 8 GB
/tmp 4 GB
/u01 50 GB
/usr 5 GB
/var 8 GB
While the size of the Oracle data files varies for each solution, the following are the Oracle data file sizes
for this reference environment.
9
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
NOTE
When calculating swap space, ensure not to include RAM assigned for hugepages. More
information on hugepages can be found in Section 4.5, “Enabling HugePages”
10
CHAPTER 2. REFERENCE ARCHITECTURE ENVIRONMENT
Starting with Oracle 11g Release 2 version 11.2.0.3, SELinux is supported for Oracle database
environments. The system in this reference environment runs with SELinux enabled and set to
ENFORCING mode.
11
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
Using udev rules instead of Oracle ASMLib or Oracle ASM Filter Driver
To set a hostname for a server use the hostnamectl command. An example of setting
oracle1.e2e.bos.redhat.com hostname is shown below.
# hostnamectl status
Static hostname: oracle1.e2e.bos.redhat.com
Icon name: computer-server
Chassis: server
Machine ID: f9650ab62cd449b8b2a02d39ac73881e
Boot ID: 4b4edc0eb2d8418080d86e343433067f
Operating System: Storage
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.3:GA:server
Kernel: Linux 3.10.0-514.el7.x86_64
Architecture: x86-64
12
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
The resolver is a set of routines in the C library that provides access to the Internet Domain Name
System (DNS). The resolver configuration file contains information that is read by the resolver routines
the first time they are invoked by a process. The file is designed to be human readable and contains a
list of keywords with values that provide various types of resolver information3. The /etc/resolv.conf
file for this reference environment consists of two configuration options: nameserver and search. The
search option is used to search for a host name that is part of a particular domain. The nameserver
option is the IP address of the name server the system oracle1 must query. If more than one
nameserver is listed, the resolver library queries them in order. An example of the /etc/resolv.conf
file used on the reference environment is shown below.
# cat /etc/resolv.conf
# Generated by NetworkManager
search e2e.bos.redhat.com
nameserver 10.19.114.2
NOTE
# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=static
IPADDR=10.19.114.44
PREFIX=23
GATEWAY=10.19.115.254
BONDING_OPTS="mode=1 miimon=100 primary=em1"
ONBOOT=yes
13
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
# cat /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=em1
HWADDR="44:a8:42:af:58:66"
ONBOOT=yes
IPV6INIT=no
PEERROUTES=yes
SLAVE=yes
BOOTPROTO="none"
MASTER=bond0
# cat /etc/sysconfig/network-scripts/ifcfg-em2
DEVICE=em2
HWADDR="44:a8:42:af:58:67"
ONBOOT=yes
IPV6INIT=no
PEERROUTES=yes
SLAVE=yes
BOOTPROTO="none"
MASTER=bond0
NOTE
If for some reason, issues getting bond0 properly to add the different interfaces, reboot
the host.
Once the bond0 device is configured on the host, ensure connectivity by pinging the gateway IP.
# ping 10.19.115.254
PING 10.19.115.254 (10.19.115.254) 56(84) bytes of data.
64 bytes from 10.19.115.254: icmp_seq=1 ttl=64 time=0.978 ms
NOTE
Please ensure a DNS entry that resolves to the appropriate hostname. This reference
architecture resolves the following IP address to the following host:
IP Hostname
14
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
10.19.114.44 oracle1.e2e.bos.redhat.com
The iSCSI network configuration consists of two network interfaces em3 and em4. Set em3 and em4 for
iSCSI traffic. An example below:
# cat /etc/sysconfig/network-scripts/ifcfg-em3
DEVICE=em3
HWADDR="44:a8:42:af:52:61"
ONBOOT=yes
IPV6INIT=no
BOOTPROTO=static
IPADDR=172.17.114.250
PREFIX=24
MTU=9000
# cat /etc/sysconfig/network-scripts/ifcfg-em4
DEVICE=em4
HWADDR="44:a8:42:af:52:62"
ONBOOT=yes
IPV6INIT=no
BOOTPROTO=static
IPADDR=172.17.114.251
PREFIX=24
MTU=9000
NOTE
It is recommended to take advantage of Jumbo Frames for iSCSI storage. Ensure that the
iSCSI switches have Jumbo Frames enabled.
Regarding the Dell EqualLogic PS Array, the following are recommendations to achieve optimal
performance.
15
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
A trunk between the switches that equals the ttoal amount of bandwidth available on the
EqualLogic PS Array
Enable Flow Control within the switch ports on the iSCSI switches
Disable unicast storm control within the switch ports on the iSCSI switches
3.3. OS CONFIGURATION
To use Red Hat Subscription Management for providing packages to a system, the system must first
register with the service. In order to register a system, use the subscription-manager command and
pass the register command directive. If the --username and --password options are specified,
then the command does not prompt for the RHN Network authentication credentials.
After a system is registered, it must be attached to an entitlement pool. For the purposes of this
reference environment, the Red Hat Enterprise Linux Server is the pool chosen. Identify and subscribe to
the Red Hat Enterprise Linux Server entitlement pool, the following command directives are required.
16
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
The Red Hat Enterprise Linux supplementary repository is part of subscribing to the Red Hat Enterprise
Linux Server entitlement pool, however, it is disabled by default. Enable the supplementary repository via
the subscription-manager command.
NOTE
For more information on the use of Red Hat Subscription Manager, please visit the Red Hat Subscription
management documentation4.
# vi /etc/chrony.conf
3. Locate the following public server pool section, and modify to include the appropriate servers.
For the purposes of this reference environment, only one server is used, but three is
recommended. The iburst option is added to speed up the time that it takes to properly sync
with the servers.
17
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
6. Ensure that the chronyd daemon is started when the host is booted.
@Base @Core
Oracle Grid Infrastructure and Oracle Database 12c Release 2 required x86_64 RPM packages.
Required Packages
18
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
After the installation of Red Hat Enterprise Linux 7 is completed, create a file, req-rpm.txt, that
contains the name of each RPM package listed above on a separate line. For simplicity, this req-
rpm.txt file is included in Appendix D, Oracle Database Package Requirements Text File.
Use the yum package manager to install the packages and any of their dependencies with the following
command:
A minimum installation of Red Hat Enterprise Linux 7 does not install the X Window System server
package, but only the required X11 client libraries. In order to run the Oracle Universal Installer (OUI), a
system with the X Window System server package installed is required.
Using a system with X Window System installed, ssh into the Oracle Database server with the -Y option
to ensure trusted X11 forwarding is set. The command is as follows:
# ssh -Y oracle1.e2e.bos.redhat.com
Alternatively, if a system with the X Window System server package is unavailable, install the X
Window System server package directly on the Oracle Database Server.
It is highly recommended that SELinux be kept in ENFORCING mode when running Oracle Database
12c Release 2.
19
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28
If the system is running in PERMISSIVE or DISABLED mode, modify the /etc/selinux/config file
and set SELinux to enforcing as shown below.
SELINUX=enforcing
The modification of the /etc/selinux/config file takes effect after a reboot. To change the setting of
SELinux immediately without a reboot, run the following command:
# setenforce 1
For more information on Security Enhanced Linux, please visit the Red Hat Enterprise Linux 7 Security ‐
Enhanced Linux User Guide
Likewise, if a particular database client with an IP address of 10.19.142.54 required access to the web-
based EM Express that uses the default port of 5500, the following firewall rich rule must be added using
the firewall-cmd command.
20
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
Once the rules have been added, run the following command to activate:
To verify the port 1521 has been added and database client with IP address of 10.19.142.54 has been
properly added to access port 5500, run the following command:
NOTE
The recommended values listed are to be used as a starting point when setting
virtual memory, there is no "one-size fits all" regarding performance tuning.
Each section provides the manual steps to tweaking the parameters. With that said, if looking to tweak
parameters immediately, Section 3.4.6, “Optimizing Database Storage using Automatic System Tuning”
covers setting the parameters using the oracle-tuned-profile.
A brief description7 and recommended settings for the virtual memory parameters, as well as, the
definition of dirty data are described below.
SWAPPINESS 7 - Starting with Red Hat Enterprise Linux 6.4 and above, the definition of swappiness has
changed. Swappiness is defined as a value from 0 to 100 that controls the degree to which the system
favors anonymous memory or the page cache. A high value improves file-system performance, while
21
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
aggressively swapping less active processes out of memory. A low value avoids swapping processes out
of memory, that usually decreases latency, at the cost of I/O performance. The default value is 60.
WARNING
Since Red Hat Enterprise Linux 6.4, setting swappiness to 0 will even more
aggressively avoid swapping out which increases the risk of out-of-memory (OOM)
killing under strong memory and I/O pressure. To achieve the same behavior of
swappiness as previous versions of Red Hat Enterprise Linux 6.4 in which the
recommendation was to set swappiness to 0, set swappiness to the value between 1
and 20. The recommendation of swappiness for Red Hat Enterprise Linux 6.4 or
higher running Oracle databases is now a value between 1-20.
DIRTY DATA – Dirty data is data that has been modified and held in the page cache for performance
benefits. Once the data is flushed to disk, the data is clean.
DIRTY_RATIO 7 – Contains, as a percentage of total system memory, the number of pages at which a
process that is generating disk writes will itself start writing out dirty data. The default value is 20. The
recommended value is between 40 and 80. The reasoning behind increasing the value from the standard
Oracle 15 recommendation to a value between 40 and 80 is because dirty ratio defines the maximum
percentage of total memory that be can be filled with dirty pages before user processes are forced to
write dirty buffers themselves during their time slice instead of being allowed to do more writes. All
processes are blocked for writes when this occurs due to synchronous I/O, not just the processes that
filled the write buffers. This can cause what is perceived as unfair behavior where a single process can
hog all the I/O on a system. As the value of dirty_ratio is increased, it is less likely that all processes will
be blocked due to synchronous I/O, however, this allows for more data to be sitting in memory that has
yet to be written to disk.
NOTE
DIRTY_EXPIRE_CENTISECS7 - Defines when dirty in-memory data is old enough to be eligible for
writeout. The default value is 3000, expressed in hundredths of a second. The Oracle recommended
value is 500.
DIRTY_WRITEBACK_CENTISECS7 - Defines the interval of when writes of dirty in-memory data are
written out to disk. The default value is 500, expressed in hundredths of a second. The Oracle
recommended value is 100.
22
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
# vi 98-oracle-kernel.conf
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
For the changes to take effect immediately, run the following command:
# sysctl -p /etc/sysctl.d/98-oracle-kernel.conf
NOTE
A full listing of all the kernel parameters modified within the /etc/sysctl.d/98-oracle-
kernel.conf file can be found at Appendix E, Kernel Parameters (98-oracle-kernel.conf).
A default installation of Red Hat Enterprise Linux 7.0 x86_64 provides a maximum size of a single
shared memory segment, SHMMAX, to 4294967295 bytes, equivalent to 4 GB -1 byte. This value is
important since it regulates the largest possible size of one single Oracle SGA shared memory segment.
If the Oracle SGA is larger than the value specified by SHMMAX (default 4 GB-1 byte), then Oracle is
required to create multiple smaller shared memory segments to completely fit Oracle’s SGA. This can
cause a significant performance penalty, especially in NUMA environments. In an optimal NUMA
configuration, a single shared memory segment for Oracle’s SGA is created on each NUMA node. If
SHMMAX is not properly sized and creates multiple shared memory segments, SHMMAX limitations
may keep the system from evenly distributing the shared memory segments across each NUMA node.
Starting with Red Hat Enterprise Linux 7.1 and above, SHMMAX default value is set to
18446744073692774399 bytes, equivalent to roughly 18 petabytes. Due to this, there is no need to
calculate SHMMAX because of the very large size already provided. It is recommended to use the value
set in Red Hat Enterprise Linux 7.1 and above because the value is purposely set higher than the
architectural memory limits to ensure that any Oracle SGA value set within an Oracle database instance
may fit in one single shared memory segment.
23
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
# sysctl kernel.shmmax
The next step is to determine the maximum amount of shared memory pages (SHMALL) in a system by
capturing system’s page size in bytes. The following command can be used to obtain the system page
size.
# getconf PAGE_SIZE
4096
A default installation of Red Hat Enterprise Linux 7.0 x86_64 provides a SHMALL value of 268435456
pages, the equivalent of 1 TB in system pages. This is determined by the following formula:
Starting with Red Hat Enterprise Linux 7.1 and above, SHMALL default value is 18446744073692774399
pages, the same value set to SHMMAX.
# sysctl kernel.shmall
To ensure an adequate amount of memory pages are allocated to a single Oracle SGA, it is
recommended that the value of SHMALL be set to the at least the value using the following formula:
Since the default value of SHMALL in Red Hat Enterprise Linux 7.1 and above is
18446744073692774399 pages, and the minimum recommended value by Oracle for SHMALL is
1073741824, the larger default value is kept.
SHMMNI is the maximum total amount of shared memory segments. A default installation of Red Hat
Enterprise Linux 7 x86_64 provides a SHMMNI default value of 4096. By Red Hat Enterprise Linux 7
optimizing the SHMMAX value with one shared memory segment per Oracle SGA, this parameter
reflects the maximum number of Oracle and ASM instances that can be started on a system. Oracle
recommends the value of SHMMNI to be left at the default value of 4096.
Prior to Red Hat Enterprise Linux 7.1, changes to the kernel parameters were required. However, with
the new SHMMAX, SHMALL, and SHMMNI defaults no changes are made.
NOTE
A full listing of all the kernel parameters modified within the /etc/sysctl.d/98-oracle-
kernel.conf file can be found at Appendix E, Kernel Parameters (98-oracle-kernel.conf).
SEMMNI – is defined as the maximum number of semaphore sets for the entire system
24
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
SEMMNS – is defined as the total number of semaphores for the entire system
SEMOPM – is defined as the total number of semaphore operations performed per semop system call.
NOTE
The following line is required within the /etc/sysctl.d/98-oracle-kernel.conf file to provide default values
for semaphores for Oracle:
For the changes to take effect immediately, run the following command:
# sysctl -p /etc/sysctl.d/98-oracle-kernel.conf
The values above are sufficient for most environments and no tweaking should be necessary. However,
the following describes how these values can be optimized and should be set when the defaults don’t
suffice.
Example errors:
NOTE
It is recommended to first use the default values and adjust only when deemed necessary.
Semaphores are used by Oracle for internal locking of SGA structures. Sizing of semaphores directly
depends on only the PROCESSES parameter of the instance(s) running on the system. The number of
semaphores to be defined in a set should be set to a value that minimizes the waste of semaphores.
For example, say our environment consists of two Oracle instances with the PROCESSES set to 300 for
database one and 600 for database two. With SEMMSL set at 250 (default), the first database requires 2
sets. The first set is 250 semaphores but an additional 50 semaphores is required thus an additional
SEMMSL set is required thus wasting 200 semaphores. Our 2nd instance requires 3 sets, set one 250
semaphores, set two 250 semaphores, giving us a total of 500, but an additional 100 semaphores is
required thus adding an additional SEMMSSL set wasting 150 semaphores. A better value of SEMMSL
in this particular case would be 150. With SEMMSL set at 150, the first database requires two sets
(wasting zero semaphores), our second instance requires four sets (wasting zero semaphores). This is
an ideal example, and most likely some semaphore wastage is expected and okay as semaphores in
general consume small amounts of memory. As more databases are created in an environment, these
calculations may get complicated. In the end, the goal is to limit semaphore waste.
Regarding SEMMNI, SEMMNI should be set high enough for proper amount of sets to be available on
the system. Using the value of SEMMSL, one can determine max amount of SEMMNI required. Round
up to the nearest power of 2.
SEMMNI = SEMMNS/SEMMSL
25
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
Oracle requires 2x value of PROCESSES in the init.ora parameter for semaphores (SEMMNS value)
on startup of the database, then half of those semaphores are released. To properly size SEMMNS, one
must know the sum of all PROCESSES set across all instances on the host. SEMMNS should best be
set higher than SEMMNI*SEMMSL value (this is how we get 32000 for default value 250*128)
SEMOP is calculated using the total SEMMNI divided by SEMMSL. In the default scenario that is
3200/250 = 128
For the changes to take effect immediately, run the following command:
# sysctl -p /etc/sysctl.d/98-oracle-kernel.conf
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
For the changes to take effect immediately, run the following command:
# sysctl -p /etc/sysctl.d/98-oracle-kernel.conf
fs.aio-max-nr = 1048576
In order for the changes take effect immediately, run the following command:
# sysctl -p /etc/sysctl.d/98-oracle-kernel.conf
26
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
Hat Enterprise Linux 7 operating system. Oracle recommends that for each Oracle database instance
found within a system, allocate 512*PROCESSSES in addition to the open file handles already assigned
to the Red Hat Enterprise Linux 7 operating system. PROCESSES within a database instance refers to
the maximum number of processes that can be concurrently connected to the Oracle database by the
oracle user. The default value for PROCESSES is 2560 for Oracle Database 12c Release 2. To
properly calculate the FS.FILE-MAX for a system, first identify the current FS.FILE-MAX allocated to the
system via the following command:
sysctl fs.file-max
Next, add all the PROCESSES together from each Oracle database instance found within the system
and multiple by 512 using bc as seen in the following command.
# yum install bc
# echo “512 * 2560” | bc
NOTE
To determine the current PROCESSES value, log into each Oracle database instance and
run the following command below. Since no Oracle database has yet been created within
this reference environment, the default value of 2560 PROCESSES is used.
Finally, add the current FS.FILE-MAX value with the new value found from multiplying 512*PROCESSES
to attain the new FS.FILE-MAX value.
While the value of the FS.FILE-MAX parameter varies upon every environment, this reference
environment uses the default value within Red Hat Enterprise Linux 7.4 (9784283). Oracle recommends
a value no smaller than 6815744. In order to modify the value of FS.FILE-MAX, add to
the_/etc/sysctl.d/98-oracle-kernel.conf_ file as follows:
fs.file-max = <value>
In order for the changes take effect immediately, run the following command:
# sysctl -p etc/sysctl.d/98-oracle-kernel.conf
NOTE
NOTE
A full listing of all the kernel parameters modified within the /etc/sysctl.d/98-oracle-
kernel.conf file can be found at Appendix E, Kernel Parameters (98-oracle-kernel.conf).
27
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
For the purposes of this reference environment, the Oracle Grid Infrastructure owner is the user grid
and the Oracle Database software owner is the user oracle. Each user is designated different groups
to handle specific roles based on the software installed. However, the creation of separate users requires
that both the oracle user and the grid user have a common primary group, the Oracle central
inventory group (OINSTALL).
The following are the recommended system groups created for the installation of the Oracle Database
and part of the oracle user.
OSOPER group (OPER) – an optional group created to assign limited DBA privileges (SYSOPER
privilege) to particular OS user accounts
OSDGDBA group (DGDBA) – an optional group created to assign limited administrative privileges
(SYSDG privilege) to a user for administering and monitoring Oracle Data Guard
OSKMDBA group (KMDBA) – an optional group created to assign limited administrative privileges
(SYSKM privilege) to a user for encryption key management when using Oracle Wallet Manager
OSRACDBA group (RACDBA privilege) - grants the SYSRAC privileges to perform administrative tasks
on an Oracle RAC cluster.
NOTE
RACDBA group is still used even within the Oracle Database Standalone server.
The following are the recommended system groups created for the installation of the Oracle Grid
Infrastructure and part of the grid user:
OSDBA group (ASMDBA privilege) – provides administrative access to Oracle ASM instances
OSASM group (ASMADMIN privilege) – provides administrative access for storage files via the
SYSASM privilege
OSOPER group (ASMOPER privilege) – an optional group created to assign limited DBA privileges with
regards to ASM to particular OS user accounts
OSRACDBA group (RACDBA privilege) - grants the SYSRAC privileges to perform administrative tasks
on an Oracle RAC cluster.
NOTE
RACDBA group is still used even within the Oracle Database Standalone server.
28
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
As the root user, create the following user accounts, groups, and group assignments using a consistent
UID and GID assignments across your organization:
Verify the oracle and grid user correctly display the appropriate primary and supplementary groups
via the commands:
# id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),
54323(asmdba),54326(oper),54327(backupdba),54328(dgdba),54329(kmdba),
54330(racdba)
# id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),54322(dba),
54323(asmdba),54324(asmoper),54325(asmadmin),54330(racdba)
3.3.15. Setting Shell Limits for the Grid and Oracle User
Oracle recommends the following settings for the soft and hard limits for the number of open file
descriptors (nofile), number of processes (nproc), and size of the stack segment (stack) allowed by each
user respectively. The purpose of setting these limits is to prevent a system wide crash that could be
caused if an application, such as Oracle, were allowed to exhaust all of the OS resources under an
extremely heavy workload.
# touch /etc/security/limits.d/99-grid-oracle-limits.conf
NOTE
The reason that the /etc/security/limits.conf file is not directly modified is due to the order
in which limit files are read in the system. After reading the /etc/security/limits.conf file,
files within the /etc/security/limits.d/ directory are read. If two files contain the same entry,
the entry read last takes precedence. For more information visit Red Hat Article: “What
order are the limit files in the limits.d directory read in?8
29
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
Within the /etc/security/limits.d/99-grid-oracle-limits.conf file, add the following soft and hard limits for the
oracle and grid user:
Due to Bug 1597142116, the soft limit of nproc is not adjusted at runtime by the Oracle database. Due
to this, if the nproc limit is reached, the Oracle database may become unstable and not be able to fork
additional processes. A high enough value for the maximum number of concurrent threads for the given
workload must be set, or use the hard limit value of 16384 as done above if in doubt.
NOTE
8: What order are limits files in the limits.d directory read in?
As the root user, create a shell script labeled oracle-grid.sh within /etc/profile.d/ to create
the ulimits for the oracle and grid user. The contents of the oracle-grid.sh script:
30
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
NOTE
While the ulimit values can be set directly within the /etc/profile file, it is recommended to
create a custom shell script within /etc/profile.d instead. The oracle-grid.sh script can
be downloaded from the Appendix I, Configuration Files
As oracle and grid user, verify the ULIMIT values by running the following command:
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 385878
max locked memory (kbytes, -l) 14854144
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 16384
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
For security purposes, CHAP (Challenge-Handshake Authentication Protocol) is used to validate the
identity of the node(s) connecting to it. The process includes creating a secret username and password
to authenticate on each node(s). The details on enabling CHAP within the iSCSI storage itself may vary
depending on the vendor. Within the Dell EqualLogic PS Array the steps are as follows:
Within the popup dialog box, enter the appropriate credentials and select OK.
Once the CHAP user is created within the iSCSI storage array, the following steps are required for each
node(s).
31
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
2. Modify the /etc/iscsi/iscsid.conf file with the CHAP credentials. An example below only shows the
sections modified within CHAP Settings.
# *************
# CHAP Settings
# *************
1. Verify Ethernet devices em3 and em4 can ping the Dell EqualLogic group IP.
2. Create an iSCSI interface (iface) for each storage NIC. While the interface can have any
32
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
name, for easy identification purposes the iface are labeled iem3 iem4.
# iscsiadm -m iface
iem3 tcp,<empty>,<empty>,em3,<empty>
iem4 tcp,<empty>,<empty>,em4,<empty>
# iscsiadm -m session
NOTE
Ensure Oracle database volumes are accessible via the operating system prior to
continuing with the section below
1. As the root user, install the device-mapper-multipath package using the yum package
manager.
33
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
# mpathconf --enable
3. Capture the scsi id of the local disk(s) on the system. This example assumes the local disk is
located within /dev/sda
4. Modify the blacklist section at the bottom of the /etc/multipath.conf file to include the scsi
id of the local disk on the system. Once complete, save the changes made to the
multipath.conf file.
NOTE
Notice how the wwid matches the value found in the previous step.
blacklist {
wwid 3600508b1001030353434363646301200
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
}
7. Identify the dm- device, size, and WWID of each device mapper volume for Oracle data disks
and recovery disks. In this example, volume mpathb is identified via the following command:
# multipath -ll
34
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
Figure 3.1, “Multipath Device (mpathb)” properly identifies the current multipath alias name,
size, WWID, and dm device. This information is required for the application of a custom alias to
each volume as shown in step 9.
8. The default values used by device-mapper-multipath can be seen using the command
multipathd show config. Below is an example of the default output.
defaults {
verbosity 2
polling_interval 5
max_polling_interval 20
reassign_maps "yes"
multipath_dir "/lib64/multipath"
path_selector "service-time 0"
path_grouping_policy "failover"
uid_attribute "ID_SERIAL"
prio "const"
prio_args ""
features "0"
path_checker "directio"
alias_prefix "mpath"
failback "manual"
rr_min_io 1000
rr_min_io_rq 1
max_fds 1048576
rr_weight "uniform"
queue_without_daemon "no"
flush_on_last_del "no"
user_friendly_names "yes"
fast_io_fail_tmo 5
bindings_file "/etc/multipath/bindings"
wwids_file /etc/multipath/wwids
log_checker_err always
find_multipaths yes
retain_attached_hw_handler no
detect_prio no
detect_path_checker no
hw_str_match no
force_sync no
deferred_remove no
ignore_new_boot_devs no
skip_kpartx no
config_dir "/etc/multipath/conf.d"
delay_watch_checks no
delay_wait_checks no
retrigger_tries 3
retrigger_delay 10
missing_uev_wait_timeout 30
new_bindings_in_boot no
remove_retries 0
disable_changed_wwids no
}
35
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
NOTE
The standard options can be customized to better fit the storage array
capabilities. Check with your storage vendor for details.
9. Uncomment the multipath section found within the /etc/multipath.conf file and create an
alias for each device mapper volume in order to enable persistent naming of those volumes.
Once complete, save the changes made to the multipath.conf file. The output should
resemble the example below. For reference, refer to the Oracle data volumes created for this
reference environment displayed in Table 2.6, “Oracle Data File Sizes for Reference
Architecture”.
multipaths {
multipath {
wwid 3600c0ff000d7e7a899d8515101000000
alias db1
}
multipath {
wwid 3600c0ff000dabfe5a7d8515101000000
alias db2
}
multipath {
wwid 3600c0ff000d7e7a8dbd8515101000000
alias fra
}
multipath {
wwid 3600c0ff000dabfe5f4d8515101000000
alias redo
}
}
11. Verify the device mapper paths and aliases are displayed properly. Below is an example of one
device mapper device labeled fra.
# multipath -ll
fra (3600c0ff000d7e7a89e85ac5101000000) dm-10 EQL,100E-00
size=186G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
| |- 3:0:0:3 sdd 8:48 active ready running
| |- 3:0:1:3 sdh 8:112 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
|- 3:0:2:3 sdl 8:176 active ready running
|- 3:0:3:3 sdp 8:240 active ready running
36
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
Once the partition is created, a newly created device mapper device is created as db1p1.
# ls -l /dev/mapper/db1p1
lrwxrwxrwx. 1 root root 8 Apr 16 15:15 /dev/mapper/db1p1 -> ../dm-11
NOTE
A newly created partition alias name ending in a number i.e. db1 requires the alias name
followed by p1 such as db1p1 seen above. If p1 is missing, please run the following
kpartx command to add the partition mappings to the device mapper disks.
# kpartx -a /dev/mapper/db1
If the following kpartx command does not add the p1 suffix to the partitions ending in a number or
letter, reboot the system.
NOTE
If a newly created partition alias name ends in a letter i.e. fra, the alias name will be
followed by just the partition number, i.e. fra1.
The following table provides key considerations between udev rules, Oracle ASMLib and Oracle ASM
Filter Driver (ASMFD).
udev rules No proprietary user space utilities; Cannot stop an accidential I/O
native to OS; standard device write done by a program or user
manager on Linux distributions; error
same performance as Oracle
ASMLib and ASMFD
37
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
Oracle ASM Filter Driver Filters out all non-Oracle I/Os that Requires additional kernel module
may cause accidental overwrites on OS; disks managed by Oracle
to managed disks instead of native OS; errors
loading ASMFD may cause losing
access of Oracle ASM disks until
module can be reloaded; no
performance benefit over native
udev rules
This reference architecture takes advantage of Red Hat’s native device manager udev rules as the
method of choice for configuring Oracle ASM disks. For more information on Oracle ASM Filter Driver
and installation method, visit: Administering Oracle ASM Filter Driver
3.4.5.1. Oracle ASMLib and Oracle ASM Filter Driver Alternative: Configuring udev Rules
This section focuses on the best practices of using Red Hat’s native udev rules to setup the appropriate
permissions for each device mapper disk.
1. As the root user, identify the Device Mapper Universally Unique Identifier (DM_UUID) for each
device mapper volume. The example below shows the DM_UUID for the partitions of the
volumes labeled db1p1,db2p1,fra1,redo1.
db1p1 E: DM_UUID=part1-mpath-3600c0ff000d7e7a899d8515101000000
db2p1 E: DM_UUID=part1-mpath-3600c0ff000dabfe5a7d8515101000000
fra1 E: DM_UUID=part1-mpath-3600c0ff000d7e7a8dbd8515101000000
redo1 E: DM_UUID=part1-mpath-3600c0ff000dabfe5f4d8515101000000
3. Within 99-oracle-asmdevices.rules file, create rules for each device similar to the example
below:
KERNEL=="dm-*",ENV{DM_UUID}=="part1-mpath-
3600c0ff000dabfe5f4d8515101000000",OWNER="grid",GROUP="asmadmin",MOD
E="06
60"
To understand the rule above, it can be read as follows: If any dm- device (dm-*) matches the
DM_UUID of part1-mpath- 3600c0ff000dabfe5f4d8515101000000, assign that dm-
device to be owned by the grid user and part of the asmadmin group with the permission mode
set to 0660.
5. Locate the dm- device for each Oracle related partition. An example of how to find the dm-
device for each partition is to run the following command:
# for i in db1p1 db2p1 fra1 redo1; do printf “%s %s\n” “$i” “$(ls -
ll \
38
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
6. Apply and test the rules created within the 99-oracle-asmdevices.rules by running a udevadm
test on each device.
# ls -lh /dev/dm-11
brw-rw----. 1 grid asmadmin 253, 11 Jun 6 20:59 /dev/dm-11
NOTE
In order to simplify the tuning process for Oracle databases, the creation of a custom oracle profile
labeled tuned-profiles-oracle resides in the rhel-7-server-optional-rpms repository. The
tuned-profiles-oracle profile uses the throughput performance profile as its foundation and
additionally sets all the different parameters mentioned in previous sections of this reference architecture
and disables Transparent HugePages (THP) for Oracle databases workload environments.
For more information on why THP is disabled, see Section 4.5, “Enabling HugePages”. Table 3.5,
“Profile Tuned Profile Comparsion” provides details between the balanced profile, throughput-
performance profile, and the custom profile tuned-profiles-oracle.
39
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
File-system barrier on on on
vm.dirty_expire_centisec - - 500 *
s
vm.dirty_writeback_centi - - 100 *
secs
kernel.shmmax - - 439804651110417*
kernel.shmall - - 107374182417 *
40
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
fs.file-max - - 681574417*
fs.aio-max-nr - - 104857617*
tcp_rmem_max - - 4194304*
tcp_wmem_max - - 104857617*
kernel.panic_on_oops - - 1*
The values expressed within the tuned-profiles-oracle are subject to change. The values
found within the tuned-profiles-oracle are meant to be used as starting points and may
require changes for the specific environment being tuned for the optimal performance of the
Oracle Database environment.
The following procedures provide the steps that are required to install, enable, and select the tuned-
profiles-oracle profile.
41
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .\*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=myvg/swap rd.lvm.lv=myvg/usr
vconsole.font=latarcyrheb-sun16 rd.lvm.lv=myvg/root crashkernel=auto
vconsole.keymap=us rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-
41c535c189b842eea5a8c20cbd9bff26
Found initrd image: /boot/initramfs-0-rescue-
41c535c189b842eea5a8c20cbd9bff26.img
done
NOTE
If at any point in time a revert to the original settings are required with persistence across
reboots, the following commands can be run:
NOTE
The purpose of the tuned-profiles-oracle profile is to provide a starting baseline for an Oracle
Database deployment. When further customization is required, the following section describes how to
modify the profiles settings to meet custom criteria.
42
CHAPTER 3. REFERENCE ARCHITECTURE CONFIGURATION DETAILS
In order to modify the existing tuned-profiles-oracle profile, changes to the tuned.conf file
within /usr/lib/tuned/oracle is required. Due to the changes since Red Hat Enterprise Linux 7.0, the
following are recommendations for changes when running Red Hat Enterprise Linux 7.1 or higher.
The following parameters are commented out due to higher values being used by Red Hat Enterprise
Linux 7.1 or higher with a default installation. The list includes:
#kernel.shmmax = 4398046511104
#kernel.shmall = 1073741824
#kernel.shmmni = 4096
#fs.file-max = 6815744
#kernel.panic_on_oops = 1
Example of tuned.conf
#
# tuned configuration
#
[main]
summary=Optimize for Oracle RDBMS
include=throughput-performance
[sysctl]
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
#kernel.shmmax = 4398046511104
#kernel.shmall = 1073741824
#kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
#kernel.panic_on_oops = 1
[vm]
transparent_hugepages=never
As mentioned earlier, all these values are starting points and may require additional adjustments to meet
an environment’s requirements.
43
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
NOTE
The reference environment uses the /u01/app/12.2.0/grid as the Grid home. The
owner is set to grid and the group is set to oinstall.
The following commands create the Grid home directory and set the appropriate permissions:
1. Download the Oracle Grid Infrastructure software files9 from the Oracle Software Delivery Cloud
2. Change the ownership and permissions of the downloaded file, move the fileto the Grid home
and install unzip package for unpackaging of the file.
# cd <grid_download_location>
# chown grid.oinstall V840012-01.zip
# mv V840012-01.zip /u01/app/12.2.0/grid
# yum install unzip
3. ssh as the grid user with the -Y option, change directory into the Grid home
/u01/app/12.2.0/grid and unzip the download zip file.
ssh -Y grid@<hostname>
$ cd /u01/app/12.2.0/grid
$ unzip -q V840012-01.zip
$ /u01/app/12.2.0/grid/gridSetup.sh
NOTE
Ensure to issue ssh with the -Y option as the grid user from the client server.
Otherwise, a DISPLAY error may occur.
44
CHAPTER 4. ORACLE 12C RELEASE 2 CONFIGURATION
5. Within the Configuration Option window, select Configure Oracle Grid Infrastructure for a
Standalone Server (Oracle Restart) and select Next.
6. Within the Create ASM Disk Group window, provide the following:
Redundancy Level
External - redundancy provided by the storage system RAID, and not by Oracle ASM
Normal - provides two-way mirroring by Oracle ASM, thus provided two copies of every
data extent.
High provides three-way mirroring by Oracle ASM thus enduring the loss of two ASM
disks within different failure groups.
NOTE
A 4MB AU size is used to crease the amount of extents Oracle needs to manage. With
less extends to manage, CPU utilization and memory consumption is reduced thus
improving performance. The AU size varies depending on the type of Oracle workload,
I/O size per transaction, and overall diskgroup size. There is no "best size" for AU size,
but a good starting point is 4 MB. Please visit Oracle’s documentation10 for more
information.
45
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
To display the appropriate candidate disks, click on the Change Discovery Path button
and enter as the Disk Discovery Path one of the following as appropriate:
7. Click Next once complete within the Create ASM Disk Group window.
8. Within the ASM Password window, specify the password for the SYS and ASMSNMP user
accounts, click Next.
9. Within the Management Options window, ensure the Register with Enterprise Manager (EM)
Cloud Control is unchecked, click Next.
10. Within the Operating System Groups window, select the appropriate OS groups and click
Next. The values as created and assigned within this reference environment are as follows:
46
CHAPTER 4. ORACLE 12C RELEASE 2 CONFIGURATION
11. Within the Installation Location window, specify the appropriate Oracle base and software
locations and click Next. The values set by this reference environment are as follows:
12. Within the Create Inventory window, specify the inventory directory and click Next. The values
set by this reference environment are as follows:
13. Within the Root script execution configuration window, select the check box labeled
Automatically run configuration scripts and enter the root user credentials. The step specifying
the root user credentials in order to run specific configuration scripts automatically at the end of
the installation is optional. For the purposes of this reference environment, the root credentials
are given in order to speed up the Oracle Grid Infrastructure installation process. Click Next.
47
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
14. Within the Prerequiste Checks window, review the status and ensure there are no errors prior
to continuing the installation. For failures with a status set to Fixable, select the Fix & Check
Again button. The execution of the Fix & Check Again button provides a runfixup.sh script
provided by the OUI. If selected, Automatically run configuration scripts from the previous
step, the Oracle OUI uses the root credentials and runs the fixup.sh script automatically.
Otherwise, as root, run the
/tmp/gGridSetupActions_<timestamp>/CVU_<grid_version>_grid/runfixup.sh
and click on the Check Again button once the runfixup.sh has finished.
15. Within the Summary window, review all the information provided, and select Install to start the
installation.
16. During the installation process, within the Oracle Grid Infrastructure pop up window, select yes
to allow the installer to run as the root user to execute the configuration scripts.
17. Within the Finish window, verify the installation was successful and click Close.
48
CHAPTER 4. ORACLE 12C RELEASE 2 CONFIGURATION
NOTE
The reference environment uses the /u01/app/oracle as the Oracle base. The owner
is set to oracle and the group is set to oinstall.
The following commands create the Oracle base directory and set the appropriate permissions:
1. Download the Oracle Database software files9 from the Oracle Software Delivery Cloud
2. Change the ownership and permissions of the downloaded file, move the file to the Oracle home
and install unzip package for unpackaging of the file.
# cd <oracle_download_location>
# chown oracle.oinstall V839960-01.zip
# mv V839960-01.zip /u01/app/oracle-software
3. ssh as the oracle user, change directory into the /u01/app/oracle-software and unzip
the download zip file.
ssh -Y oracle@<hostname>
$ cd /u01/app/oracle-software
$ unzip -q V839960-01.zip
$ /u01/app/oracle-software/database/runInstaller
NOTE
Ensure to issue ssh with the -Y option as the oracle user from the client server.
Otherwise, a DISPLAY error may occur.
5. Within the Configure Security Updates window, provide the My Oracle Support email address
for the latest security issues information. Otherwise uncheck the I wish to receive security
updates via My Oracle Support and click Next.
6. Within the Installation Option window, select Install database software only and click Next.
49
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
7. Within the Database Installation Options window, select Single Instance database installation
as the type of database installation being performed and click Next.
50
CHAPTER 4. ORACLE 12C RELEASE 2 CONFIGURATION
8. Within the Database Edition window, select the appropriate database edition and click Next.
For the purposes of this reference environment, Enterprise Edition is the edition of choice.
9. Within the Installation Location window, select the appropriate Oracle base and software
location and click Next. For the purposes of this reference environment, the following values are
set:
10. Within the Operating System Groups window, select the appropriate OS groups and click
Next. For the purposes of this reference environment, the following values are set as:
11. Within the Summary window, review all the information provided, and select Install to start the
installation.
12. Once the installation completes, execute the scripts within the Execute Configuration scripts
window. As the root user, run the following:
# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh
51
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
NOTE
14. Within the Finish window, verify the installation was successful and click Close.
1. ssh with the -Y option as the grid user is required prior to running asmca.
$ /u01/app/12.2.0/grid/bin/asmca
NOTE
3. Via the asmca application, select the Disk Groups and click Create.
52
CHAPTER 4. ORACLE 12C RELEASE 2 CONFIGURATION
NOTE
To display the appropriate eligible disks, click on the Change Discovery Path button and
enter as the Disk Discovery Path one of the following as appropriate:
2. Repeat the above steps to configure additional disk groups. It is recommended to create a
diskgroup to separate the Redo logs, however, it is not required.
3. Once all the disk groups are created, click the Exit button from the main ASM Configuration
Assistant window. Click yes when asked to confirm quitting the application.
53
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
A CDB consists of two types of containers: the root container and all the pluggable databases that attach
to a CDB.
Root container11 – also known as the root, is a collection of schemas, schema objects, and nonschema
objects to which all PDBs belong. Every CDB has one and only one root container, that stores the system
metadata required to manage PDBs (no user data is stored in the root container). All PDBs belong to the
root. The name of the root container is CDB$ROOT.
PDB 11– is a user-created set of schemas, objects, and related structures that appears logically to an
application as a separate database. Every PDB is owned by SYS, that is a common user in the CDB,
regardless of which user created the CDB.
11: https://docs.oracle.com/database/122/ADMIN/overview-of-managing-a-multitenant-
environment.htm#ADMIN13507
The following section describes the step-by-step procedure to create a container database (CDB) that
holds two pluggable databases (PDB) thus taking advantage of Oracle’s Multitenant architecture.
1. ssh with the -Y option as the oracle user prior to running dbca.
2. As the oracle user, run the dbca utility via the command:
$ /u01/app/oracle/product/12.2.0/dbhome_1/bin/dbca
NOTE
3. Within the Database Operations window, select Create a database radio button and click Next.
4. Within the Creation Mode window, select Advanced Mode radio button and click Next.
5. Within the Database Template window, select Database Type as Oracle Single Instance
database and Custom Database radio button. Click Next.
6. Within the Database Identification window, set a global database name and Oracle System
Identifier (SID), i.e. cdb. Check the check box that reads Create as Container Database. Select
the number of PDBs to install and provide a PDB Name Prefix, i.e. orclpdb and click Next. This
reference environment creates two PDBs.
54
CHAPTER 4. ORACLE 12C RELEASE 2 CONFIGURATION
7. Within the Storage Option window, select Use following for the database storage attributes
radio button. Change the Database file storage type: to Automatic Storage Management (ASM).
Within the _Database file location: select the Browse button and pick the database disk group,
i.e. +DATA. Select the Mutliplex redo logs and control files and enter the name of the redo log
disk group (if created previously), i.e. +REDODG.
NOTE
55
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
8. Within the Fast Recovery Option window, check the checkbox labeled Specify Fast Recovery
Area, and select the Browse button to pick the diskgroup that is to be assigned for Fast
Recovery Area, i.e. +FRADG. Enter an appropriate size based upon the size of the disk group.
56
CHAPTER 4. ORACLE 12C RELEASE 2 CONFIGURATION
9. Within the Network Configuration window, ensure the LISTENER is checked and click Next.
10. Within the Database Options window, select the database components to install. This reference
environment kept the defaults. Once selected, click Next.
11. Within the Configuration Options window, ensure the Use Automatic Shared Memory
Segment is selected, and use the scroll bar or enter the appropriate SGA and PGA values for
the environment. The remaining tabs, Sizing, Character sets, Connection mode, the defaults are
used.
12. Within the Management Options window, modify the Enterprise Manager database port or
deselect Configure Enterprise (EM) database express if not being used. This reference
architecture uses the defaults and selected Next.
13. Within the User Credentials window, enter the credentials for the different administrative users
and click Next.
14. Within the Creation Option window, ensure the Create database checkbox is selected. This
refernece architecture uses the defaults for all other options, but may be customizable to fit an
environment’s requirements.
15. Within the Summary window, review the Summary, and click Finish. to start the database
creation.
1. Copy the bash script found within Appendix C, Huge Pages Script and save it as
huge_pages_settings.sh
# chmod +x huge_pages_settings.sh
# yum install bc
57
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
# /path/to/huge_pages_settings.sh
Recommended setting within the kernel boot command line: hugepages =
<value>
Recommended setting within /etc/security/limits.d/99-grid-oracle-
limits.conf:
oracle soft memlock <value>
Recommended setting within /etc/security/limits.d/99-grid-oracle-
limits.conf:
oracle hard memlock <value>
5. Add the number of hugepages provided by the script to the kernel boot command line within the
/etc/default/grub as follows:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .\*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="nofb splash=quiet crashkernel=auto
rd.lvm.lv=myvg/root rd.lvm.lv=myvg/swap rd.lvm.lv=myvg/usr rhgb
quiet transparent_hugepage=never hugepages=<value-provided-by-
script>"
GRUB_DISABLE_RECOVERY="true"
NOTE
Allocating the number of huge pages within the kernel boot command line is the
most reliable method due to memory not yet becoming fragmented. 13
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.1.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.1.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-
f9650ab62cd449b8b2a02d39ac73881e
Found initrd image: /boot/initramfs-0-rescue-
f9650ab62cd449b8b2a02d39ac73881e.img
done
7. Oracle requires setting the soft and hard limits to memlock. Setting memlock allows the oracle
user to lock a certain amount of memory from physical RAM that isn’t swapped out. The value is
expressed in kilobytes and is important from the Oracle perspective because it provides the
oracle user permission to use huge pages. This value should be slightly larger than the largest
SGA size of any of the Oracle Database instances installed in an Oracle environment. To set
memlock, add within /etc/security/limits.d/99-grid-oracle-limits.conf the following:
58
CHAPTER 4. ORACLE 12C RELEASE 2 CONFIGURATION
Reboot the system to ensure the huge pages setting takes effect properly.
8. Verify the value provided by the huge_pages_settings.sh matches the total number of huge
pages available on the node(s) with the following command:
9. Verify the current status of the transparent huge pages is set to never via the command:
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
12: ALERT: Disable Transparent HugePages on SLES11,RHEL6,OEL6 and UEK2 Kernels (DOC ID:
1557478.1)
13: https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt
59
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
1. Set the environment variable for ORACLE_HOME with the location of the Oracle home. This
reference environment sets ORACLE_HOME to /u01/app/oracle/product/12.2.0/dbhome_1
$ export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
$ echo $ORACLE_HOME
/u01/app/oracle/product/12.2.0/dbhome_1
NOTE
As a precaution, ensure not to include a trailing forward slash (/) when exporting
the ORACLE_HOME.
2. Set the Oracle System ID (ORACLE_SID) used to identify the CDB database.
$ export ORACLE_SID=cdb
$ echo ORACLE_SID
cdb
3. Invoke the sqlplus binary to log into the Oracle instance as sysdba.
$ $ORACLE_HOME/bin/sqlplus / as sysdba;
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
60
CHAPTER 5. LOGGING INTO THE ORACLE CONTAINER DATABASE 12C RELEASE 2
WARNING
The following step requires that there is enough physical RAM on the
system to place the entire SGA in large pages. If there is not enough RAM,
the Oracle database instance won’t start. If there is not enough RAM on the
system to place the entire SGA into large pages, leave the default setting
and ignore the remaining steps within this section.
5. Set the value of the Oracle parameter use_large_pages to the value of only
6. Shutdown the Oracle database instance and restart the Oracle database instance.
SQL> startup;
ORACLE instance started.
7. Verify the current value of the Oracle paramter use_large_pages is now set to only.
8. Open the container database’s alert log, named alert_<name-of-cdb>.log, located under the
$ORACLE_BASE/diag/rdbms/<name-of-cdb>/<name-of-cdb>/trace/ using a text editor, such as
vi, and search for the following snippet to ensure that the System Global Area (SGA) is 100% in
large pages.
********************************************************************
**
2017-09-05T19:09:49.134349+00:00
Dump of system resources acquired for SHARED GLOBAL AREA (SGA)
61
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
2017-09-05T19:09:49.134648+00:00
Per process system memlock (soft) limit = 30G
2017-09-05T19:09:49.134810+00:00
Expected per process system memlock (soft) limit to lock
SHARED GLOBAL AREA (SGA) into memory: 30G
2017-09-05T19:09:49.135130+00:00
Available system pagesizes:
4K, 2048K
2017-09-05T19:09:49.135431+00:00
Supported system pagesize(s):
2017-09-05T19:09:49.135585+00:00
PAGESIZE AVAILABLE_PAGES EXPECTED_PAGES ALLOCATED_PAGES
ERROR(s)
2017-09-05T19:09:49.135905+00:00
2048K 15235 15234 15234
NONE
2017-09-05T19:09:49.136094+00:00
Reason for not supporting certain system pagesizes:
2017-09-05T19:09:49.136253+00:00
4K - Large pagesizes only
2017-09-05T19:09:49.136405+00:00
********************************************************************
**
NOTE
This reference environment’s SGA size is set to 30 GB, however, this value varies
depending on the value provided when creating an Oracle database using dbca.
62
CHAPTER 6. COMMON TASKS WHEN MANAGING CONTAINER DATABASE (CDB) AND PLUGGABLE DATABASES (PDB)
Connect to a CDB
Connect to a PDB
Managing a CDB
Managing a PDB
1. Set the environment variable for ORACLE_HOME with the location of the Oracle home. This
reference environment sets ORACLE_HOME to /u01/app/oracle/product/12.2.0/dbhome_1
$ export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
$ echo $ORACLE_HOME
/u01/app/oracle/product/12.2.0/dbhome_1
NOTE
As a precaution, ensure not to include a trailing forward slash (/) when exporting
the ORACLE_HOME.
2. Set the Oracle System ID (ORACLE_SID) used to identify the CDB database.
$ export ORACLE_SID=cdb
$ echo ORACLE_SID
cdb
3. Invoke the sqlplus binary to log into the Oracle instance as sysdba.
$ $ORACLE_HOME/bin/sqlplus / as sysdba;
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
4. Once connected, verify that the instance is connected to the root container, CDB$ROOT with a
CON_ID is 1.
63
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
CON_NAME
------------------------------
CDB$ROOT
CON_ID
------------------------------
1
NOTE
5. List all the available services and PDBs within the CDB:
NAME CON_ID
------------------------------------------------
orclpdb2 4
SYS$BACKGROUND 1
SYS$USERS 1
cdbXDB 1
orclpdb1 3
cdb 1
6 rows selected.
Without an entry to the tnsnames.ora file, the syntax to connect to a PDB named orclpdb1 is as follows:
$ $ORACLE_HOME/bin/sqlplus sys/<password>@localhost:1521/orclpdb1 as
sysdba;
SQL*Plus: Release 12.2.0.1.0 Production on Tue Sep 5 20:20:29 2017
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit
Production
64
CHAPTER 6. COMMON TASKS WHEN MANAGING CONTAINER DATABASE (CDB) AND PLUGGABLE DATABASES (PDB)
NOTE
With an entry to the tnsnames.ora file, the syntax to connect to a PDB named orclpdb1 is as follows:
A snippet of the entry found within the tnsnames.ora file is displayed below:
$ORACLE_BASE/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
PDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <FQDN_hostname>)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb1)
)
)
1. Connect to the CDB database as a SYSDBA using sqlplus. The steps are the same as shown
in <connect_cdb>> steps one through three.
CON_NAME
------------------------------
CDB$ROOT
SQL> startup;
The startup command starts the instance, mounts the control files, and then opens the root container.
65
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
This section focuses on verifying the OPEN_MODE of a PDB, how to open and close a specific PDB,
and how to open and close all PDBs within a CDB.
1. Verify the open_mode status of all the PDBs, while logged in as a SYSDBA in the CDB, use the
following command
NAME OPEN_MODE
--------------------------------------
PDB$SEED READ ONLY
ORCLPDB1 MOUNTED
ORCLPDB2 MOUNTED
2. When a PDB is closed, the OPEN_MODE is set to MOUNTED. To open a PDB and verify the
new OPEN_MODE of READ WRITE, run the following SQL syntax while logged in as a
SYSDBA in the CDB:
NAME OPEN_MODE
--------------------------------------
PDB$SEED READ ONLY
ORCLPDB1 READ WRITE
ORCLPDB2 MOUNTED
3. Open all the PDBs connected to a CDB and verify the new OPEN_MODE of READ WRITE, run
the following SQL syntax while logged in as a SYSDBA in the CDB:
NAME OPEN_MODE
--------------------------------------
PDB$SEED READ ONLY
ORCLPDB1 READ WRITE
ORCLPDB2 READ WRITE
4. To drop a particular PDB i.e. orclpdb2, and its data files, execute the following SQL syntax while
logged in as a SYSDBA in the CDB:
66
CHAPTER 6. COMMON TASKS WHEN MANAGING CONTAINER DATABASE (CDB) AND PLUGGABLE DATABASES (PDB)
5. To verify if the pluggable database with the name orclpdb2 has been dropped:
NAME OPEN_MODE
--------------------------------------
PDB$SEED READ ONLY
ORCLPDB1 READ WRITE
1. Connect to the CDB database as a SYSDBA using sqlplus. The steps are the same as shown in
Section 6.1, “Connect to a CDB” steps one through three.
2. To identify the tablespaces associated with the CDB or any of the PDBs installed, use the
following syntax where the con_id varies upon the database chosen. The example below uses
the con_id of 1 to show the CDB tablespaces.
TABLESPACE_NAME CON_ID
------------------------------ ----------
SYSTEM 1
SYSAUX 1
UNDOTBS1 1
TEMP 1
USERS 1
3. To locate the data files from the CDB or PDBs installed, use the following syntax where the
con_id varies upon the database chosen. The example below uses the con_id of 1 to show
the CDB data file locations.
FILE_NAME CON_ID
----------------------------------------------------- ----------
-
+DATA/CDB/DATAFILE/system.270.836232071 1
+DATA/CDB/DATAFILE/sysaux.273.836232077 1
+DATA/CDB/DATAFILE/undotbs1.262.836232081 1
+DATA/CDB/DATAFILE/users.275.836232097 1
4. To locate the temporary files from the CDB or PDBs installed, use the following syntax where the
con_id varies upon the database chosen. The example below uses the con_id of 1 to show
the CDB data file locations.
67
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
-
+DATA/CDB/TEMPFILE/temp.278.836232081 1
68
CHAPTER 7. CONCLUSION
CHAPTER 7. CONCLUSION
Red Hat Enterprise Linux 7 provides an excellent foundation for database deployments with
demonstrated stability, scalability, and performance. With the support for Oracle 12c Release 2 on Red
Hat Enterprise Linux 7, customers can increasingly look to deploy Oracle Databases in advanced
configurations.
The steps and procedures described in this reference architecture should provide system, database, and
storage administrators the blueprint required to create a robust and performing solution based on Oracle
Databases. Administrators can reference this document to simplify and optimize the deployment process
and employ the latest best practices for configuring Red Hat technologies while implementing the
following tasks:
For any questions or concerns, please email refarch-feedback@redhat.com and ensure to visit the Red
Hat Reference Architecture page to find out about all of our Red Hat solution offerings.
69
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
APPENDIX A. CONTRIBUTORS
1. Ryan Cook (content reviewer)
70
APPENDIX B. DM MULTIPATH CONFIGURATION FILE
71
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
# multipath {
# wwid 3600508b4000156d700012000000b0000
# alias yellow
# path_grouping_policy multibus
# path_selector "round-robin 0"
# failback manual
# rr_weight priorities
# no_path_retry 5
# }
# multipath {
# wwid 1DEC_____321816758474
# alias red
# }
#}
# device {
# vendor "COMPAQ "
# product "HSV110 (C)COMPAQ"
# path_grouping_policy multibus
# path_checker readsector0
# path_selector "round-robin 0"
# hardware_handler "0"
# failback 15
# rr_weight priorities
# no_path_retry queue
# }
# device {
# vendor "COMPAQ "
# product "MSA1000 "
# path_grouping_policy multibus
# }
#}
72
APPENDIX C. HUGE PAGES SCRIPT
#!/bin/bash
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`
# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`
# Start from 1 pages to be on the safe side and guarantee 1 free HugePage
NUM_PG=1
# Cumulative number of pages required to handle the running shared memory
segments
for SEG_BYTES in `ipcs -m | awk '{print $5}' | grep "[0-9][0-9]*"`
do
MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
if [ $MIN_PG -gt 0 ]; then
NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
fi
done
# Finish with results
case $KERN in
'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
'2.6') MEM_LOCK=`echo "$NUM_PG*$HPG_SZ" | bc -q`;
echo "Recommended setting within the kernel boot command line: hugepages =
$NUM_PG"
echo "Recommended setting within /etc/security/limits.d/99-grid-oracle-
limits.conf:
oracle soft memlock $MEM_LOCK"
echo "Recommended setting within /etc/security/limits.d/99-grid-oracle-
limits.conf:
oracle hard memlock $MEM_LOCK" ;;
'3.10') MEM_LOCK=`echo "$NUM_PG*$HPG_SZ" | bc -q`;
echo "Recommended setting within the kernel boot command line: hugepages =
$NUM_PG"
echo "Recommended setting within /etc/security/limits.d/99-grid-oracle-
limits.conf:
oracle soft memlock $MEM_LOCK"
echo "Recommended setting within /etc/security/limits.d/99-grid-oracle-
limits.conf:
oracle hard memlock $MEM_LOCK" ;;
*) echo "Unrecognized kernel version $KERN. Exiting." ;;
esac
73
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
74
APPENDIX E. KERNEL PARAMETERS (98-ORACLE-KERNEL.CONF)
#NOTE: These are just starting values and are not a "one-size fits all"
solution.
NOTE
The following parameters have been removed as the default value is equal or higher than
the suggested recommendation by Oracle. Included in the list are:
kernel.shmmax
kernel.shmall
kernel.shmmni
fs.file-max
kernel.panic_on_oops
75
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
76
APPENDIX G. 99-ORACLE-ASMDEVICES.RULES
APPENDIX G. 99-ORACLE-ASMDEVICES.RULES
KERNEL=="dm-*",ENV{DM_UUID}=="
<UUID>",OWNER="grid",GROUP="asmadmin",MODE="0660"
NOTE
77
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
78
APPENDIX I. CONFIGURATION FILES
In order to access the GitHub files directly on the environment, the following steps are required:
As root user,
# cd /
# yum install -y git
# git clone https://github.com/RHsyseng/oracle.git
# cd /root/oracle
# git checkout oracle-12.2-single-instance
Branch oracle-12.2-single-instance set up to track remote branch oracle-
12.2-single-instance from origin.
Switched to a new branch 'oracle-12.2-single-instance'
# ls
98-oracle-kernel.conf 99-oracle-asmdevices.rules multipath.conf
README.md sample-ks.cfg
99-grid-oracle-limits.conf huge_pages_settings.sh oracle-grid.sh
req-rpm.txt
79
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
NOTE
The following steps are intended to produce an ORA-07445 error that can be
troubleshooted using the ADRCI tool. Do not attempt on a Oracle Database Production
environment. The following is for demonstration purposes only and intended only to show
how to troubleshoot ORA-* related errors using the ADRCI tool.
1. In order to create an ORA-07445 error, an essential Oracle process is killed via the following
commands:
$ export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
$ $ORACLE_HOME/bin/adrci
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights
reserved.
4. At the ADRCI prompt , show Oracle Home’s available via the command:
NOTE
If more than one Oracle Home is available, one must specify a particular Oracle
Database Home. AN example on how to set to a particular Oracle Database
Home is as follows:
80
APPENDIX J. TROUBLESHOOTING ORA-* ERRORS
5. At the ADRCI prompt run the following command to see the last 50 entries in the alert log:
NOTE
The above step is to view the alert log and check for errors. However, the
following commands simplify the process of viewing problems with the Oracle
deployment.
6. Within the ADRCI, there are two key terms to be aware of, problem and incident. An incident is a
particular time when a problem occurred. For example, it is possible for an Oracle process to
crash at different times with the same ORA-07445. The multiple occurences of the crash are
incidents, while the problem is still the ORA-07445 error. In order to view the problem, the
following ADRCI command needs to be run.
7. In order to view how many incidents, the following ADRCI command must be run. In this
example, I only have one incident in which the ORA-07445 problem occurred.
81
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
**********************************************************
INCIDENT INFO RECORD 1
**********************************************************
INCIDENT_ID 61553
STATUS ready
CREATE_TIME 2017-09-06 15:59:10.480000 +00:00
PROBLEM_ID 1
CLOSE_TIME <NULL>
FLOOD_CONTROLLED none
ERROR_FACILITY ORA
ERROR_NUMBER 7445
ERROR_ARG1 semtimedop
ERROR_ARG2 SIGSEGV
ERROR_ARG3 ADDR:0xD43100001DC3
ERROR_ARG4 PC:0x7FEA674FABDA
ERROR_ARG5 unknown code
ERROR_ARG6 <NULL>
ERROR_ARG7 <NULL>
ERROR_ARG8 <NULL>
ERROR_ARG9 <NULL>
ERROR_ARG10 <NULL>
ERROR_ARG11 <NULL>
ERROR_ARG12 <NULL>
SIGNALLING_COMPONENT <NULL>
SIGNALLING_SUBCOMPONENT <NULL>
SUSPECT_COMPONENT <NULL>
SUSPECT_SUBCOMPONENT <NULL>
ECID <NULL>
IMPACTS 0
CON_UID 1
PROBLEM_KEY ORA 7445 [semtimedop]
FIRST_INCIDENT 61553
FIRSTINC_TIME 2017-09-06 15:59:10.480000 +00:00
LAST_INCIDENT 61553
LASTINC_TIME 2017-09-06 15:59:10.480000 +00:00
IMPACT1 0
IMPACT2 0
IMPACT3 0
IMPACT4 0
KEY_NAME ProcId
KEY_VALUE 14.1
KEY_NAME Service
KEY_VALUE SYS$BACKGROUND
KEY_NAME PdbName
KEY_VALUE CDB$ROOT
KEY_NAME Client ProcId
KEY_VALUE
oracle@oracle1.e2e.bos.redhat.com.8480_140644811120448
KEY_NAME
SID/u01/app/oracle/diag/rdbms/cdb/cdb/incident/incdir_61553/cdb_dbrm
_8480_i61553.trc
KEY_VALUE 1695.17513
OWNER_ID 1
INCIDENT_FILE
/u01/app/oracle/diag/rdbms/cdb/cdb/trace/cdb_dbrm_8480.trc
OWNER_ID 1
82
APPENDIX J. TROUBLESHOOTING ORA-* ERRORS
INCIDENT_FILE
/u01/app/oracle/diag/rdbms/cdb/cdb/incident/incdir_61553/cdb_dbrm_84
80_i61553.trc
1 row fetched
NOTE
/u01/app/oracle/diag/rdbms/cdb/cdb/incident/incdir_61553/cdb_dbrm_84
80_i61553.trc
----------------------------------------------------------
LEVEL PAYLOAD
----- ----------------------------------------------------------
----------------------------------------------------------------
----------------------
Dump file
/u01/app/oracle/diag/rdbms/cdb/cdb/incident/incdir_61553/cdb_dbrm_84
80_i61553.trc
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 -
64bit Production
Build label: RDBMS_12.2.0.1.0_LINUX.X64_170125
ORACLE_HOME: /u01/app/oracle/product/12.2.0/dbhome_1
System name: Linux
Node name: oracle1.e2e.bos.redhat.com
Release: 3.10.0-693.1.1.el7.x86_64
Version: #1 SMP Thu Aug 3 08:15:31 EDT 2017
Machine: x86_64
Instance name: cdb
Redo thread mounted by this instance: 1
Oracle process number: 14
Unix process pid: 8480, image:
oracle@oracle1.e2e.bos.redhat.com (DBRM)
*** 2017-09-06T15:59:10.488444+00:00
*** SESSION ID:(1695.17513) 2017-09-06T15:59:10.488494+00:00
*** CLIENT ID:() 2017-09-06T15:59:10.488508+00:00
*** SERVICE NAME:(SYS$BACKGROUND) 2017-09-
06T15:59:10.488521+00:00
*** MODULE NAME:() 2017-09-06T15:59:10.488534+00:00
*** ACTION NAME:() 2017-09-06T15:59:10.488546+00:00
*** CLIENT DRIVER:() 2017-09-06T15:59:10.488557+00:00
*** CONTAINER ID:(1) 2017-09-06T15:59:10.488570+00:00
83
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
11. While this concludes how to examine trace files that pertain to a particular ORA error using
ADRCI; if the issue cannot be solved by the end user, the ADRCI provides the Incident
Packaging Service (IPS) tool to zip the necessary trace files based on the problem. It can be
then sent to support for further debugging. To create the appropriate zip file, use the following
commands:
NOTE
84
APPENDIX K. REFERENCES
APPENDIX K. REFERENCES
TECH: Unix Semaphores and Shared Memory Explained (DOC ID: 15566.1)
Tuning Red Hat Enterprise Linux For Oracle & Oracle RAC by Scott Crot, Sr.Consultant, Red
Hat, Inc.)
Maximum SHMMAX values for Linux x86 and x86-64 (ID 567506.1)
Pro Oracle Database 11g RAC on Linux – Installation, Administration, Performance by Steve
Shaw and Martin Bach
85
Reference Architectures 2017 Deploying Oracle Database 12c Release 2 on Red Hat Enterprise Linux 7
Initial Release
86