首批通过分布式安全可靠测评,为关键业务系统打造
LOCK_TABLE_STATS
更新时间:2026-03-29 20:39:55
LOCK_TABLE_STATS 过程用于锁定表的统计信息。
语法
DBMS_STATS.LOCK_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
stattype VARCHAR2 DEFAULT 'ALL');
参数解释
| 参数 | 解释 |
|---|---|
| ownname | 用户名。如果用户名设置为 NULL,会默认使用当前登录用户名。 |
| tabname | 表名称。 |
| stattype | 加锁的类型。一般包括如下三种加锁类型:
|
使用说明
要调用此过程,您必须是表的所有者。对于
SYS拥有的对象,需要是表的所有者或者具有SYSDBA权限才能调用此过程。当一个表的统计信息被锁定时,所有依赖于该表的统计信息都会被锁定,包括表级统计信息、列级统计信息、直方图统计信息和所有依赖索引的统计信息。
如果对象的统计信息被锁定,则执行
SET_*、DELETE_*、IMPORT_*、GATHER_*过程进行修改单个表、索引或列的统计信息时将引发错误。调用
EXPORT_*_STATS过程时,锁定或解锁状态不会与表级统计信息一起导出。UNLOCK_SCHEMA_STATS过程和UNLOCK_TABLE_STATS过程都不能解锁相应分区的统计信息。当您调用LOCK_TABLE_STATS过程时,它会在表级别设置锁定位置。此时,您无法收集有关分区和索引等依赖对象的统计信息。另外,如果表级统计信息被锁定,其依赖项也会被锁定,就不需要显式调用LOCK_PARTITION_STATS过程来锁定分区统计信息。
示例
锁定用户 testUser01 下的表 t1 的表级统计信息。
obclient> CALL DBMS_STATS.LOCK_TABLE_STATS ('testUser01', 't1');
Query OK, 0 rows affected