Jun 05

Oracle Linux


A modest collection of Linux commands, procedures and shortcuts useful for Oracle DBAs.

Applicable to Oracle Linux and RHEL.



Use the following links to jump to the item you need.



Create a Loopback Mount for an ISO File:

# mount -o loop /path_to_file.iso /mount_point_dir


Mount a CD/DVD:

You need to know the device path. Sometimes it’s /dev/cdrom. Sometimes it’s /dev/sr0.

# mount -t iso9660 /device_path /mount_point_dir


Create a Public Oracle Yum Repository for Oracle Linux 6:

# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol6.repo


Install X Windows xterm Client:

# yum install xterm


Install the Oracle Database 12c Pre-installation RPM for Linux:

# yum install oracle-rdbms-server-12cR1-preinstall.x86_64


Start an Ethernet Port Which is Non-operational or Down:

# ifconfig eth2 up     (where eth2 is the port name)


Create a filesystem and Not Waste Space Reserved for the Superuser:

# mkfs -t ext4 -m 0 /dev/xvdc1 (where /dev/xvdc1 is the partition name)


Diagnose Network Interface Configuration Weirdness:

Sometimes the installation of Grid Infrastructure (GI) does not show all the network interfaces. This can be down to not having configured an interface during the Linux install. All seems OK when you run the    “ifconfig -a” command, but under the covers, all might not be well.

Each interface has an interface configuration file called ifcfg-eth*. They are located in:


It is possible the interface not being listed during the GI install does not have a configuration file. Using the     system-config-network utility won’t create it either and returns an error when trying to configure the interface.

A new interface configuration file can be created by copying an existing one and renaming it for the interface you’re trying to configure. You will need to edit some of the entries to make it specific to the interface you’re working on. Here’s a typical configuration file:

DEVICE=eth1 <-- this needs changing
UUID=e8347ba9-9e19-4484-9191-95fdc9fc2a4c <-- this needs changing
HWADDR=00:21:f6:0c:04:19 <-- this needs changing
IPADDR= <-- this needs changing

The trick is to generate a UUID for the network interface. This is done with the uuidgen command:

# uuidgen eth1  (where eth1 is the name of the port you're interested in)


Turn Off Linux Firewall:

The Linux firewall still being up and running can cause a variety of errors when installing and configuring Oracle Grid Infrastructure. Again, when working on the Specify Network Interface Usage screen of the GI installation, an active firewall can cause this error:

[INS-41112] Specified network interface doesn’t maintain connectivity across cluster nodes

Running this pre-check can also generate all sorts of unpleasant output:

[grid@racnode1 grid]$ ./runcluvfy.sh comp nodecon -n racnode1,racnode2 -verbose

To verify the Linux firewall is still active and to shut it down, run these commands:

# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source      destination         
1    ACCEPT     all  --    state RELATED,ESTABLISHED
2    ACCEPT     icmp --           
3    ACCEPT     all  --           
4    ACCEPT     tcp  --    state NEW tcp dpt:22
5    REJECT     all  --    reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source      destination         
1    REJECT     all  --    reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source      destination
# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]

# chkconfig iptables off


Change the Hostname of an Oracle Linux/RHEL Server:

The hostname of the server is stored in this file:


The relevant line is:


Changing it here will not make it permanent. To do that, run this command then reboot:

# sysctl kernel.hostname=<hostname.domain>


Disable SELinux:

To check if SELinux is enabled, there are a couple of tests you can perform. First, try running the id command:

[root@racnode1 ~]# id
uid=0(root) gid=0(root) groups=0(root) 

If the output contains the line, “context=…”, then SELinux is enabled. You can also run the getenforce command:

[root@racnode1 ~]# getenforce

If the command returns “Enforcing” then SELinux is enabled. Good news, this is easy to fix. Simply edit the /etc/selinux/config file.

[root@racnode1 ~]# vi /etc/selinux/config

Change this line:


To this:


After you save the file, reboot for the change to take effect.


Disable Network Manager:

The Linux Network Manager has an annoying habit of overwriting the /etc/resolv.conf file each time the network service is started. If you make some custom changes to this file, you don’t want this file overwritten. The simplest and most effective way to stop this from happening is to convince the Network Manager to stay dead.

First, check if the Network Manager service is up and running:

[root@racnode1 ~]# service NetworkManager status
NetworkManager (pid 1902) is running...

If it’s running, stop it and keep it stopped with these commands:

[root@racnode1 ~]# service NetworkManager stop
Stopping NetworkManager daemon:                            [OK]

[root@racnode1 ~]# chkconfig NetworkManager off

Finally, lock down the /etc/resolv.conf file by making it read-only:

[root@racnode1 ~]# chattr +i /etc/resolv.conf

Note: To reverse the chattr command, use this command:

[root@racnode1 ~]# chattr -i /etc/resolv.conf


Use dd To Wipe Data:

The dd command is a useful way to wipe (overwrite with zeros) data on disk. This can be especially useful when you need to overwrite ASM disk headers:

if : input file (/dev/zero)

of : output file (the file which needs to be wiped)

bs: read and write this number of bytes at a time

count : copy this number of input blocks

[root@racnode1 ~]# dd if=/dev/zero of=/dev/iscsi/asm-disk01 bs=100 count=1000


Show TCP and UDP Ports In Use:

Sometimes you need to know which ports are being used on a Linux server.

[root@oraemcc ~]# netstat -antu

The Local Address column shows IP Address:PORT


Add a Swap File:

A quick and easy way to increase the swap space on a Linux server is to add a swap file.

First, find out how much swap you have:

[root@racnode1 /]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       4194300 340556  -1

Then create an empty file of the desired size using the dd command. The bs (Block Size) parameter multiplied by the count parameter gives you the size the file will be in bytes.

For example, 1024 x 1048576 = 1073741824 bytes (or 1 GB):

[root@racnode1 /]# dd if=/dev/zero of=/swapfile count=1024 bs=1048576
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.89133 s, 371 MB/s

[root@racnode1 /]# ls -l /swapfile
-rw-r--r-- 1 root root 1073741824 Feb  3 12:30 /swapfile

Next, tell Linux this file is a swap file using the mkswap command:

[root@racnode1 /]# mkswap -c /swapfile
mkswap: /swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=58babb34-0057-407d-a149-1530f7a8b3b3

Then add the swap file to the system swap:

[root@racnode1 /]# swapon /swapfile

Check the new swap file is part of the system swap:

[root@racnode1 /]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       4194300 340556  -1
/swapfile                               file            1048572 0       -2

Finally, add the swap file to the /etc/fstab file so it comes back after system re-starts:

/swapfile       swap    swap   defaults     0 0


Disk Usage Sorted by Size:

Sometimes we need to reclaim disk space. The best place to look for things to delete is in the directory using the most disk. This command will list the required number of sub-directories (–max-depth) in descending MB (-m) order:

[oracle@racnode1 oracle]$ du -m --max-depth 2 | sort -rn


Remove IPv6 Addressing:

You can confirm the presence of IPv6 addressing by checking the output of the ifconfig command. For example:

[root@racnode1 ~]# ifconfig eth0
eth0     Link encap:Ethernet HWaddr 00:21:F6:04:42:98
         inet addr: Bcast: Mask:
         inet6 addr: fe80::221:f6ff:fe04:4298/64 Scope:Link
         inet6 addr: 2002:4b49:1933:0:221:f6ff:fe04:4298/64 Scope:Global
         RX packets:529808 errors:0 dropped:46361 overruns:0 frame:0
         TX packets:43797 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:79241367 (75.5 MiB) TX bytes:18208947 (17.3 MiB)

The clues are the lines beginning with “inet6”. To disable IPv6 across the board, add the following line to the /etc/sysctl.conf file:

[root@racnode1 ~]# vi /etc/sysctl.conf

# disable IPv6 support on all network interfaces:
net.ipv6.conf.all.disable_ipv6 = 1

If you only wanted to disable IPv6 support for a specific interface, for example eth0, then the entry in /etc/sysctl.conf would look like this:

# disable IPv6 support on the eth0 network interfaces:
net.ipv6.conf.eth0.disable_ipv6 = 1

To have this change take effect, either reboot or run this command:

[root@racnode1 ~]# sysctl -p /etc/sysctl.conf

To confirm the change has taken effect, re-run the ipconfig command:

[root@racnode1 ~]# ifconfig eth0
eth0     Link encap:Ethernet HWaddr 00:21:F6:04:42:98
         inet addr: Bcast: Mask:
         RX packets:6481 errors:0 dropped:456 overruns:0 frame:0
         TX packets:464 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:1277621 (1.2 MiB) TX bytes:92893 (90.7 KiB)


Obtain Core, Socket and Thread Information:

Save these commands to a script and run it as root:


SOCKETS=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l` 
CORES=`cat /proc/cpuinfo | grep "cpu cores" | uniq | awk '{ print $4; }'` 
HYPTHREAD=`cat /proc/cpuinfo | grep "^processor" | wc -l` 
#echo $SOCKETS 
#echo $CORES 
echo This system has $SOCKETS Sockets, $CORES cores per socket, for a total of $HYPTHREAD cpu threads