Exachk Database Only on Exadata

As many people know, exachk is a great utility to perform the healthchk on Exadata and provides many useful information about errors and warnings. When running exachk, the most common way is to run with -a option as follows:
./exachk -a

The result covers everything from OS, database, clusterware, db nodes, cell nodes and IB switches. To execute -a option, you need to know root password for many componenets, like db nodes, and cell nodes. Sometimes Oracle DBAs do not have the  root access, but still want to use the features from exachk utility, just to check out database configuration. Starting v2.2.1, exachk allows the execution of a subset of the checks. For example, you could check a subset of cluster nodes, or just check only a selected cell nodes or IB switches. In this blog, I am going to discuss database only (my own piece of pie).


First, Go to Oracle Support, check out Oracle Exadata Database Machine exachk or HealthCheck (Doc ID 1070954.1) and download the latest copy of the exachk (v2.2.4).

Next, run the following command to execut exachk against a database, for example dbm database. I highlight the line you need to provide an input.
$ ./exachk -dbnames dbm

CRS stack is running and CRS_HOME is not set. Do you want to set CRS_HOME to /u01/app/[y/n][y]y
Checking ssh user equivalency settings on all nodes in cluster
Node enkx3db02 is configured for ssh user equivalency for oracle user

Checking Status of Oracle Software Stack – Clusterware, ASM, RDBMS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Oracle Stack Status
Host Name CRS Installed ASM HOME RDBMS Installed CRS UP ASM UP RDBMS UP DB Instance Name
enkx3db01 Yes Yes Yes Yes Yes Yes dbm1
enkx3db02 Yes Yes Yes Yes Yes Yes dbm2

Copying plug-ins
. . . . . . . . . . . . . . . . . . . . . . . . . . .

root user equivalence is not setup between enkx3db01 and STORAGE SERVER enkx3cel01 (
1. Enter 1 if you will enter root password for each STORAGE SERVER when prompted.
2. Enter 2 to exit and configure root user equivalence manually and re-run exachk.
3. Enter 3 to skip checking best practices on STORAGE SERVER.

Please indicate your selection from one of the above options for STORAGE SERVER[1-3][1]:- 3
. . . . . . .

125 of the included audit checks require root privileged data collection on DATABASE SERVER. If sudo is not configured or the root password is not available, audit checks which require root privileged data collection can be skipped.

1. Enter 1 if you will enter root password for each on DATABASE SERVER host when prompted
2. Enter 2 if you have sudo configured for oracle user to execute root_exachk.sh script on DATABASE SERVER
3. Enter 3 to skip the root privileged collections on DATABASE SERVER
4. Enter 4 to exit and work with the SA to configure sudo on DATABASE SERVER or to arrange for root access and run the tool later.

Please indicate your selection from one of the above options for root access[1-4][1]:- 3

*** Checking Best Practice Recommendations (PASS/WARNING/FAIL) ***
Checking for prompts in /home/oracle/.bash_profile on enkx3db01 for oracle user…
Checking for prompts in /home/oracle/.bash_profile on enkx3db02 for oracle user…

Starting to run exachk in background on enkx3db02

Node name – enkx3db01

Collecting – ASM Diskgroup Attributes
Collecting – ASM initialization parameters
Collecting – Database Parameters for dbm database
Collecting – Database Undocumented Parameters for dbm database
Collecting – RDBMS Feature Usage for dbm database
Collecting – CPU Information
Collecting – Clusterware and RDBMS software version
Collecting – Compute node PCI bus slot speed for infiniband HCAs
Collecting – Kernel parameters
Collecting – Maximum number of semaphore sets on system
Collecting – Maximum number of semaphores on system
Collecting – Patches for Grid Infrastructure
Collecting – Patches for RDBMS Home
Collecting – RDBMS patch inventory
Collecting – number of semaphore operations per semop system call

. . . .

A few notes:
1. If there is a high security requirement, usually you can not directly ssh into db node as oracle user. You have to login as your user id, and then su to oracle user. In this case, you need to add localnode option to force the execution running locally.
$ ./exachk -dbnames dbm -localnode

2. If you want to check multiple databases at the same time, you can specify the databases separate by comma as follows:
$ ./exachk -dbnames dbm,wzpdb

Make sure the databases list above has an entry in /etc/oratab file. If there is not match, there will be no check against the mismatched database.

3. If the database does not have Data Guard configuration, you might want to add -m option to exclude checks for Maximum Availability Architecture (MAA).
$ ./exachk -dbnames dbm,wzpdb -m