Monitoring and Managing Exadata Storage Servers with ExaCLI

The ExaCLI command line utility allows you to perform monitoring and management functions on Exadata storage servers in an Exadata Cloud Infrastructure instance.

About the ExaCLI Command

The ExaCLI command provides a subset of the commands found in the on-premises Exadata command line utility.

ExaCLI offers a subset of the commands found in the on-premises Exadata command line utility CellCLI utility. The utility runs on the database virtual machines in the Exadata Cloud Service.

See the ExaCLI Command list in this topic to learn what commands are available.

Exadata Storage Server Username and Password

You need a username and password to connect to the Exadata Storage Server.

On Exadata Cloud Infrastructure, the preconfigured user for Exadata Storage Server is cloud_user_clustername, where clustername is the name of the virtual machine (VM) cluster that is being used.

You can determine the name of the VM cluster by running the following crsctl command as the grid user on any cluster node:
crsctl get cluster name

IThis command returns CRS-6724: Current cluster name is <cluster_name>

The password for cloud_user_clustername is initially set to a random value, which you can view by running the following command as the root user on any cluster node:
/opt/exacloud/get_cs_data.py

This returns a password <pwd>

Then test with ExaCLI as root:
exacli -l cloud_user_<clusternmae> -c 192.168.136.14
Password: ****************************
exacli cloud_user_<cluster_name>@192.168.136.14>

ExaCLI Command Syntax

For Exadata Storage Server targets, construct your commands using the syntax that follows.

Note that the syntax example assumes you are the opc user on a compute node.
exacli -c [username@]remotehost[:port] [-l username] [--xml] [--cookie-jar filename] [-e {command | 'command; command' | @batchfile}]
This example shows the user on an Exadata compute node issuing the command to log in to ExaCLI start an interactive ExaCLI session on a storage server:
[opc@exacs-node1 ~]$ exacli -l cloud_user_clustername -c 192.168.136.7

See Connecting to a Storage Server with ExaCLI for information on determining your storage server's IP address.

Once logged in, run additional commands as follows:
exacli cloud_user_clustername@192.168.136.7> LIST DATABASE
ASM
HRCDB
Example 2

This example shows a single command issued on a compute node that does the following:

  • Connects to a storage server
  • Performs a LIST action
  • Exits the session (specified with the "-e" flag)
[opc@exacs-node1 ~]$ exacli -l cloud_user_clustername -c 192.168.136.7 --xml --cookie-jar -e list griddisk detail
Option Description

-c [username@]remotehost or

--connect [username@]remotehost[:port]

Specifies the remote node to which you want to connect. ExaCLI prompts for the user name if not specified.

-l username or

--login-name username

Specifies the user name to log into the remote node. The preconfigured user is cloud_user_clustername.
--xml Displays the output in XML format.
--cookie-jar [filename]

Specifies the filename of the cookie jar to use. If filename is not specified, the cookie is stored in a default cookie jar located at HOME/.exacli/cookiejar, where HOME is the home directory of the OS user running the ExaCLI command.

The presence of a valid cookie allows the ExaCLI user to execute commands without requiring to login in subsequent ExaCLI sessions.

-e command or

-e 'command[; command]' or

-e @batchFile

Specifies either the ExaCLI commands to run or a batch file. ExaCLI exits after running the commands.

If specifying multiple commands to run, enclose the commands in single quotes to prevent the shell from interpreting the semi-colon.

Omit this option to start an interactive ExaCLI session.

--cert-proxy proxy[:port] Specifies the proxy server to use when downloading certificates. If port is omitted, port 80 is used by default.

-n or

--no-prompt

Suppresses prompting for user input.
  • Notes for the --cookie-jar option:

    • The user name and password are sent to the remote node for authentication. On successful authentication, the remote node issues a cookie (the login credentials) that is stored in the specified filename on the database node. If filename is not specified, the cookie is stored in a default cookie jar located at HOME/.exacli/cookiejar, where HOME is the home directory of the operating system user running the ExaCLI command. For the opc user, the home is /home/opc.
    • The operating system user running the ExaCLI command is the owner of the cookie-jar file.
    • A cookie jar can contain multiple cookies from multiple users on multiple nodes in parallel sessions.
    • Cookies are invalidated after 24 hours.
    • If the cookie is not found or is no longer valid, ExaCLI prompts for the password. The new cookie is stored in the cookie jar identified by filename, or the default cookie jar if filename is not specified.
    • Even without the --cookie-jar option, ExaCLI still checks for cookies from the default cookie jar. However, if the cookie does not exist or is no longer valid, the new cookie will not be stored in the default cookie jar if the --cookie-jar option is not specified.

  • Notes for the -e option:

    • ExaCLI exits after running the commands.
    • If specifying multiple commands to run, be sure to enclose the commands in single quotes to prevent the shell from interpreting the semi-colon.
    • The batch file is a text file that contains one or more ExaCLI commands to run.
  • Notes for the -n (--no-prompt) option:

    • If ExaCLI needs additional information from the user, for example, if ExaCLI needs to prompt the user for a password (possibly because there were no valid cookies in the cookie-jar) or to prompt the user to confirm the remote node’s identity, then ExaCLI prints an error message and exits.

Connecting to a Storage Server with ExaCLI

To use ExaCLI on storage servers, you will need to know your target storage server's IP address.

If you do not know the IP address of the node you want to connect to, you can find it by viewing the contents of the cellip.ora file.

The following example illustrates how to do so on the UNIX command line for a quarter rack system. (Note that a quarter rack has three storage cells, and each cell has two connections, so a total of six IP addresses are shown.)
cat /etc/oracle/cell/
network-config/cellip.oracle
cell="192.168.136.5;cell="192.168.136.6"
cell="192.168.136.7;cell="192.168.136.8"
cell="192.168.136.9;cell="192.168.136.10"
If you are connecting to a storage cell for the first time using ExaCLI, you may be prompted to accept an SSL certificate. The ExaCLI output in this case will look like the following:
exacli -l cloud_user_clustername -c 192.168.136.7 --cookie-jar
No cookies found for cloud_user_clustername@192.168.136.7
Password: *********
EXA-30016: This connection is not secure. You have asked ExaCLI to connect to cell 192.168.136.7 securely. The identity of 192.168.136.7 cannot be verified.
Got certificate from server:
C=US,ST=California,L=Redwood City,O=Oracle Corporation,OU=Oracle Exadata,CN=ed1cl03clu01-priv2.usdc2.oraclecloud.com
Do you want to accept and store this certificate? (Press y/n)

Accept the self-signed Oracle certificate by pressing "y" to continue using ExaCLI.

ExaCLI Command Reference

You can execute various ExaCLI commands to monitor and manage Exadata Storage Servers associated with your Oracle Cloud Infrastructure Exadata DB system. ExaCLI allows you to get up-to-date, real-time information about your Exadata Cloud Service.

Use the LIST command with the following services and objects:

  • ACTIVEREQUEST- Lists all active requests that are currently being served by the storage servers.
  • ALERTDEFINITION - Lists all possible alerts and their sources for storage servers.
  • ALERTHISTORY - Lists all alerts that have been issues for the storage servers.
  • CELL - Used to list the details of a specific attribute of the storage servers or storage cells. The syntax is as follows:
    LIST CELL ATTRIBUTES A,B,C
    , with A, B, and C being attributes. To see all cell attributes, use the
    LIST CELL ATTRIBUTES ALL
    command.
  • CELLDISK - Lists the attributes of the cell disks in the storage servers. Use the following syntax to list the cell disk details:
    LIST CELLDISK cell_disk_name
              DETAIL
    .
  • DATABASE - Lists details of the databases. Uses the regular LIST command syntax:
    LIST DATABASE
    and
    LIST DATABASE DETAIL
    . You can also use this command to show an individual attribute with the following syntax:
    LIST DATABASE
              ATTRIBUTES NAME
    .
  • FLASHCACHE - Lists the details of the Exadata system's flash cache. For this object, you can use the following syntax patterns:
    LIST FLASHCACHE DETAIL
    or
    LIST FLASHCACHE
              ATTRIBUTES attribute_name
    .
  • FLASHCACHECONTENT - Lists the details of all objects in the flash cache, or the details of a specified object ID. To list all the details of all objects, use
    LIST FLASHCACHECONTENT DETAIL
    . To list details for a specific object, use a where clause as follows:
    LIST FLASHCACHECONTENT WHERE objectNumber=12345 DETAIL
    Note: To find the object ID of a specific object, you can query
    user_objects
    using the object's name to get the
    data_object_id
    of a partition or table.
  • FLASHLOG - Lists the attributes for the Oracle Exadata Smart Flash Log.
  • GRIDDISK - Lists the details of a particular grid disk. The syntax is similar to the CELLDISK command syntax. To view all attributes:
    LIST GRIDDISK grid_disk_name
              DETAIL
    . To view specified attributes of the grid disk:
    LIST
              GRIDDISK grid_disk_name ATTRIBUTES size,
            name
    .
  • IBPORT - Lists details of the InfiniBand ports. Syntax is
    LIST IBPORT DETAIL
    .
  • IORMPROFILE - Lists any IORM profiles that have been set on the storage servers. You can also refer back to the profile attribute on the DATABASE object if a database has an IORM profile on it. Syntax is
    LIST
              IORMPROFILE
    .
  • LUN - The LUN (logical unit number) object returns the number and the detail of the physical disks in the storage servers. List the LUNs of the disks with
    LIST LUN
    . List the details of each LUN with
    LIST LUN lun_number
              DETAIL
    .
  • METRICCURRRENT - Lists the current metrics for a particular object type. Syntax is
    LIST METRICCURRENT WHERE
                objectType = 'CELLDISK'
    . This command also allows for sorting and results limits as seen in the following example:
    LIST METRICCURRENT attributes name, metricObjectName
                ORDER BY metricObjectName asc, name desc LIMIT 5
  • METRICDEFINITION - Lists metric definitions for the object that you can then get details for. With the command
    LIST
              metricDefinition WHERE objectType=cell
    , you can get all the metrics for that object type. You can then use the metric definition object again to get details for one of those specific metrics just listed:
    LIST metricDefinition WHERE
              name= IORM_MODE DETAIL
    .
  • METRICHISTORY - List metrics over a specified period of time. For example, with the command
    LIST METRICHISTORY WHERE ageInMinutes <
              30
    , you can list all the metrics collected over the past 30 minutes. You can also use the predicate collectionTime to set a range from a specific time. Use collectionTime as shown in the follow example:
    LIST METRICHISTORY WHERE collectionTime
              > '2018-04-01T21:12:00-10:00'
    . The metric history object can also be used to see a specific metric using the object’s name (for example,
    LIST
              METRICHISTORY CT_FD_IO_RQ_SM
    ) or with a "where" clause to get objects with similar attributes like name (for example,
    LIST METRICHISTORY WHERE
              name like 'CT_.*'
    ).
  • OFFLOADGROUP - Lists the attributes for the offload group that are running on your storage servers. You can list all details for all groups with
    LIST OFFLOADGROUP DETAIL
    , or list the attributes for a specific group, as shown in the following example:
    LIST
              OFFLOADGROUP offloadgroup4
    . List specific attributes with
    LIST OFFLOADGROUP ATTRIBUTES name
    .
  • PHYSICALDISK - Lists all physical disks. Use the results of
    LIST PHYSICALDISK
    to identify a specific disk for further investigation, then list the details of that disk using the command as follows:
    LIST PHYSICALDISK 20:10 DETAIL
    . To list the details of flash disks, use the command as follows:
    LIST PHYSICALDISK
              FLASH_1_0 DETAIL
    ).
  • PLUGGABLEDATABASE - Lists all PDBs. View the details of a specific PDB with
    LIST PLUGGABLEDATABASE pdb_name
    .
  • QUARANTINE - Lists all SQL statements that you prevented from using Smart Scans. The syntax is
    LIST QUARANTINE
              DETAIL
    . You can also use a "where" clause on any of the available attributes.

Use the ExaCLI CREATE, ALTER, DROP, and LIST commands to act on the following Exadata Storage Server objects:

  • DIAGPACK - Lists the diagnostic packages and their status in your Exadata system. The syntax is
    LIST DIAGPACK
                [DETAIL]
    , with DETAIL being an optional attribute. Use
    CREATE DIAGPACK
    with the
    packStartTime
    attribute to gather logs and trace files into a single compressed file for downloading, as in the following example:
    CREATE DIAGPACK
                packStartTime=2019_12_15T00_00_00
    . You can also use the value "now" with packStartTime:
    CREATE DIAGPACK packStartTime=now
    To download a diagnostic package, use
    DOWNLOAD DIAGPACK
                  package_namelocal_directory
    . For example, the following command downloads a diagnostic package to the /tmp directory:
    DOWNLOAD DIAGPACK  cfclcx2647_diag_2018_06_03T00_44_24_1 /tmp
  • IORMPLAN - You can List, create, alter, and drop IORM plans using ExaCLI. To see the details of all IORM plans, use
    LIST
              IORMPLAN DETAIL
    . You can also use the command to create and alter IORM plans, and to apply plans to storage servers.
select object_name, data_object_id from user_objects where object_name = 'BIG_CENSUS';
OBJECT_NAME               DATA_OBJECT_ID
----------------------------------------
BIG_CENSUS                29152