Build Your Own Oracle Infrastructure: Part 1 – Hardware.

If you are interested in setting up your own Oracle infrastructure, this series is for you!

Over the course of 14 installments I will describe what I did and how I did it, along with some useful tips and tricks to help get things done.This is for educational purposes only, but much of what is presented readily translates to real world production systems.

Before we get into the details, let’s cover some basic terms of reference in the form of 3 questions.

Q1. What do I mean by an Oracle infrastructure?

Well, aside from knowing and understanding the Oracle DBA role in a general sense, for me there are 9 Oracle technologies/configurations which Senior Oracle DBAs like myself should aspire to know and know well. They cover the essentials of the operating system, administration, backup/restore, High Availability (HA), Disaster Recovery (DR), data replication, networking, storage, virtualization and of course, the database itself. Those 9 technologies/configurations are:

  • Oracle VM
  • Data Guard
  • GoldenGate
  • Oracle Linux
  • Oracle Database
  • Recovery Manager
  • Grid Infrastructure
  • Real Application Clusters
  • Oracle Enterprise Manager

In this series I will cover all of these from an installation, setup and configuration point of view. For some of them, I’ll also perform some functionality testing to make sure they do what they’re supposed to do. This will be useful when writing test plans for the real world.

Q2. Why bother?

Why bother doing anything? For me, being an Oracle DBA is not just my job. It’s what I do. I strive to be the best DBA I can be and that means research and practice. Some people, particularly IT Managers with those elusive training budgets, seem to think DBAs acquire skills and knowledge through osmosis. It’s true that DBAs do have super powers, but osmosis is not one of them! Unfortunately, understanding something and getting good at it takes practice and Oracle is no different. This series serves as my way of researching and practicing some of the most important Oracle technologies and configurations. It has already helped me pass the Oracle Certified Professional Database Administrator for Oracle Database 12c upgrade exam. I may even push on and take other OCP exams using what I learned here. My point is, be your own expert. Don’t rely upon or hang on every word of the self-appointed ‘experts’ and ‘know-it-alls’ of the Oracle industry. As Nike say, “Just do it”!

Q3. Why do it this way?

There are cheaper and easier ways to achieve the same things I set out to do. Things like Oracle VM templates and Oracle VM Virtualbox provide a quicker point-and-click way to get something done fairly rapidly. If speed is your thing, those resources are great. If understanding is your thing, then you’ll need to do things the old fashioned way by getting your hands dirty. You’ll emerge on the other side knowing and understanding way more than if you simply used the short cuts from the beginning. Once you actually understand what is going on under the covers, by all means transition to using those short cuts. One of my goals was to understand these technologies better and you can only really do that effectively by actually doing it. Not by reading about it. Not by attending presentations. Not by taking short cuts and not through osmosis!

Hardware Summary.

Here’s a summary of the hardware I used for this series. Some of this hardware I already had and some I had to buy. You won’t need to use exactly what I used and you may find cheaper alternatives which will work just as well. Other items you may choose not to use at all. Your choice. With that said, I think it’s often interesting to know exactly what someone else used and more importantly, why they used it.

Link To Component Condition Approximate Cost
Oracle VM Server Used $1,500
Oracle Database 12c & Oracle VM Manager Server New $260
Shared Storage Server New $220
Gigabit Network Switch #1 New $70
Gigabit Network Switch #2 Used $20
4 Port USB/PS2 KVM Used $30
LCD Screen Used $20
PS/2 Keyboard Used $5
USB Mouse with PS/2 adapter Used $5
UPS #1 New $380
UPS #2 New $200
Cat 6 Network Patch Cables New $20
Shelving Unit New $250
Box Fan New $20
TOTAL (Approximate) $3,000

Oracle VM Server.

  • Product : HP ProLiant DL380 G7
  • CPU : Dual 2.66 GHz Quad Core Xeon E5640
  • RAM : 72 GB (2019 upgrade to 144 GB for $250)
  • Networking : HP NC382i Dual Port Gb Server Adapters (4 Ethernet ports total)
  • Storage : HP Smart Array P410i RAID Controller, 2 x 72 GB + 6 x 300 GB SAS 10K HDs (8 HDs total)
DL380-1

This is the heart of the system, so it was important to get this right. When I first started working with Oracle Database 12c, I quickly realized it’s not available for 32 bit Linux. That rendered several of my older PCs redundant. My other PCs which could run 64 bit software did not fare much better. Let’s just say, a 2.66 GHz Pentium D CPU with 3 GB RAM and a 7.2K SATA desktop drive doesn’t get the job done. At least not very quickly. For example, I ran the DBUA to upgrade an 11.2 database to 12.1 and it took over 6 hours to complete. Who has that kind of time? Not me!

I could have bought new motherboards, CPUs and memory for these aging PCs and rebuilt my physical Oracle Database 11g RAC system with Oracle Database 12c. However, that wouldn’t have given me the opportunity to work with Oracle VM again. Plus I’d still have way too many PCs at home which all need cooling, all need a UPS outlet and all need to be stored somewhere. I also considered buying a customized super PC with lots of drives, lots of memory and lots of CPU. Something capable of running up to the 8 Linux VMs I had in mind for this project. However, that option quickly became very expensive. Some quotes I got were over $3,000!

Then I had the brilliant idea of tapping into the refurbished server market. Ever wondered what happens to servers when they go out of warranty and are replaced by a newer generation of server? No, neither did I, but it turns out companies buy them, refurbish them and sell them on. Who knew? Makes sense since solid state technology doesn’t wear out that quickly and there’s basically nothing wrong with the hardware other than the OEM won’t warranty it. The parts which do wear out, the hard drives, are easily replaced. HP branded hard drives can be purchased from a variety of sources including eBay and Amazon. The 72 GB drives I use cost between $10 and $20 per drive. Not bad. The 300 GB drives are slightly more expensive at between $25 and $40. Still, not bad.  Note, if you intend to configure more than one LUN using the internal drives and trust me you will, make sure you buy additional memory for the HP P410i RAID controller. Without its own memory, the P410i only supports one LUN.

My research turned up a fantastic company called Orange Computers. Using their website’s system builder feature, I was able to put together a customized specification for an HP ProLiant DL380 G7 for around $1,500. That’s still a lot of money, but consider what you’re getting. Server class hardware, multiple built in redundancies, designed to run 24x7x365 and guaranteed compatibility. This last point is extremely important. Oracle VM and Oracle Linux isn’t guaranteed to support every single combination of CPU, motherboard, NIC, storage array, etc. If you’re going to sink some serious cash into a system to run Oracle VM and Oracle Linux, wouldn’t you want to know for sure it’ll work rather than just hoping it will?

Oracle has an Oracle Linux and Oracle VM Hardware Certification List. It’ll tell you if your name brand system will fly. For me, the HP ProLiant DL380 G7 checked all the right boxes. Orange Computers can also sell you an extended warranty and have their own in house technical support. They are super easy to deal with and go the extra mile to ensure you get what you need. I highly recommend them.

As of 2019, depending upon the hardware configuration you want, you can acquire DL380 G7s for less than $1,000.

Oracle Database 12c & Oracle VM Manager Server.

acer_powers285

I gutted one of my older PCs and bought a new motherboard, CPU, RAM and an SSD. The CPU is pretty decent for what I need it for and the motherboard provides hardware RAID configuration options.The 16 GB of RAM is more than what is required for Oracle VM Manager, but this server will also double as a regular database server when the Oracle VM Server is not in use. Since I had plenty of spare HDs, I used the SSD drive as the boot/OS drive and the 2 HDs configured as a RAID 1 array. I’ve had good performance and reliability from the Samsung 840 and now the 850 EVO series of SSDs. I got them from Amazon for $49.99. They seem to have lightening sales on things like this every now and then. Look out for them. I’ve read about Linux compatibility issues with some PCI NICs, but Intel seem to be well supported, so I stick with them. I got the rest of the components from my local Micro Center. Their customer service has improved to the point of actually being useful. I always like to my purchases verified for compatibility. Newegg.com can do this too, but they want to charge you for the advice. Seriously! Note, you will most likely need a 2.5” to 3.5” mounting bracket for the SSD.

Shared Storage Server.

acer_powers285

I gutted another one of my older PCs and bought a new motherboard, CPU, RAM and two SSDs. The CPU is pretty decent for what I need it for and the motherboard provides hardware RAID configuration options. I already had the 2 Western Digital HDs, so configured them as a RAID 1 array. These were the basis of the shared storage for my previous Oracle Database 11g RAC setup and were purchased at a time before SSDs were affordable. Speed is important for these drives, hence the 10K rpm specification. For your own setup, disk capacity is probably not the issue but speed will be. I used one of the SSDs for the boot/OS drive and the other is used for database storage. I did want to try an SSD RAID 1 array, but when I went back to Amazon to snag more Samsung 850 EVO SSDs for $49.99 a piece, they’d sold out! I guess plenty of other people realized what a steal that was. Lesson learned – buy more next time you see them heavily discounted. They really are excellent drives. In truth, this system needs little memory and I’ve run it previously with 4 GB and it worked fine. It has 8 GB now because I initially bought a 1 x 4GB DIMM, not 2 x 2 GB DIMMs. Duh! It was less hassle just to buy an additional 4 GB DIMM. For best performance, DIMMs should be used in pairs of equal size.

Gigabit Network Switch #1.

Product : D-Link 16-Port Gigabit Switch (DGS-1016A)

DLink-16-port

I already had this switch. It is used for public and VM management traffic. You can still buy this new for around $70, almost half what I paid for it just a couple of years ago. Sixteen ports is overkill for this project. An 8 port switch will  suffice and will typically be about half the cost. D-Link make a decent looking 8 port switch which I don’t have as does TRENDnet which I do have. It has a metal case too. Nice.

Gigabit Network Switch #2.

Product : D-Link DGS-2208 8-Port 10/100/1000 Desktop Switch

DLink-8-port

I already had this switch. It will be used for the shared  storage traffic. This is an old switch, but is still going strong. The 8 ports are more than enough and you can pick up a used one for around $20. If you’re going to buy new switches for this project, you may as well get a couple of the newer D-Link 8 port switches and save yourself between $20 and $30 on my estimate for network switches.

4 Port USB/PS2 KVM.

Product : Cables To Go 4 Port USB PS2 KVM, model #35555

KVM

I already had this KVM. It is used to access the console of the HP DL380, the Oracle VM Manager computer and the shared storage filer computer. It’s an old KVM which you can buy used for around $30. I bought an updated version of this KVM a couple of years ago, but it’s not as well behaved as this one. For this project you will need to get into the BIOS of all 3 computers. To do that you typically need to press a specific key as the computer boots up. While connected to a computer’s console via the newer KVM, it routinely ignored my key stroke during boot up. Tres annoying. The older KVM didn’t have that problem so I stuck with that one. Your mileage may vary.

LCD Screen.

Product : ViewSonic VA503b

viewsonic

I already had this screen. It doesn’t really matter what screen you use as long as it has a VGA connection and plays nicely with your KVM. It doesn’t have to be that fancy either since you won’t be spending that much time working with this screen. It makes me cringe to think I paid $150 for this screen back in 2006. I found a refurbished one on eBay for $20. It is a nice screen though. ViewSonic make decent gear.

PS/2 Keyboard.

Product : Gateway KB0532

gateway-kbd

I already had this keyboard left over from an old Gateway PC I used to have.

The important point about this keyboard is it has a PS/2 style connector which plugs directly into the back of the KVM. That’s important because it guarantees your boot up key stroke will be recognized when you’re trying to get into the computer BIOS.

USB keyboard key strokes can be ignored if the USB drivers are not loaded early enough in the boot up sequence. That can prevent you from getting into the BIOS and will ultimately lead to expletives and threats of physical violence against an inanimate object. Any PC keyboard with a PS/2 style connector should do the trick, but you can pick one of these up pretty cheaply.

USB Mouse.

Product : HP USB Mouse P/N: 505062-001 Rev.A

hp-mouse

I already had this mouse left over from my HP desktop. It is the cheapest and nastiest mouse ever. The sort of thing you might expect to find in a Christmas cracker, but hey it works.

I have this connected to a USB port on the front of the KVM. I have a USB/PS2 adapter for it, but when I use that to connect it to the KVM, it doesn’t work. Weird. Literally any USB mouse should work.

UPS #1.

Product : Tripp Lite SMART1500SLT 1500VA 900W

tripp-lite_smart1500slt_front

I already had this UPS. It provides 8 outlets all of which are protected and have battery backup. I use it for the HP DL380 and the network switches. I am a little paranoid about noise, heat and dirty power. This unit scores high on only two of those since it is a little noisy due to the rear panel fan. It is also quite heavy. That said, all 8 outlets provide the same functionality so you don’t have to choose between just surge protection or surge and battery protection. Personally I wouldn’t buy another one. Instead I’d buy another CyberPower.


In 2018, I replaced this with another CyberPower CP1500PFC LCD which was only slightly more expensive than replacing the failed battery in this Tripp Lite unit.

UPS #2.

Product : CyberPower CP1500PFCLCD Sinewave USP 1500VA 900W

cyberpower-ups

I bought this additional UPS because I didn’t want to overload the Tripp Lite unit. I really like these CyberPower units and have several of them. They are much smaller and lighter than the Tripp Lite. They also clean the power, are completely silent and have a small LCD screen which displays the voltage and battery load.

Only half of the 10 outlets provide battery backup as well as surge protection, but that’s enough for the OVM Manager and shared storage filer computers plus the KVM and LCD screen.

Cat 6 Network Patch Cables.

Products : Cable Matters 5-Pack of 3 feet Cat6 Patch Cables, Cable Matters 5-Pack of 5 Feet Cat6 Patch Cables

cat6

I already had plenty of patch cables and a total of 6 are needed for this system. These come in packs of 5 and are very reasonably priced. You may as well get 2 packs of different lengths. That way you can choose the appropriate length for each connection and have some cables left over which you’re bound to use at some point.

Shelving Unit.

Products : 3 x InterMetro 18”x48” Solid Shelf, 2 x InterMetro 18”x48” Wire Shelf, 4 x InterMetro 62.5” Post, 1 x InterMetro Swivel Caster Set

shelving

I get this stuff from The Container Store and it is totally awesome. I already had most of it, but bought an additional wire shelf so I could position the HP DL380 at the right height for the box fan.

The HP DL380 is obviously a rack mount server and since I don’t have a purpose built server rack, these shelves are a perfect alternative.

Box Fan.

Product : Lasko 20” 3 Speed Box Fan

boxfan

I already had this fan. Did I mention my paranoia about heating and cooling? You can often pick up these types of fan from your local grocery store or favorite DIY outlet for very little money. They’re not silent even on the lowest setting, but they do provide great air flow over quite a large area. They’re also incredibly cheap to run.

Depending upon your system’s location and proximity to air conditioning, you may not even need it.

So there you have it, all the hardware you’ll need to build your own Oracle infrastructure.

As I mentioned earlier, you won’t necessarily have to use all the equipment I used as specified. Cheaper and reduced specification options are available, but hopefully this gives you some idea of what you’ll need to make everything work successfully.

It was a lot of fun putting this equipment together. Click on the thumbnail right to see what it all looks like when assembled. Nice!

In Part 2, we’ll cover all the software you’ll need to build your own Oracle infrastructure. Stay tuned for updates.

If you have any comments or questions about this post, please use the Contact form here.

X-Win32

xwin32productpagelogo

 

 

 

 

 

X-Win32 is a fully loaded X Windows server environment for Microsoft Windows available from StarNet.

It’s simpler to use, has greater functionality and is cheaper than other similar products. I use it and you should too!

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

Index:

 

Upgrading & the License Issue:

Go to license.starnet.com/activate, enter the key and HostID of your PLC (located in X-Win32 Help-About).

This creates a new license file. Put it in the X-Win32 program directory making sure it has a .LIC file extension.

 

Upgrading & the Default Program Issue:

If you have X-Win32 login shortcuts on your desktop, they might not open with the latest version of X-Win32 after you upgrade. To fix this, open a Windows registry editor (e.g. REGEDIT) and go here:

HKEY_CLASSES_ROOT\xw32_auto_file\shell\command

Edit the Default value to reflect the path of the latest installed version of X-Win32. For example,

"C:\Program Files (x86)\StarNet\X-Win32 2014\xwin32.exe" "%1"

 

 

Oracle Linux Tips

oracle-linux

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

Applicable to Oracle Linux and RHEL.

 

Quick links to all the tips:

Loopback Mount for an ISO File – Create:

# 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

Public Oracle yum Repository – Create:

For Oracle Linux 6:

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

X Windows Client Programs – Install:

# yum install xterm

Oracle Database Preinstall rpm – Install:

For Oracle Database 12c Release 1:

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

For Oracle Database 12c Release 2:

# yum install oracle-database-server-12cR2-preinstall

For Oracle Database 18c:

# yum install oracle-database-preinstall-18c

For Oracle Database 19c:

# yum install oracle-database-preinstall-19c

Ethernet Port Down/Non-operational – Start:

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

File System with Minimal Superuser Overhead – Create:

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

Network Interface Configuration Issues – Diagnose:

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:

/etc/sysconfig/network-scripts

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
TYPE=Ethernet
UUID=e8347ba9-9e19-4484-9191-95fdc9fc2a4c <-- this needs changing
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
HWADDR=00:21:f6:0c:04:19 <-- this needs changing
IPADDR=200.200.10.11 <-- this needs changing
PREFIX=24
NETMASK=255.255.255.0
USERCTL=no

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)

Linux Firewall – Turn Off:

For Oracle Linux 6:

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  --  0.0.0.0/0   0.0.0.0/0    state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0   0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0   0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0   0.0.0.0/0    state NEW tcp dpt:22
5    REJECT     all  --  0.0.0.0/0   0.0.0.0/0    reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source      destination         
1    REJECT     all  --  0.0.0.0/0   0.0.0.0/0    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

For Oracle Linux 7:First, verify the status of the firewall:

[root@orasvr01 ~]# systemctl status firewalld
 ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
    Active: active (running) since Sat 2019-06-29 12:33:58 CDT; 1 day 22h ago
      Docs: man:firewalld(1)
  Main PID: 4166 (firewalld)
    CGroup: /system.slice/firewalld.service
            └─4166 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
 Jun 29 12:33:57 orasvr01.mynet.com systemd[1]: Starting firewalld - dynamic firewall daemon…
 Jun 29 12:33:58 orasvr01.mynet.com systemd[1]: Started firewalld - dynamic firewall daemon.

This output shows the firewall us up and running. To stop the firewall and keep it stopped, use these commands:

[root@orasvr01 ~]# systemctl stop firewalld.service
[root@orasvr01 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

Re-check the firewall status:

[root@orasvr01 ~]# systemctl status firewalld
 ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
      Docs: man:firewalld(1)
 Jul 01 11:48:19 orasvr01.mynet.com systemd[1]: Starting firewalld - dynamic firewall daemon…
 Jul 01 11:48:20 orasvr01.mynet.com systemd[1]: Started firewalld - dynamic firewall daemon.
 Jul 01 12:01:28 orasvr01.mynet.com systemd[1]: Stopping firewalld - dynamic firewall daemon…
 Jul 01 12:01:29 orasvr01.mynet.com systemd[1]: Stopped firewalld - dynamic firewall daemon.

Reboot then check again:

[root@orasvr01 ~]# systemctl status firewalld
 ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
      Docs: man:firewalld(1)

Hostname – Change:

The hostname of the server is stored in this file:

/etc/sysconfig/network

The relevant line is:

HOSTNAME=<current_value>

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

# sysctl kernel.hostname=<hostname.domain>

SE Linux – Disable:

To check if SE Linux 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) 
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

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

[root@racnode1 ~]# getenforce
Enforcing

If the command returns “Enforcing” then SE Linux 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:

SELINUX=enforcing

To this:

SELINUX=disabled

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

Network Manager – Disable:

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

Wipe Data on Disk Using dd:

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

TCP and UDP Ports In Use – Show:

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

Swap File – Add:

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

IPv6 Addressing – Remove:

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:200.200.10.11 Bcast:200.200.10.255 Mask:255.255.255.0
         inet6 addr: fe80::221:f6ff:fe04:4298/64 Scope:Link
         inet6 addr: 2002:4b49:1933:0:221:f6ff:fe04:4298/64 Scope:Global
         UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
         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:200.200.10.11 Bcast:200.200.10.255 Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
         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)

Hardware Information – Display:

We often need to determine the size of the server hardware we’re dealing with. That really boils down to the manufacturer make and model, CPU configuration and installed RAM.

Manufacturer Make & Model:

As the root user, run this command:

[root@racnode1 ~]# dmidecode | grep -A3 '^System Information'

On physical hardware, the output will look something like this:

System Information
    Manufacturer: HP
    Product Name: ProLiant DL380 G7

On virtual hardware like Oracle VM, the output will look something like this:

System Information
    Manufacturer: Xen
    Product Name: HVM domU
    Version: 4.3.1OVM

CPU Configuration:

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

#!/bin/sh

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 $HYPTHREAD 
echo This system has $SOCKETS Sockets, $CORES cores per socket, for a total of $HYPTHREAD cpu threads

Installed RAM:

There are a number of ways to determine the amount of RAM installed. Some include:

[root@racnode1 ~]# free -m

             total used free shared buffers cached
Mem:          5968 5738  229   2234     257   3082
-/+ buffers/cache: 2399 3569 
Swap: 4095 4 4091
[root@racnode1 ~]# cat /proc/meminfo

MemTotal:        6111812 kB
MemFree:          179764 kB
...
[root@racnode1 ~]# top

top - 12:48:54 up 4 days, 15 min, 1 user, load average: 1.53, 1.75, 1.84
Tasks: 339 total, 1 running, 338 sleeping, 0 stopped, 0 zombie
Cpu(s): 73.5%us, 10.7%sy, 0.0%ni, 14.1%id, 0.0%wa, 0.0%hi, 0.3%si, 1.3%st
Mem:  6111812k total, 5917664k used, 194148k free, 263668k buffers
Swap: 4194300k total, 4512k used, 4189788k free, 3156768k cached

Note, on a Windows Server the equivalent information can be obtained by running the command MSINFO32 at a Command Prompt. This will open up a System Information window which will show all the relevant details about the hardware and operating system.

sudo – Configuring for oracle.

The oracle user needs to run certain commands/scripts as the root user. The simplest way to achieve that without having access to the root password is to configure sudo for the oracle user. To do that, you need to edit the /etc/sudoers file. You can edit this file directly or to have your changes verified, use this instead:

[root@orasvr01 ~]# visudo

Scroll down to the section which contains this entry:

## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

Add this line to the file, then save it:

oracle  ALL=(root)      ALL

This has the effect of allowing the oracle user to assume the identity of the root user [ALL=(root)] and execute any command as root [ALL]. The oracle user can then become the root user or run commands as the root user. For example:

[oracle@orasvr01 ~]$ sudo -u root -s

[root@orasvr01 oracle]# id
uid=0(root) gid=0(root) groups=0(root)

[oracle@orasvr01 ~]$ sudo useradd -u 1002 -g oinstall -G dba,backupdba,dgdba,kmdba,racdba,asmdba,oper sean

[oracle@orasvr01 ~]$ fgrep sean /etc/passwd
sean:x:1002:1000::/home/sean:/bin/bash

Note, the first time the oracle user attempts to use sudo, the system will prompt for the oracle password. After that, you should be fine.