Displays current information about the OpenVMS locks database on your node. It provides information concerning lock activity and contention for all active databases.
1 – Description
In a clustered environment, the RMU Show Locks command displays detailed lock information for your current node and may display information about known remote locks. The RMU Show Locks command displays information about process locks for all active databases on a specific node. A process requesting a lock can have one of three states: owning, blocking, or waiting. A process is considered to be owning when the lock request is granted. A process is considered to be blocking when the lock request is granted and its mode is incompatible with other waiting locks. A process is considered to be waiting when it is prevented from being granted a lock due to the presence of other granted locks whose modes are incompatible with the process' requested mode. Using the RMU/SHOW LOCKS command can be difficult on systems with multiple open databases due to the amount of output and difficulty in determining what database a particular lock references. The RMU/SHOW LOCKS command, when supplied with a root file specification, can be used to additionally filter lock displays to a specific database. Note that in some cases the RMU/SHOW LOCKS command may be unable to filter locks prior to display. And when using the database "LOCK PARTITIONING IS ENABLED" feature for a database, the RMU/SHOW LOCKS command with a root file specification will be unable to associate area, page, and record locks with the specified database because the database lock is not the lock tree root for these lock types. The values for the Mode qualifier: Blocking and Waiting, can be combined with the Process and Lock qualifiers to indicate which of the following types of information is displayed: o If the Blocking option is specified, information is displayed about processes whose locks are blocking other processes' locks. o If the Waiting option is specified, information is displayed about processes whose locks are waiting for other processes' locks. o If the Process qualifier is specified, information is displayed for a specified list of processes. o If the Lock qualifier is specified, information is displayed for a specified list of locks. When no qualifiers are specified, a list of all active locks in the OpenVMS locks database is displayed. Use the qualifiers individually or in combination to display the required output. See Lock Qualifier Combinations for all possible qualifier combinations and the types of output they produce. If you do not specify any qualifiers, a complete list of locks is displayed. The volume of information from this report can be quite large. Therefore, you should use the Output qualifier to direct output to a file, instead of allowing the output to display to SYS$OUTPUT. Each output contains a heading that indicates what qualifiers, if any, were used to generate the output. Table 16 Lock Qualifier Combinations Mode Option Object Argument Argument Output Process Locks for the specified processes Process Blocking Processes blocking the specified processes Process Waiting Processes waiting for the specified processes Process All Process locks for the specified processes Process Full Special process locks for the specified processes Process Blocking, Processes blocking and Waiting waiting for the specified processes Process Blocking Full Special process locks blocking the specified processes Process Waiting Full Special process locks waiting for the specified processes Process Blocking, Full Special process locks Waiting blocking and waiting for the specified processes Process All, Full Process and special process locks for the specified processes Lock Locks for the specified locks Lock Blocking Processes blocking the specified locks Lock Waiting Processes waiting for the specified locks Lock Full Special process locks for the specified locks Lock Blocking Full Special process locks blocking the specified locks Lock Waiting Full Special process locks waiting for the specified locks Lock Blocking, Processes blocking and Waiting waiting for the specified locks Lock Blocking, Full Special process locks Waiting blocking and waiting for the specified locks Blocking Lock requests that are blocked Waiting Lock requests that are waiting Blocking, Lock requests that are Waiting blocking and waiting Process Locks for specified Lock processes and locks Process Blocking Processes blocking the Lock specified processes and locks Process Waiting Processes waiting for the Lock specified processes and locks Process Blocking, Processes blocking and Lock Waiting waiting for the specified processes and locks Process Blocking Full Special process locks Lock blocking the specified processes and locks Process Waiting Full Special process locks Lock waiting for the specified processes and locks Process All Process locks for the Lock specified processes and locks Process Full Special process locks for Lock the specified processes and locks Process Blocking Full Special process locks Lock blocking the specified processes and locks Process All, Full Process and special Lock process locks for the specified processes and locks You can display only those processes that you have privilege to access. Furthermore, certain special database processes are not displayed, unless you specifically indicate that all processes are to be displayed. The report heading indicates what qualifiers were used to generate the output.
2 – Format
(B)0[m RMU/Show Locks [root-file-spec] [4mCommand[m [4mQualifiers[m x [4mDefaults[m x /Lock = lock-list x None /Mode = (mode-list) x None /Options = (option-list) x See description /Output[=file-name] x /Output=SYS$OUTPUT /Process = process-list x None /Resource-type=resource-type-list x None
3 – Parameters
3.1 – root-file-spec
The root file specification of the database for which you want to filter lock displays. Optional parameter.
4 – Command Qualifiers
4.1 – Lock
Lock=lock-list Displays information for each of the specified locks. When combined with the Mode=Blocking qualifier, the Lock qualifier displays information about processes whose locks are blocking the specified locks. When combined with the Mode=Waiting qualifier, the Lock qualifier displays information about processes whose lock requests are waiting for the specified locks. One or more locks can be specified; if more than one lock is specified, they must be enclosed in parentheses and separated by commas. The lock identifier is an 8-digit hexadecimal number, and must be local to the node on which the RMU Show Locks command is issued. To see the lock identifier upon which a process is waiting, you can do either of the following: o Invoke the character cell Performance Monitor "Stall Messages" display. o Invoke the Performance Monitor from your PC and select Displays
4.2 – Mode
Mode=(mode-list) Indicates the lock mode to be displayed. If you specify more than one option in the mode-list, you must separate the options with a comma, and enclose the mode-list in parentheses. The following lock mode options are available: o Blocking Displays the set of processes whose locks are blocking the lock requests of other processes. A process is considered to be waiting when it has requested a lock mode that is incompatible with existing granted lock modes; in this case, the requestor is the waiting process and the grantors are the blocking processes. The first line of output identifies a process that is waiting for a lock request to be granted. All subsequent lines of output identify those processes that are preventing the lock request from being granted. When multiple processes are waiting for the same lock resource, multiple sets of process-specific information, one for each waiting process, are displayed. o Culprit Displays the set of locks for processes that are blocking other processes but are themselves not locked. The output represents the processes that are the source of database stalls and performance degradation. o Waiting Displays the set of processes whose lock requests are waiting due to incompatible granted locks for other processes. A process is considered to be blocking others when it has been granted a lock mode that is incompatible with requested lock modes; in this case, the "Blocker" is the blocking process and the "Waiting" are the waiting processes. A requesting process can appear to be waiting for other lock requestors. This condition occurs when there are many processes waiting on the same lock resource. Depending upon the sequence of processes in the wait queue, certain waiting processes appear to be blocking other waiting processes because, eventually, they will be granted the lock first. The first line of output identifies a process that has been granted a lock on a resource. All subsequent lines of output identify those processes that are waiting for lock requests on the same resource to be granted. When multiple processes are blocking the same lock resource, multiple sets of process- specific information, one for each blocking process, are displayed.
4.3 – Options
Options=(option-list) Indicates the type of information and the level of detail the output will include. If you do not specify the Options qualifier, the default output is displayed. If you specify more than one type of output for the Options qualifier, you must separate the options with a comma, and enclose the options list within parentheses. The following options are available: o All Used when you want the complete list of process locks; by default, lock information for only the specified process is displayed. When you specify the All option, information is displayed for all other processes that have a need to know the lock held by the specific process. This method is an easy way to display all of a process' locks and to see what other processes are also using the same resource. If the Mode qualifier is specified, the Options=(All) qualifier is ignored. o Full Indicates that special database processes are to be displayed. Some special database processes, such as monitors, perform work on behalf of a database. These database processes frequently request locks that by design conflict with other processes' locks; the granting of these locks indicates an important database event. By default, these special database processes are not displayed because they increase the size of the output.
4.4 – Output
Output[=file-name] Specifies the name of the file where output is sent. The default is SYS$OUTPUT. The default output file extension is .lis, if you specify only a file name.
4.5 – Process
Process=process-list Displays information for each lock held or requested by the specified processes when used by itself. When the Process qualifier is combined with the Mode=Blocking qualifier, information is displayed about processes whose locks are blocking lock requests by the specified waiting processes. NOTE When the Process qualifier is specified without any Options qualifier values, all locks for the processes are displayed, including owning, blocking, and waiting locks. One or more processes can be specified; if more than one process is specified, they must be enclosed within parentheses and separated by commas. The process identifier is an 8-digit hexadecimal number, and must be local to the node on which the RMU Show Locks command is issued. The process ID must include all eight characters; the node identifier portion of the process ID cannot be excluded. To get more information, use the Options=All qualifier to display all users using processes' locks.
4.6 – Resource type
Resource_type=resource-type-list Displays information for each lock held or requested by the specified resource type. Only the specific resource types will be displayed. This permits, for example, only PAGE or RECORD lock types to be selected. One or more resouce types can be specified; if more than one type is specified, they must be enclosed within parentheses and separated by commas. The following keywords are allowed with the Resource_type qualifier. Table 17 RESOURCE_TYPE Keywords Internal Lock Type Name Keyword(s) ACCESS ACCESS ACTIVE ACTIVE AIJDB AIJDB AIJFB AIJFB AIJHWM AIJHWM, AIJ_HIGH_WATER_MARK AIJLOGMSG AIJ_LOG_MESSAGE AIJLOGSHIP AIJ_LOG_SHIPPING AIJOPEN AIJ_OPEN AIJSWITCH AIJ_SWITCH AIJ AIJ AIPQHD AIP ALS ALS_ACTIVATION BCKAIJ AIJ_BACKUP, BCKAIJ BCKAIJ_SPD AIJ_BACKUP_SUSPEND BUGCHK BUGCHECK CHAN CHAN, FILE_CHANNEL CLIENT CLIENT CLOSE CLOSE CLTSEQ CLTSEQ CPT CORRUPT_PAGE_TABLE, CPT DASHBOARD DASHBOARD_NOTIFY DBK_SCOPE DBKEY_SCOPE DBR DBR_SERIALIZATION DB DATABASE FIB FAST_INCREMENTAL_BACKUP, FIB FILID FILID FRZ FREEZE GBL_CKPT GLOBAL_CHECKPOINT GBPT_SLOT GLOBAL_BPT_SLOT KROOT KROOT LAREA LAREA, LOGICAL_AREA LOGFIL LOGFIL MEMBIT MEMBIT MONID MONID, MONITOR_ID MONITOR MONITOR NOWAIT NOWAIT PLN DBKEY, RECORD, PLN PNO PAGE, PNO QUIET QUIET RCACHE RCACHE RCSREQUEST RCS_REQUEST RCSWAITRQST RCS_WAIT_REQUEST REL_AREAS RELEASE_AREAS REL_GRIC_ RELEASE_GRIC_REQUEST REQST RMUCLIENT RMU_CLIENT ROOT_AREA DUMMY_ROOT_AREA RO_L1 L1_SNAP_TRUNCATION RTUPB RTUPB RUJBLK RUJBLK RW_L2 L2_SNAP_TRUNCATION SAC SNAP_AREA_CURSOR SEQBLK SEQBLK STAREA STORAGE_AREA, PAREA STATRQST STATISTICS_REQUEST TRM TERMINATION TSNBLK TSNBLK UTILITY UTILITY The RESOURCE_TYPE qualifier is incompatible with the MODE, LIMIT, LOCK and PROCESS qualifiers.
5 – Usage Notes
o To use the RMU Show Locks command for a database, you must have the OpenVMS WORLD privilege. o When you specify a list of processes or lock identifiers, make sure the processes or locks are local to the node on which the RMU Show Locks command is issued. o To display the complete list of locks in the OpenVMS locks database, do not specify the Mode=Blocking or Waiting qualifier. The volume of information from this report can be quite large. o If you have entered an Oracle RMU command and there are no locks on your node, you receive the following message: %RMU-I-NOLOCKSOUT, No locks on this node with the specified qualifiers. o When you use the RMU Show Locks command to display locks, the "requested" and "granted" modes of the given lock are displayed. The definitions for the two fields follow: - Requested This is the mode for which the process has requested the lock. Valid modes are NL, CR, CW, PR, PW, and EX. This mode is not guaranteed to be granted; some locks are intentionally held in conflicting modes forever (for example, the "termination" lock). - Granted This is the mode that the process was last granted for the lock. Valid modes are NL, CR, CW, PR, PW, and EX. Furthermore, if the lock has never been previously granted, the lock mode is displayed as NL mode. Lock Mode Compatibility shows the compatibility of requested and granted lock modes. Table 18 Lock Mode Compatibility Mode of Currently Granted Locks Mode of Requested Lock NL CR CW PR PW EX NL Yes Yes Yes Yes Yes Yes CR Yes Yes Yes Yes Yes No CW Yes Yes Yes No No No PR Yes Yes No Yes No No PW Yes Yes No No No No EX Yes No No No No No __________________________________________________________________ Key to Lock Modes NL-Null Lock CR-Concurrent Read CW-Concurrent Write PR-Protected Read PW-Protected Write EX-Exclusive Lock Yes-Locks compatible No-Locks not compatible o If the "requested" and "granted" lock modes differ, then the lock requested is currently blocked on either the "wait" or "conversion" queue. If the modes are the same, then the lock has been granted. o The OpenVMS distributed lock manager does not always update the requested lock mode. This means that potentially conflicting information can be displayed by the RMU Show Locks utility. o The requested lock mode is updated only under the following situations: - The lock request is for a remote resource. - The lock request is a Nowait request. - The lock request could not be granted due to a lock conflict (that is, it was canceled by the application or aborted due to lock timeout or deadlock). - The lock request is the first for the resource. o Consider the following RMU Show Locks output: --------------------------------------------------------------------- Resource Name: page 533 Granted Lock Count: 1, Parent Lock ID: 01000B6C, Lock Access Mode: Executive, Resource Type: Global, Lock Value Block: 03000000 00000000 00000000 00000002 -Master Node Info- --Lock Mode Information-- -Remote Node Info- ProcessID Lock ID SystemID Requested Granted Queue Lock ID SystemID 2040021E 0400136A 00010002 EX CR GRANT 0400136A 00010002 ------------------------------------------------------------------------ In this example, it is ordinarily difficult to explain how such a combination of lock modes could occur. Note that the CR (concurrent read) mode is on the Grant queue (not the Conversion queue). Knowledge of the operating environment is necessary to know that there was only one node on this system. It turns out that two lock requests actually occurred to generate this output, in the opposite order of what appears to have occurred. The first lock request was for EX (exclusive), which was immediately granted. Thus, the Requested and Granted modes were updated according to situation 4. Then, the lock was demoted from EX to CR mode, which was also immediately granted. However, the Requested field was not updated because none of the four preceding rules was true, so the Requested mode was never updated to reflect the CR lock request. o
6 – Examples
Example 1 The following command will output all the locks held by process ID 44A047C9. The report text will show the resource on which the lock is held, ID information, and lock status (Requested and Granted). $ RMU/SHOW LOCKS/PROCESS=44A047C9