DB2 Version 9.7 for Linux, UNIX, and Windows

SNAPLOCK administrative view and SNAP_GET_LOCK table function - Retrieve lock logical data group snapshot information

The SNAPLOCK administrative view and the SNAP_GET_LOCK table function return snapshot information about locks, in particular, the lock logical data group.

SNAPLOCK administrative view

This administrative view allows you to retrieve lock logical data group snapshot information for the currently connected database.

Used with the SNAPLOCKWAIT administrative view, the SNAPLOCK administrative view provides information equivalent to the GET SNAPSHOT FOR LOCKS ON database-alias CLP command.

The schema is SYSIBMADM.

Refer to Table 1 for a complete list of information that can be returned.

Authorization

One of the following authorizations is required:
  • SELECT privilege on the SNAPLOCK administrative view
  • CONTROL privilege on the SNAPLOCK administrative view
  • DATAACCESS authority
In addition, one of the following privileges or authorities is also required:
  • EXECUTE privilege on the SNAP_GET_LOCK table function
  • DATAACCESS authority
In addition, to access snapshot monitor data, one of the following authorities is also required:
  • SYSMON
  • SYSCTRL
  • SYSMAINT
  • SYSADM

Example

Retrieve lock information for the database partition 0 of the currently connected database.
SELECT AGENT_ID, LOCK_OBJECT_TYPE, LOCK_MODE, LOCK_STATUS 
   FROM SYSIBMADM.SNAPLOCK WHERE DBPARTITIONNUM = 0
The following example is a sample output from this query.
AGENT_ID             LOCK_OBJECT_TYPE LOCK_MODE LOCK_STATUS
-------------------- ---------------- --------- -----------
                   7 TABLE            IX        GRNT

  1 record(s) selected.

SNAP_GET_LOCK table function

The SNAP_GET_LOCK table function returns the same information as the SNAPLOCK administrative view, but allows you to retrieve the information for a specific database on a specific database partition, aggregate of all database partitions or all database partitions.

Used with the SNAP_GET_LOCKWAIT table function, the SNAP_GET_LOCK table function provides information equivalent to the GET SNAPSHOT FOR LOCKS ON database-alias CLP command.

Refer to Table 1 for a complete list of information that can be returned.

Syntax

Read syntax diagramSkip visual syntax diagram
>>-SNAP_GET_LOCK--(--dbname--+------------------+--)-----------><
                             '-, dbpartitionnum-'      

The schema is SYSPROC.

Table function parameters

dbname
An input argument of type VARCHAR(128) that specifies a valid database name in the same instance as the currently connected database. Specify a database name that has a directory entry type of either "Indirect" or "Home", as returned by the LIST DATABASE DIRECTORY command. Specify a null value or empty string to take the snapshot from the currently connected database.
dbpartitionnum
An optional input argument of type INTEGER that specifies a valid database partition number. Specify -1 for the current database partition, or -2 for an aggregate of all active database partitions. If dbname is not set to NULL and dbpartitionnum is set to NULL, -1 is set implicitly for dbpartitionnum. If this input option is not used, that is, only dbname is provided, data is returned from all active database partitions. An active database partition is a partition where the database is available for connection and use by applications.

If both dbname and dbpartitionnum are set to NULL, an attempt is made to read data from the file created by SNAP_WRITE_FILE procedure. Note that this file could have been created at any time, which means that the data might not be current. If a file with the corresponding snapshot API request type does not exist, then the SNAP_GET_LOCK table function takes a snapshot for the currently connected database and database partition number.

Authorization

One of the following authorizations is required:
  • EXECUTE privilege on the SNAP_GET_LOCK table function
  • DATAACCESS authority
In addition, to access snapshot monitor data, one of the following authorities is also required:
  • SYSMON
  • SYSCTRL
  • SYSMAINT
  • SYSADM

Example

Retrieve lock information for the current database partition of the currently connected database.
SELECT AGENT_ID, LOCK_OBJECT_TYPE, LOCK_MODE, LOCK_STATUS 
   FROM TABLE(SNAP_GET_LOCK('',-1)) as T
The following example is a sample output from this query.
AGENT_ID       LOCK_OBJECT_TYPE   LOCK_MODE  LOCK_STATUS
--------...--- ------------------ ---------- -----------
           680 INTERNALV_LOCK     S          GRNT 
           680 INTERNALP_LOCK     S          GRNT 

2 record(s) selected. 

Information returned

Table 1. Information returned by the SNAPLOCK administrative view and the SNAP_GET_LOCK table function
Column name Data type Description or corresponding monitor element
SNAPSHOT_TIMESTAMP TIMESTAMP snapshot_timestamp - Snapshot timestamp monitor element
AGENT_ID BIGINT agent_id - Application handle (agent ID)
TAB_FILE_ID BIGINT table_file_id - Table file identification
LOCK_OBJECT_TYPE VARCHAR(18) lock_object_type - Lock object type waited on . This interface returns a text identifier based on the defines in sqlmon.h and is one of:
  • AUTORESIZE_LOCK
  • AUTOSTORAGE_LOCK
  • BLOCK_LOCK
  • EOT_LOCK
  • INPLACE_REORG_LOCK
  • INTERNAL_LOCK
  • INTERNALB_LOCK
  • INTERNALC_LOCK
  • INTERNALJ_LOCK
  • INTERNALL_LOCK
  • INTERNALO_LOCK
  • INTERNALQ_LOCK
  • INTERNALP_LOCK
  • INTERNALS_LOCK
  • INTERNALT_LOCK
  • INTERNALV_LOCK
  • KEYVALUE_LOCK
  • ROW_LOCK
  • SYSBOOT_LOCK
  • TABLE_LOCK
  • TABLE_PART_LOCK
  • TABLESPACE_LOCK
  • XML_PATH_LOCK
LOCK_MODE VARCHAR(10) lock_mode - Lock mode . This interface returns a text identifier based on the defines in sqlmon.h and is one of:
  • IN
  • IS
  • IX
  • NON (if no lock)
  • NS
  • NW
  • S
  • SIX
  • U
  • X
  • Z
LOCK_STATUS VARCHAR(10) lock_status - Lock status . This interface returns a text identifier based on the defines in sqlmon.h and is one of:
  • CONV
  • GRNT
LOCK_ESCALATION SMALLINT lock_escalation - Lock escalation
TABNAME VARCHAR(128) table_name - Table name
TABSCHEMA VARCHAR(128) table_schema - Table schema name
TBSP_NAME VARCHAR(128) tablespace_name - Table space name
LOCK_ATTRIBUTES VARCHAR(128) lock_attributes - Lock attributes . This interface returns a text identifier based on the defines in sqlmon.h. If there are no locks, the text identifier is NONE, otherwise, it is any combination of the following separated by a '+' sign:
  • ALLOW_NEW
  • DELETE_IN_BLOCK
  • ESCALATED
  • INSERT
  • NEW_REQUEST
  • RR
  • RR_IN_BLOCK
  • UPDATE_DELETE
  • WAIT_FOR_AVAIL
LOCK_COUNT BIGINT lock_count - Lock count
LOCK_CURRENT_MODE VARCHAR(10) lock_current_mode - Original lock mode before conversion . This interface returns a text identifier based on the defines in sqlmon.h and is one of:
  • IN
  • IS
  • IX
  • NON (if no lock)
  • NS
  • NW
  • S
  • SIX
  • U
  • X
  • Z
LOCK_HOLD_COUNT BIGINT lock_hold_count - Lock hold count
LOCK_NAME VARCHAR(32) lock_name - Lock name
LOCK_RELEASE_FLAGS BIGINT lock_release_flags - Lock release flags
DATA_PARTITION_ID INTEGER data_partition_id - Data Partition identifier . For a non-partitioned table, this element is NULL.
DBPARTITIONNUM SMALLINT The database partition from which the data was retrieved for this row.