Using DCLI with Single Quotes in LIST Arguments on Exadata

With Oracle Exadata, CELLCLI is the command-line interface to manage, monitor, and report on storage cell characteristics, configuration, and behavior.
While logged on to the storage cell as root, celladmin, or cellmonitor, you can invoke CELLCLI by simply typing “cellcli” at the Linux shell prompt:

 

 

Once logged in to CELLCLI, you can issue a variety of commands:

 

 

Output can be limited by using WHERE conditions into the CELLCLI “LIST” commands, as such:

 

 

From any of the nodes in the Exadata storage or compute grid, you can use a distributed command-line utility called “dcli” to run the same commands.  So to obtain a cross-cell view of cell server configuration, metrics, alerts, and other information, you can use dcli (Distributed Command Line Interface).  dcli is a Python script installed on each Exadata node that allows you to run Cell CLI commands on multiple cell server nodes at once.

In order or dcli to function, SSH user equivalency should be established to eliminate the need to supply the “celladmin” (or root/cellmonitor) Linux password on the cell servers.  Before showing the output of a dcli monitoring command, let’s walk through how to setup SSH equivalency.  I’ll start by “unkeying” SSH trust – this basically removed authorized_keys entries from the celladmin’s ~/.ssh directory on each cell server.

[[email protected] ~]$ dcli -g cell_group –unkey

cm01cel01: ssh key dropped

cm01cel02: ssh key dropped

cm01cel03: ssh key dropped

[[email protected] ~]$

 

Now, we’ll re-establish SSH equivalency:

 

[[email protected] ~]$ dcli -g cell_group -k

[email protected]’s password:

[email protected]’s password:

[email protected]’s password:

cm01cel01: ssh key added

cm01cel02: ssh key added

cm01cel03: ssh key added

[[email protected] ~]$

 

Next, ensure that the ~/.ssh directory has 700 permissions for the celladmin Linux user on each cell server.  Here’s a sample cell listing using dcli: In this example, the “-g cell_group” clause tells dcli to read the “cell_group” file for a list of cell servers to operate on.

The contents of cell_group are provided after the actual dcli command below, with one cell server name for each row:

 

[[email protected] ~]$ dcli -g cell_group cellcli -e list cell

cm01cel01: cm01cel01    online

cm01cel02: cm01cel02    online

cm01cel03: cm01cel03    online

[[email protected] ~]$

[[email protected] ~]$ cat cell_group

cm01cel01

cm01cel02

cm01cel03

[[email protected] ~]$

 

Now to monitor, for example, the amount of FlashCache used in each cell:

 

[[email protected] ~]$ dcli -g cell_group cellcli -e list \

metriccurrent where name=’ FC_BY_USED’

cm01cel01: FC_BY_USED   FLASHCACHE 13,316 MB

cm01cel02: FC_BY_USED   FLASHCACHE 13,344 MB

cm01cel03: FC_BY_USED   FLASHCACHE 13,301 MB

[[email protected] ~]$

 

If you were only interested in cell servers cm01cel02 and cm01cel03, use the “-c” option as below:

 

[[email protected] ~]$ dcli -c cm01cel02,cm01cel03 cellcli -e list metriccurrent where name=’ FC_BY_USED’

cm01cel02: FC_BY_USED   FLASHCACHE 13,344 MB

cm01cel03: FC_BY_USED   FLASHCACHE 13,301 MB

[[email protected] ~]$

 

The example above worked while operating on a “name” attribute for the metriccurrent statistic.

But in some cases, depending on which attribute you’re performing WHERE conditions against, dcli will generate a syntax error:

 

 

To get around this, you need to escape your single-quotes inside your double-quoted “cellcli –e” command:

 

 

Let’s look at an example in which we’re trying to find all cell-related alerts for a given time-range.  First, we’ll run from CELLCLI on one of our cell nodes:

 

 

Now let’s run from dcli:

 

 

As you can see, the same query returned no output.  Let’s try setting the date format on a cell:

 

 

 

As we can see, there is still no data returned.  I tried executing with a command script, but still was unable to return any data.

Summary:

  • Put double-quotes around your cellcli commands when running dcli, for sake of consistency.
  • You can escape single-quotes with a “\” to enable you to search on certain types of metadata.
  • Searching with WHERE conditions on date-format attributes doesn’t seem to be possible with dcli.

You could also use the “-l” option on dcli to provide a non-default (celladmin) login to each cell server; for example, “-l root” or “-l cellmonitor”.