[20240929]记录测试中的错误.txt --//注意访问X$表,千万不要以sys用户PDB方式登录查询,可能根本没有结果。 --//我个人并不喜欢pdb,可以oracle肯定强推pdb,现在版本无法安装非pdb环境的。记录测试过程: 1.环境: SCOTT@book01p> @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. SYS@book> select PDB_ID,PDB_NAME,CON_UID from dba_pdbs; PDB_ID PDB_NAME CON_UID ---------- ------------------------------ ---------- 3 BOOK01P 1073777561 2 PDB$SEED 2763294012 SCOTT@book01p> select * from dept where deptno=20; DEPTNO DNAME LOC ---------- ------------------------------ ------------- 20 RESEARCH DALLAS SCOTT@book01p> @ hash HASH_VALUE SQL_ID CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX SQL_EXEC_START SQL_EXEC_ID ---------- ------------- ------------ ---------- --------------- ---------- ------------------- ----------- 95129850 80baj2c2ur47u 0 102650 2852011669 5ab90fa 2024-09-29 15:56:25 16777216 2.测试: --//sys用户登录pdb=book01。 SYS@book01p> @ sharepool/shp4 80baj2c2ur47u 0 HANDLE_TYPE KGLHDADR KGLHDPAR C40 KGLHDLMD KGLHDPMD KGLHDIVC KGLOBHD0 KGLOBHD6 KGLOBHS0 KGLOBHS6 KGLOBT16 N0_6_16 N20 KGLNAHSH KGLOBT03 KGLOBT09 ---------------------- ---------------- ---------------- ---------------------------------------- ---------- ---------- ---------- ---------------- ---------------- ---------- ---------- ---------- --------- ---------- ---------- ------------- ---------- child handle address 0000000066279C20 000000006627A380 select * from dept where deptno=20 0 0 0 000000006630D7A0 0000000066220868 8080 20224 3299 31603 31603 95129850 80baj2c2ur47u 0 parent handle address 000000006627A380 000000006627A380 select * from dept where deptno=20 0 0 0 000000006627A1C0 00 4064 0 0 4064 4064 95129850 80baj2c2ur47u 65535 SYS@book01p> @ fchaz 000000006627A1C0 no rows selected SYS@book01p> select count(*) from x$ksmsp ; COUNT(*) ---------- 0 SYS@book01p> select * from x$ksmsp ; no rows selected --//当时真的吓了我一跳,换一句话以pdb登录查询x$ksmsp根本没有记录。 --//sys用户登录sid=book。 SYS@book> @ fchaz 000000006627A1C0 LOC KSMCHPTR KSMCHIDX KSMCHDUR KSMCHCOM KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 --- ---------------- ---------- ---------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- SGA 000000006627A150 1 1 KGLDA 512 freeabl 0 00 000000006627A150 000000006627A350 SYS@book> select count(*) from x$ksmsp ; COUNT(*) ---------- 146404 --//非常容易出现歧义性。 --//有点不理解的是x$kglob访问没有这个问题,而x$ksmsp不行。 --//sys用户登录pdb=book01。 SYS@book01p> select count(*) from x$kglob ; COUNT(*) ---------- 3350 --//sys用户登录sid=book。 SYS@book> select count(*) from x$kglob ; COUNT(*) ---------- 11092 3.继续分析: --//sys用户登录pdb=book01。 SYS@book01p> select count(*) from x$ksmsp ; COUNT(*) ---------- 0 SYS@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID 7x84z21dmcfsv, child number 0 ------------------------------------- select count(*) from x$ksmsp Plan hash value: 1489174925 ------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| ------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 1 (100)| | 1 | SORT AGGREGATE | | 1 | 13 | | |* 2 | FIXED TABLE FULL| X$KSMSP | 1 | 13 | 0 (0)| ------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$F5BB74E1 2 - SEL$F5BB74E1 / "X$KSMSP"@"SEL$2" Predicate Information (identified by operation id): --------------------------------------------------- 2 - filter(("CON_ID"=0 OR "CON_ID"=3)) Note ----- - Warning: basic plan statistics not available. These are only collected when: * hint 'gather_plan_statistics' is used for the statement or * parameter 'statistics_level' is set to 'ALL', at session or system level 31 rows selected. --//sys用户登录sid=book。 SYS@book> select count(*) from x$ksmsp ; COUNT(*) ---------- 171056 SYS@book> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID 7x84z21dmcfsv, child number 1 ------------------------------------- select count(*) from x$ksmsp Plan hash value: 1489174925 ---------------------------------------------------------------------- | Id | Operation | Name | E-Rows | Cost (%CPU)| E-Time | ---------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | 17 (100)| | | 1 | SORT AGGREGATE | | 1 | | | | 2 | FIXED TABLE FULL| X$KSMSP | 187K| 17 (100)| 00:00:01 | ---------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 2 - SEL$1 / "X$KSMSP"@"SEL$1" Note ----- - Warning: basic plan statistics not available. These are only collected when: * hint 'gather_plan_statistics' is used for the statement or * parameter 'statistics_level' is set to 'ALL', at session or system level --//前者加入过滤条件filter(("CON_ID"=0 OR "CON_ID"=3))。 SELECT x$ksmsp.*,x$ksmsp.ksmchptr ksmchptr_begin,TO_CHAR(TO_NUMBER(KSMCHPTR,'XXXXXXXXXXXXXXXX') + KSMCHSIZ ,'FM0XXXXXXXXXXXXXXX') "KSMCHPTR_END+1" FROM x$ksmsp WHERE to_number(substr('000000006627A1C0', instr(lower('000000006627A1C0'), 'x')+1) ,'XXXXXXXXXXXXXXXX') between to_number(ksmchptr,'XXXXXXXXXXXXXXXX') and to_number(ksmchptr,'XXXXXXXXXXXXXXXX') + ksmchsiz - 1; ADDR INDX INST_ID CON_ID KSMCHIDX KSMCHDUR KSMCHCOM KSMCHPTR KSMCHSIZ KSMCHCLS KSMCHTYP KSMCHPAR KSMCHPTR_BEGIN KSMCHPTR_END+1 HEAP_DESC ---------------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------------- ---------- -------- ---------- ---------------- ---------------- ----------------- ------------------------- 00007F399E35A4B0 149585 1 1 1 1 KGLDA 000000006627A150 512 freeabl 0 00 000000006627A150 000000006627A350 --//而这里记录CON_ID=1,fchaz脚本查询不到就很正常了。 SYS@book> select count(*),CON_ID from x$ksmsp group by CON_ID; COUNT(*) CON_ID ---------- ---------- 188457 1 --//x$ksmsp记录的全部都是CON_ID=1,感觉这个是不是oracle的bug。 SELECT c.OBJ# ,c.CON_ID# ,c.DBID ,c.CON_UID ,c.status ,o.name FROM sys.container$ c, sys.obj$ o WHERE o.obj# = c.obj# AND c.status <> 4; OBJ# CON_ID# DBID CON_UID STATUS NAME ---------- ---------- ---------- ---------- ------ ------------------------------ 267 1 1617337831 1 2 CDB$ROOT 76661 3 1073777561 1073777561 2 BOOK01P 76089 2 2763294012 2763294012 2 PDB$SEED --//CON_ID#=1对应的是CDB$ROOT,总之以后工作中注意。 --//不要以sys用户PDB方式登录查询,可能根本没有结果。
[20240929]记录测试中的错误.txt
来源:这里教程网
时间:2026-03-03 20:39:54
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 大事件! Oracle CloudWorld 是"真高光"还是"挤牙膏"?
- 掌握CMD命令:轻松切换IP地址
掌握CMD命令:轻松切换IP地址
26-03-03 - 5大公有云厂商增强很猛~作为DBA的,有点焦虑!
5大公有云厂商增强很猛~作为DBA的,有点焦虑!
26-03-03 - ORA-01558: out of transaction ID's in rollback segment SYSTEM---惜分飞
- 一个很小的系统为什么负载那么高?
一个很小的系统为什么负载那么高?
26-03-03 - 户外电力柜的新守护者:辐射制冷技术
户外电力柜的新守护者:辐射制冷技术
26-03-03 - 解锁大模型潜力:GBASE南大通用与英特尔共同推出向量数据库前沿技术
解锁大模型潜力:GBASE南大通用与英特尔共同推出向量数据库前沿技术
26-03-03 - oracle listener查询报错TNS-12560,TNS-00530,客户端ora-12514
- 数据库数据恢复—Oracle数据库打开报错的数据恢复案例
数据库数据恢复—Oracle数据库打开报错的数据恢复案例
26-03-03 - 回家过中秋?扎心,锁表导致系统挂了
回家过中秋?扎心,锁表导致系统挂了
26-03-03
