[20250807]绑定变量peeking的问题.txt --//昨天看了绑定变量peeking的问题,https://jonathanlewis.wordpress.com/2025/08/01/bind-peeking-2/ --//作者做了一个很有兴趣的演示,实际上只要发生查询转换,就可能出现这样的情况,自己重复演示看看。 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. 2.测试环境建立: create table t1 as select * from all_objects ; alter table t1 add constraint t1_pk primary key(object_id); 3.测试: variable b1 number exec :b1 := 20 select * from ( select object_id, object_name, object_type, owner from t1 order by object_id) where rownum <= :b1; SCOTT@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID cjnhuz394pm2r, child number 0 ------------------------------------- select * from ( select object_id, object_name, object_type, owner from t1 order by object_id) where rownum <= :b1 Plan hash value: 3766500789 ---------------------------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | ---------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 4 (100)| | |* 1 | COUNT STOPKEY | | | | | | | 2 | VIEW | | 20 | 3160 | 4 (0)| 00:00:01 | | 3 | TABLE ACCESS BY INDEX ROWID| T1 | 69950 | 3825K| 4 (0)| 00:00:01 | | 4 | INDEX FULL SCAN | T1_PK | 20 | | 2 (0)| 00:00:01 | ---------------------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 2 - SEL$2 / "from$_subquery$_001"@"SEL$1" 3 - SEL$2 / "T1"@"SEL$2" 4 - SEL$2 / "T1"@"SEL$2" Peeked Binds (identified by position): -------------------------------------- 1 - (NUMBER): 20 Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(ROWNUM<=:B1) 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 41 rows selected. --//可以看到绑定变量。 SCOTT@book01p> @ 10053x cjnhuz394pm2r 0 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3463_acjnhuz394pm2r.trc SCOTT@book01p> @ 10053y '' TRCLINE ------------------------------------------------------------------------------------------------------------------------ Final query after transformations:******* UNPARSED QUERY IS ******* SELECT "from$_subquery$_001"."OBJECT_ID" "OBJECT_ID","from$_subquery$_001"."OBJECT_NAME" "OBJECT_NAME","from$_subquery$_ 001"."OBJECT_TYPE" "OBJECT_TYPE","from$_subquery$_001"."OWNER" "OWNER" FROM (SELECT "T1"."OBJECT_ID" "OBJECT_ID","T1"." OBJECT_NAME" "OBJECT_NAME","T1"."OBJECT_TYPE" "OBJECT_TYPE","T1"."OWNER" "OWNER" FROM "SCOTT"."T1" "T1" ORDER BY "T1"."O BJECT_ID") "from$_subquery$_001" WHERE ROWNUM<=:B1 variable b2 number variable b3 number exec :b2 := 15; :b3 := 5 select * from ( select object_id, object_name, object_type, owner from t1 order by object_id) where rownum <= :b2 + :b3 ; SCOTT@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID gzgba1wjq8999, child number 0 ------------------------------------- select * from ( select object_id, object_name, object_type, owner from t1 order by object_id) where rownum <= :b2 + :b3 Plan hash value: 270731910 -------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes|E-Temp | Cost (%CPU)| E-Time | OMem | 1Mem | Used-Mem | -------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | | 1369 (100)| | | | | |* 1 | COUNT STOPKEY | | | | | | | | | | | 2 | VIEW | | 69950 | 10M| | 1369 (1)| 00:00:01 | | | | |* 3 | SORT ORDER BY STOPKEY| | 69950 | 3825K| 4672K| 1369 (1)| 00:00:01 | 2048 | 2048 | 2048 (0)| | 4 | TABLE ACCESS FULL | T1 | 69950 | 3825K| | 412 (1)| 00:00:01 | | | | -------------------------------------------------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 2 - SEL$2 / "from$_subquery$_001"@"SEL$1" 3 - SEL$2 4 - SEL$2 / "T1"@"SEL$2" Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter(ROWNUM<=:B2+:B3) 3 - filter(ROWNUM<=:B2+:B3) 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 37 rows selected. --//换成2个变量执行计划就无法看到2个绑定变量值。而且因为无法看到绑定变量值,导致执行计划id=4选择全表扫描。 --//https://jonathanlewis.wordpress.com/2025/08/01/bind-peeking-2/的解析: The reason this omission is worth pursuing shows up in an article I wrote a couple of months ago about the "fetch next" syntax. If you use bind variables for the offset and fetch size then Oracle will rewrite your SQL to produce a predicate which effectively reduces to: row_number() <= :offset + :fetch_size and, as with the rownum clause above, will not work out that the sum of the two bind variables means that an indexed access path would be the best choice. In fact, although I've chosen to demonstrate the problem with a sum of two bind variables, any arithmetic applied at this point is enough to disable the use of peeked valued – ":b1 + 0" and ":b1 * 1" both result in a critical loss of information even though one feels that the optimizer ought to be able to transform the constants out of the unparsed query in these extreme cases. SCOTT@book01p> @ 10053x gzgba1wjq8999 0 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3463_agzgba1wjq8999.trc SCOTT@book01p> @ 10053y '' TRCLINE ------------------------------------------------------------------------------------------------------------------------ Final query after transformations:******* UNPARSED QUERY IS ******* SELECT "from$_subquery$_001"."OBJECT_ID" "OBJECT_ID","from$_subquery$_001"."OBJECT_NAME" "OBJECT_NAME","from$_subquery$_ 001"."OBJECT_TYPE" "OBJECT_TYPE","from$_subquery$_001"."OWNER" "OWNER" FROM (SELECT "T1"."OBJECT_ID" "OBJECT_ID","T1"." OBJECT_NAME" "OBJECT_NAME","T1"."OBJECT_TYPE" "OBJECT_TYPE","T1"."OWNER" "OWNER" FROM "SCOTT"."T1" "T1" ORDER BY "T1"."O BJECT_ID") "from$_subquery$_001" WHERE ROWNUM<=:B1+:B2 --//你可以这样理解当存在2个变量做运算时,oracle不知道该计算结果值的返回,只能选择忽略绑定变量peeking。 variable n2 number variable n3 number exec :n2 := 15; :n3 := 5 select * from dept where deptno = :n2 + :n3; SCOTT@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID 35njt8u5smf74, child number 0 ------------------------------------- select * from dept where deptno = :n2 + :n3 Plan hash value: 2852011669 ---------------------------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | ---------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 1 (100)| | | 1 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 20 | 1 (0)| 00:00:01 | |* 2 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| | ---------------------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 / "DEPT"@"SEL$1" 2 - SEL$1 / "DEPT"@"SEL$1" Peeked Binds (identified by position): -------------------------------------- 1 - (NUMBER): 15 2 - (NUMBER): 5 Predicate Information (identified by operation id): --------------------------------------------------- 2 - access("DEPTNO"=:N2+:N3) --//这样的情况能看到绑定变量值。 SCOTT@book01p> @ 10053x 35njt8u5smf74 0 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3829_a35njt8u5smf74.trc SCOTT@book01p> @ 10053y TRCLINE ------------------------------------------------------------------------------------------------------------------------ Final query after transformations:******* UNPARSED QUERY IS ******* SELECT "DEPT"."DEPTNO" "DEPTNO","DEPT"."DNAME" "DNAME","DEPT"."LOC" "LOC" FROM "SCOTT"."DEPT" "DEPT" WHERE "DEPT"."DEPTN O"=:B1+:B2 4.再举一个例子: $ cat f2.txt set term off variable v_id number ; exec :v_id := 76191; set term on select /*+ &&1 */ object_name from t1 t where :v_id is null or t.object_id = :v_id; SCOTT@book01p> @ f2.txt '' OBJECT_NAME ------------------------------ DEPT SCOTT@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID a879btuz0wwwu, child number 0 ------------------------------------- select /*+ */ object_name from t1 t where :v_id is null or t.object_id = :v_id Plan hash value: 3617692013 --------------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 412 (100)| | |* 1 | TABLE ACCESS FULL| T1 | 3498 | 140K| 412 (1)| 00:00:01 | --------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 / "T"@"SEL$1" Peeked Binds (identified by position): -------------------------------------- 2 - (NUMBER, Primary=1) Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter((:V_ID IS NULL OR "T"."OBJECT_ID"=:V_ID)) 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 --//一样看不到绑定变量值。 SCOTT@book01p> @ 10053x a879btuz0wwwu 0 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3658_aa879btuz0wwwu.trc SCOTT@book01p> @ 10053y '' TRCLINE ------------------------------------------------------------------------------------------------------------------------ Final query after transformations:******* UNPARSED QUERY IS ******* SELECT "T"."OBJECT_NAME" "OBJECT_NAME" FROM "SCOTT"."T1" "T" WHERE :B1 IS NULL OR "T"."OBJECT_ID"=:B2 $ cat f2a.txt set term off variable v_id number ; exec :v_id := 76191; set term on select /*+ &&1 */ object_name from t1 t where t.object_id = :v_id or :v_id is null ; --//仅仅将2个or交换一下。 SCOTT@book01p> @ f2a.txt '' OBJECT_NAME ------------------------------ DEPT SCOTT@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID b4hqfmf3khhu8, child number 0 ------------------------------------- select /*+ */ object_name from t1 t where t.object_id = :v_id or :v_id is null Plan hash value: 3617692013 --------------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 412 (100)| | |* 1 | TABLE ACCESS FULL| T1 | 3498 | 140K| 412 (1)| 00:00:01 | --------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SEL$1 / "T"@"SEL$1" Peeked Binds (identified by position): -------------------------------------- 1 - (NUMBER): 76191 ~~~~~~~~~~~~~~~~~~~ Predicate Information (identified by operation id): --------------------------------------------------- 1 - filter((:V_ID IS NULL OR "T"."OBJECT_ID"=:V_ID)) --//这种情况就能看到绑定变量值。 SCOTT@book01p> @ 10053x b4hqfmf3khhu8 0 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3658_ab4hqfmf3khhu8.trc SCOTT@book01p> @ 10053y '' TRCLINE ------------------------------------------------------------------------------------------------------------------------ Final query after transformations:******* UNPARSED QUERY IS ******* SELECT "T"."OBJECT_NAME" "OBJECT_NAME" FROM "SCOTT"."T1" "T" WHERE "T"."OBJECT_ID"=:B1 OR :B2 IS NULL --//不知道是否可以这样理解,原来的一个变量:v_id 变成了2个变量 :B1 ,:B2. oracle仅仅传给了:B1,这样第2种写法就会peek。 --//而第1种写法查询条件是WHERE :B1 IS NULL OR "T"."OBJECT_ID"=:B2 不知道:b2的值,peeking失效。 --//加入提示or_expand看看: SCOTT@book01p> @ f2.txt 'or_expand' OBJECT_NAME ------------------------------ DEPT SCOTT@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID g45nraa1syn5f, child number 0 ------------------------------------- select /*+ or_expand */ object_name from t1 t where :v_id is null or t.object_id = :v_id Plan hash value: 2746111223 --------------------------------------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | --------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 413 (100)| | | 1 | VIEW | VW_ORE_1B35BA0F | 69951 | 4508K| 413 (1)| 00:00:01 | | 2 | UNION-ALL | | | | | | |* 3 | FILTER | | | | | | | 4 | TABLE ACCESS FULL | T1 | 69950 | 2459K| 411 (1)| 00:00:01 | |* 5 | FILTER | | | | | | | 6 | TABLE ACCESS BY INDEX ROWID| T1 | 1 | 41 | 2 (0)| 00:00:01 | |* 7 | INDEX UNIQUE SCAN | T1_PK | 1 | | 1 (0)| 00:00:01 | --------------------------------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SET$2A13AF86 / "VW_ORE_1B35BA0F"@"SEL$1B35BA0F" 2 - SET$2A13AF86 3 - SET$2A13AF86_1 4 - SET$2A13AF86_1 / "T"@"SET$2A13AF86_1" 5 - SET$2A13AF86_2 6 - SET$2A13AF86_2 / "T"@"SET$2A13AF86_2" 7 - SET$2A13AF86_2 / "T"@"SET$2A13AF86_2" Peeked Binds (identified by position): -------------------------------------- 2 - (NUMBER, Primary=1) Predicate Information (identified by operation id): --------------------------------------------------- 3 - filter(:V_ID IS NULL) 5 - filter(LNNVL(:V_ID IS NULL)) 7 - access("T"."OBJECT_ID"=:V_ID) Hint Report (identified by operation id / Query Block Name / Object Alias): Total hints for statement: 1 --------------------------------------------------------------------------- 5 - SET$2A13AF86_2 - or_expand --//一样看不见绑定变量值。 SCOTT@book01p> @ 10053x g45nraa1syn5f 0 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3658_ag45nraa1syn5f.trc SCOTT@book01p> @ 10053y '' TRCLINE ------------------------------------------------------------------------------------------------------------------------ Final query after transformations:******* UNPARSED QUERY IS ******* SELECT "VW_ORE_1B35BA0F"."ITEM_1" "OBJECT_NAME" FROM ( (SELECT "T"."OBJECT_NAME" "ITEM_1" FROM "SCOTT"."T1" "T" WHERE : B1 IS NULL) UNION ALL (SELECT "T"."OBJECT_NAME" "ITEM_1" FROM "SCOTT"."T1" "T" WHERE "T"."OBJECT_ID"=:B2 AND LNNVL(:B3 IS NULL))) "VW_ORE_1B35BA0F" --//展开2个union all。 SCOTT@book01p> @ f2a.txt 'or_expand' OBJECT_NAME ------------------------------ DEPT SCOTT@book01p> @ dpc '' '' '' PLAN_TABLE_OUTPUT ------------------------------------- SQL_ID gmx4vmyrmzs8s, child number 0 ------------------------------------- select /*+ or_expand */ object_name from t1 t where t.object_id = :v_id or :v_id is null Plan hash value: 4114514004 -------------------------------------------------------------------------------------------------- | Id | Operation | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time | -------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 414 (100)| | | 1 | VIEW | VW_ORE_1B35BA0F | 69950 | 4508K| 414 (1)| 00:00:01 | | 2 | UNION-ALL | | | | | | | 3 | TABLE ACCESS BY INDEX ROWID| T1 | 1 | 41 | 2 (0)| 00:00:01 | |* 4 | INDEX UNIQUE SCAN | T1_PK | 1 | | 1 (0)| 00:00:01 | |* 5 | FILTER | | | | | | |* 6 | TABLE ACCESS FULL | T1 | 69949 | 2800K| 412 (1)| 00:00:01 | -------------------------------------------------------------------------------------------------- Query Block Name / Object Alias (identified by operation id): ------------------------------------------------------------- 1 - SET$2A13AF86 / "VW_ORE_1B35BA0F"@"SEL$1B35BA0F" 2 - SET$2A13AF86 3 - SET$2A13AF86_1 / "T"@"SET$2A13AF86_1" 4 - SET$2A13AF86_1 / "T"@"SET$2A13AF86_1" 5 - SET$2A13AF86_2 6 - SET$2A13AF86_2 / "T"@"SET$2A13AF86_2" Peeked Binds (identified by position): -------------------------------------- 1 - (NUMBER): 76191 Predicate Information (identified by operation id): --------------------------------------------------- 4 - access("T"."OBJECT_ID"=:V_ID) 5 - filter(:V_ID IS NULL) 6 - filter(LNNVL("T"."OBJECT_ID"=:V_ID)) Hint Report (identified by operation id / Query Block Name / Object Alias): Total hints for statement: 1 --------------------------------------------------------------------------- 5 - SET$2A13AF86_2 - or_expand --//这次可以看到。 SCOTT@book01p> @ 10053x gmx4vmyrmzs8s 0 /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_3658_agmx4vmyrmzs8s.trc SCOTT@book01p> @ 10053y '' TRCLINE ------------------------------------------------------------------------------------------------------------------------ Final query after transformations:******* UNPARSED QUERY IS ******* SELECT "VW_ORE_1B35BA0F"."ITEM_1" "OBJECT_NAME" FROM ( (SELECT "T"."OBJECT_NAME" "ITEM_1" FROM "SCOTT"."T1" "T" WHERE " T"."OBJECT_ID"=:B1) UNION ALL (SELECT "T"."OBJECT_NAME" "ITEM_1" FROM "SCOTT"."T1" "T" WHERE :B2 IS NULL AND LNNVL("T". "OBJECT_ID"=:B3))) "VW_ORE_1B35BA0F" 5.小结: --//我以前总以为出现查询转换就有可能出现这类情况。实际上一些情况相对复杂,具体的细节还是很不清楚。 --//总之以后做sql优化,要注意这个细节,查看执行计划的Peeked Binds (identified by position)部分。 6.附上测试使用sql语句代码: $ cat 10053x.sql set term off execute dbms_sqldiag.dump_trace(p_sql_id=>'&1',p_child_number=>&2,p_component=>'Compiler',p_file_id=>'a'||'&&1'); set term on set head off @ t set head on define 1=&trc $ cat 10053y.sql -- Copyright 2023 lfree. All rights reserved. -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions. ------------------------------------------------------------------------------------------------------------ -- -- File name: 10053y.sql -- Purpose: display Final query after transformations -- -- Author: lfree -- -- Usage: -- @ 10053y <trc_file> -- ------------------------------------------------------------------------------------------------------------- SET TERM OFF COLUMN trc_file NEW_VALUE v_trc_file --DEFINE trc_file = &1 SELECT NVL('&1','&TRC') trc_file FROM DUAL ; SELECT SUBSTR ('&v_trc_file', INSTR ('&v_trc_file', '/', -1) + 1) trc_file FROM DUAL; SET TERM ON DEFINE trc_file = &v_trc_file --DEFINE trc_file = &1 --COL trace_filename FOR A45 --COL adr_home FOR A45 --SELECT trace_filename, to_char(change_time, 'dd-mm-yyyy hh24:mi:ss') AS change_time, to_char(modify_time, 'dd-mm-yyyy hh24:mi:ss') AS modify_time, adr_home, con_id --FROM gv$diag_trace_file --WHERE lower(trace_filename) LIKE lower('%&v_trc_file%') --ORDER BY modify_time; column trcline format a120 SELECT trcline FROM gv$diag_trace_file_contents MATCH_RECOGNIZE ( PARTITION BY trace_filename ORDER BY line_number MEASURES payload AS trcline ALL ROWS PER MATCH PATTERN (a | b nc * | c | f n) DEFINE a AS (payload LIKE 'qksptfSQM_GetTxt(): Anonymous Block%') ,b AS (payload LIKE 'qksptfSQM_GetTxt(): Macro Text%') ,nc AS (payload NOT LIKE 'qksptfSQM_Template(): Template Text%') ,c AS (payload LIKE 'qksptfSQM_Template(): Template Text%') ,f AS (payload LIKE 'Final query after%') ) x WHERE trace_filename = '&v_trc_file'; $ cat dpc.sql -- Copyright 2023 lfree. All rights reserved. -- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms and conditions. -------------------------------------------------------------------------------- -- -- File name: dpc.sql -- Purpose: display sql of plan -- -- Author: lfree -- -- Usage: -- @ dpc <sql_id> <format> <child_number> -- argument1=sql_id argument2=format argument3=child_number -------------------------------------------------------------------------------- --set term off --column 3 new_value 3 --select null "3" from dual where 1=2; --set term on --variable a varchar2(10) --exec :a := nvl ('&3',null) -- argument1=sql_id argument2=format argument3=child_number set verify off --select * from table(dbms_xplan.display_cursor(nvl('&1',null),null,'all allstats last peeked_binds cost partition note -projection -outline &2')); select * from table(dbms_xplan.display_cursor(nvl('&1',null),nvl('&3',null),'all allstats last peeked_binds cost partition note -projection -outline &2')); def 3=''
[20250807]绑定变量peeking的问题.txt
来源:这里教程网
时间:2026-03-03 22:34:38
作者:
编辑推荐:
- [20250807]绑定变量peeking的问题.txt03-03
- [20250812]一些cdb开头的视图存在隐藏列.txt03-03
- 第46期 DataPump Export (EXPDP) Fails With Errors ORA-31693 ORA-31617 ORA-1950503-03
- 苹果ios签名ipa文件平台靠谱吗,我们该如何选择可靠的平台03-03
- 使用什么命令能删除 FOREIGN ARCHIVED LOG03-03
- OraInventory目录不存在处理方法03-03
- 苹果app安卓apk应用App内用微信授权登录游戏时会显示登录失败签名不一致怎么解决03-03
- [20250727]关于访问系统视图v$sqlXXXX的问题.txt03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 使用什么命令能删除 FOREIGN ARCHIVED LOG
使用什么命令能删除 FOREIGN ARCHIVED LOG
26-03-03 - 记一次Oracle数据库归档日志暴增故障案例分析
记一次Oracle数据库归档日志暴增故障案例分析
26-03-03 - 外连接嵌套循环为何无法更改驱动表
外连接嵌套循环为何无法更改驱动表
26-03-03 - Oracle AWR夺命33问,你能过几关?
Oracle AWR夺命33问,你能过几关?
26-03-03 - 东北已经装上空调,欧洲人还在“装”?
东北已经装上空调,欧洲人还在“装”?
26-03-03 - OGG 同步奇案:医疗数据 “消失” 之谜
OGG 同步奇案:医疗数据 “消失” 之谜
26-03-03 - 已知100多个数据库CVE漏洞编号,如何快速查询这些漏洞影响的数据库版本等...
- 老铺黄金逆势爆发,是一场高端消费价值观的重塑
老铺黄金逆势爆发,是一场高端消费价值观的重塑
26-03-03 - 数据库管理-第352期 从需求看懂Oracle RAC多租户环境的Service(20250729)
- 三器合一,根治SQL痼疾,降低80%性能事故!
三器合一,根治SQL痼疾,降低80%性能事故!
26-03-03
