[20240823]SYS.1073777561是什么对象.txt
--//这几天一直在探究sql执行时调用kgllkal,kglpnal函数的情况,遇到一个问题.
--//我发现执行kgllkal,kglpnal会访问一个句柄,对象SYS.1073777561,这一串数字表示怎么,做一个简单探究并做一个记录.
1.环境:
SYS@book> @ver2
==============================
PORT_STRING : x86_64/Linux 2.4.xx
VERSION : 21.0.0.0.0
BANNER : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID : 0
PL/SQL procedure successfully completed.
2.问题提出:
SYS@book> select owner,name,namespace,type,hash_value,full_hash_value from v$db_object_cache where namespace='DBINSTANCE';
OWNER NAME NAMESPACE TYPE HASH_VALUE FULL_HASH_VALUE
----- ---------- ---------- ------ ---------- --------------------------------
SYS 2763294012 DBINSTANCE CURSOR 509270897 af578157a1dbee941a3310101e5adb71
SYS 1073777561 DBINSTANCE CURSOR 471669191 25d8c2e2a1f8d5e74176b9b61c1d19c7
SYS book DBINSTANCE CURSOR 2789284771 b885bb910059a4d2fdbfc245a6411ba3
--//book 是建立测试库的sid.另外2个是怎么使用数字怎么回事.从namespace=DBINSTANCE很容易联想到PDB,还有1个 PDB$SEED,
--//我的测试库使用PDBNAME=book01p.oracle竟然使用数字表示,那么数字从那里来.
SYS@book> select pdb_id,DBID,PDB_NAME from dba_pdbs order by 1;
PDB_ID DBID PDB_NAME
---------- ---------- ------------------------------
2 2763294012 PDB$SEED
3 1073777561 BOOK01P
SYS@book> select obj#,CON_ID#,DBID,CON_UID from sys.container$ ;
OBJ# CON_ID# DBID CON_UID
---------- ---------- ---------- ----------
267 1 1617337831 1
76661 3 1073777561 1073777561
76089 2 2763294012 2763294012
--//很明显这些数字来自sys.container$.很奇怪oracle为什么不统一使用名字.
3.顺便验证FULL_HASH_VALUE是否正确.
SYS@book> @ kglob 0 471669191
==============================
INST_ID : 1
OWNER : SYS
NAME : 1073777561
DB_LINK :
NAMESPACE : DBINSTANCE
TYPE : CURSOR
NAMESPACE_NUM : 74
NAMESPACE_HEX : 4a
SHARABLE_MEM : 0
LOADS : 0
EXECUTIONS : 0
LOCKS : 0
PINS : 0
KEPT : NO
CHILD_LATCH : 72135
INVALIDATIONS : 0
HASH_VALUE : 471669191
LOCK_MODE : NONE
PIN_MODE : NONE
STATUS : UNKOWN
TIMESTAMP :
PREVIOUS_TIMESTAMP :
LOCKED_TOTAL : 10406
PINNED_TOTAL : 0
PROPERTY :
FULL_HASH_VALUE : 25d8c2e2a1f8d5e74176b9b61c1d19c7
CON_ID : 1
CON_NAME : CDB$ROOT
ADDR : 000000006B97C9F8
EDITION :
SQL_ID :
OBJECT_STR : 1073777561.SYS.CDB$ROOT\x4a\0\0\0
PL/SQL procedure successfully completed.
$ sql_idz.sh '1073777561.SYS.CDB$ROOT\x4a\0\0\0' 3
sql_text = 1073777561.SYS.CDB$ROOT\x4a\0\0\0
full_hash_value(16) = 25D8C2E2A1F8D5E74176B9B61C1D19C7 or 25d8c2e2a1f8d5e74176b9b61c1d19c7
xxxxx_matching_signature(10) = 4717161851524028871 or 23163905925233580487
hash_value(10) = 471669191
sql_id(32) = 42xptqsf1u6f7
sql_id(32) = 42xptqsf1u6f7
sql_id(32) = 42xptqsf1u6f7
--//full_hash_value(16) = 25D8C2E2A1F8D5E74176B9B61C1D19C7 or 25d8c2e2a1f8d5e74176b9b61c1d19c7完成对上.
--//另外我还发现21c出现许多数字命名的对象,NAMESPACE=OPTIMIZER EXPRESSION HEADER,OPTIMIZER DIRECTIVE OWNER.
--//不知道如何命名的,有机会在探究看看.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3025927/ ,如需转载,请注明出处,否则将追究法律责任。