<?xml version="1.0" encoding="UTF-8"?>
|
<!--
|
! CCPL HEADER START
|
!
|
! This work is licensed under the Creative Commons
|
! Attribution-NonCommercial-NoDerivs 3.0 Unported License.
|
! To view a copy of this license, visit
|
! http://creativecommons.org/licenses/by-nc-nd/3.0/
|
! or send a letter to Creative Commons, 444 Castro Street,
|
! Suite 900, Mountain View, California, 94041, USA.
|
!
|
! You can also obtain a copy of the license at
|
! trunk/opendj3/legal-notices/CC-BY-NC-ND.txt.
|
! See the License for the specific language governing permissions
|
! and limitations under the License.
|
!
|
! If applicable, add the following below this CCPL HEADER, with the fields
|
! enclosed by brackets "[]" replaced with your own identifying information:
|
! Portions Copyright [yyyy] [name of copyright owner]
|
!
|
! CCPL HEADER END
|
!
|
! Copyright 2011-2014 ForgeRock AS
|
!
|
-->
|
<refentry xml:id='dbtest-1'
|
xmlns='http://docbook.org/ns/docbook'
|
version='5.0' xml:lang='en'
|
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
|
xsi:schemaLocation='http://docbook.org/ns/docbook
|
http://docbook.org/xml/5.0/xsd/docbook.xsd'>
|
<info><copyright><year>2011-2014</year><holder>ForgeRock AS</holder></copyright></info>
|
<refmeta>
|
<refentrytitle>dbtest</refentrytitle><manvolnum>1</manvolnum>
|
<refmiscinfo class="software">OpenDJ</refmiscinfo>
|
<refmiscinfo class="version"><?eval ${docTargetVersion}?></refmiscinfo>
|
</refmeta>
|
<refnamediv>
|
<refname>dbtest</refname>
|
<refpurpose>gather OpenDJ JE database debugging information</refpurpose>
|
</refnamediv>
|
<refsynopsisdiv>
|
<cmdsynopsis>
|
<command>dbtest</command> <command>subcommand</command> <arg>options</arg>
|
</cmdsynopsis>
|
</refsynopsisdiv>
|
<refsect1>
|
<title>Description</title>
|
<para>This utility can be used to debug the JE database.</para>
|
</refsect1>
|
<refsect1>
|
<title>Subcommands</title>
|
<para>The following subcommands are supported.</para>
|
<variablelist>
|
<varlistentry>
|
<term><command>dbtest dump-database-container</command></term>
|
<listitem>
|
<para>Dump records from a database container</para>
|
|
<para>
|
Depending on database size, this subcommand can generate lots of output.
|
</para>
|
</listitem>
|
</varlistentry>
|
<varlistentry>
|
<term><command>dbtest list-database-containers</command></term>
|
<listitem>
|
<para>List the database containers for an entry container</para>
|
</listitem>
|
</varlistentry>
|
<varlistentry>
|
<term><command>dbtest list-entry-containers</command></term>
|
<listitem>
|
<para>List the entry containers for a root container</para>
|
</listitem>
|
</varlistentry>
|
<varlistentry>
|
<term><command>dbtest list-index-status</command></term>
|
<listitem>
|
<para>List the status of indexes in an entry container</para>
|
|
<para>
|
When you list index status, the result is a table,
|
followed by a "Total", which is the total number of indexes,
|
followed by a list of indexes with "Undefined keys" to show
|
the values for which the number of entries exceeded the index entry limit.
|
The table has the following columns.
|
</para>
|
|
<variablelist>
|
<varlistentry>
|
<term>Index Name</term>
|
<listitem>
|
<para>
|
Name of the index,
|
which takes the form <replaceable>attr.type</replaceable>
|
for attribute indexes,
|
and vlv.<replaceable>name</replaceable> for VLV indexes.
|
Some indexes are for OpenDJ directory server's internal use.
|
</para>
|
|
<para>
|
Example: <literal>givenName.substring</literal>
|
</para>
|
</listitem>
|
</varlistentry>
|
|
<varlistentry>
|
<term>Index Type</term>
|
<listitem>
|
<para>
|
Type of the index,
|
which is <literal>Index</literal> for attribute indexes,
|
and <literal>VLVIndex</literal> for VLV indexes.
|
</para>
|
</listitem>
|
</varlistentry>
|
|
<varlistentry>
|
<term>JE Database Name</term>
|
<listitem>
|
<para>
|
Name of the Berkeley Java Edition database,
|
which reflects how OpenDJ directory server
|
organizes the data in the database.
|
</para>
|
|
<para>
|
Example: <literal>dc_example_dc_com_givenName.substring</literal>
|
</para>
|
</listitem>
|
</varlistentry>
|
|
<varlistentry>
|
<term>Index Valid</term>
|
<listitem>
|
<para>
|
This is <literal>true</literal> for valid indexes.
|
If this is <literal>false</literal>,
|
the index might be degraded.
|
Verify the index, and rebuild the index if necessary.
|
</para>
|
</listitem>
|
</varlistentry>
|
|
<varlistentry>
|
<term>Record Count</term>
|
<listitem>
|
<para>
|
Number of indexed keys.
|
Use the <command>dbtest dump-database-container</command> command
|
to see how many entry IDs correspond to each key.
|
</para>
|
</listitem>
|
</varlistentry>
|
|
<varlistentry>
|
<term>Undefined</term>
|
<listitem>
|
<para>
|
Number of keys for which there are too many values
|
to maintain an index, based on the index entry limit.
|
This is recorded as <literal>-</literal> for VLV indexes.
|
</para>
|
|
<para>
|
In other words, with the default index entry limit of 4000,
|
if every user in your large directory has a mail address
|
ending in <literal>@example.com</literal>,
|
and a substring index is maintained for <literal>mail</literal>,
|
then OpenDJ directory server does not maintain indexes for
|
keys corresponding to substrings in <literal>@example.com</literal>.
|
</para>
|
|
<para>
|
As a result, an LDAP search with the filter
|
<literal>"(mail=*@example.com)"</literal> becomes an unindexed search
|
even though a substring index exists for the mail attribute.
|
By default OpenDJ directory server does not allow unindexed searches
|
except by privileged users.
|
This is usually exactly the behavior you want
|
in order to prevent client applications for example
|
from sending searches that return every user in the directory.
|
Clients should refine their search filters instead.
|
</para>
|
</listitem>
|
</varlistentry>
|
|
<varlistentry>
|
<term>95%, 90%, 85%</term>
|
<listitem>
|
<para>
|
Number of keys for which the number of values is approaching
|
the index entry limit, having reached the specified percentage.
|
This is a measure of how full the entry ID lists are.
|
</para>
|
</listitem>
|
</varlistentry>
|
</variablelist>
|
</listitem>
|
</varlistentry>
|
<varlistentry>
|
<term><command>dbtest list-root-containers</command></term>
|
<listitem>
|
<para>List the root containers used by all JE backends</para>
|
</listitem>
|
</varlistentry>
|
</variablelist>
|
</refsect1>
|
<refsect1>
|
<title>Options</title>
|
<para>The following global options are supported.</para>
|
<para>For other options, see <command>dbtest
|
<replaceable>subcommand</replaceable> --help</command>.</para>
|
<variablelist>
|
<varlistentry>
|
<term><option>--version</option></term>
|
<listitem>
|
<para>Display version information</para>
|
</listitem>
|
</varlistentry>
|
<varlistentry>
|
<term><option>-?, -H, --help</option></term>
|
<listitem>
|
<para>Display usage information</para>
|
</listitem>
|
</varlistentry>
|
</variablelist>
|
</refsect1>
|
<refsect1>
|
<title>Exit Codes</title>
|
<variablelist>
|
<varlistentry>
|
<term>0</term>
|
<listitem>
|
<para>The command completed successfully.</para>
|
</listitem>
|
</varlistentry>
|
<varlistentry>
|
<term>> 0</term>
|
<listitem>
|
<para>An error occurred.</para>
|
</listitem>
|
</varlistentry>
|
</variablelist>
|
</refsect1>
|
<refsect1>
|
<title>Examples</title>
|
<para>The following example displays debugging information about the
|
equality index for <literal>sudoUser</literal>.</para>
|
|
<screen>
|
$ <userinput>dbtest dump-database-container -n userRoot -b dc=example,dc=com \
|
-d sudoUser.equality</userinput>
|
<computeroutput>Indexed Value (6 bytes): %admin
|
Entry ID List (8 bytes): 165
|
|
Indexed Value (5 bytes): %sudo
|
Entry ID List (8 bytes): 164
|
|
Indexed Value (4 bytes): root
|
Entry ID List (8 bytes): 163
|
|
|
Total Records: 3
|
Total / Average Key Size: 13 bytes / 4 bytes
|
Total / Average Data Size: 24 bytes / 8 bytes</computeroutput>
|
</screen>
|
</refsect1>
|
</refentry>
|