[20161029]無法窺視在PLSQL.txt
[20161029]無法窺視在PLSQL.txt
--測試使用PL/SQL無法窺視繫結變數的情況:
--例子連結:
1.測試環境:
SCOTT@test01p> @ ver1
PORT_STRING VERSION BANNER CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0 12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
create table t ( x varchar2(10), y char(100));
insert into t select 'a', rownum from dual;
insert into t select 'b', rownum from dual connect by level <= 100000;
commit;
create index ix on t ( x ) ;
exec dbms_stats.gather_table_stats('','T',method_Opt=>'for all columns size 5');
--drop context blah;
create context blah using my_package;
create or replace PACKAGE MY_PACKAGE AS
procedure my_proc(p_val varchar2);
function get_sys_context return varchar2;
function get_variable return varchar2;
END MY_PACKAGE;
create or replace package body MY_PACKAGE AS
my_var varchar2(10);
procedure my_proc(p_val varchar2) is
begin
my_var := p_val;
sys.dbms_session.set_context('BLAH','ATTRIB',p_val);
end my_proc;
function get_sys_context return varchar2 is
begin
return sys_context('BLAH','ATTRIB');
end get_sys_context;
function get_variable return varchar2 is
begin
return my_var;
end get_variable;
end MY_PACKAGE;
2.Now the real testcase starts:
exec my_package.my_proc('a');
select my_package.get_sys_context from dual;
SCOTT@test01p> select my_package.get_sys_context c10 from dual;
C10
----------
a
select my_package.get_variable from dual;
SCOTT@test01p> select my_package.get_variable c10 from dual;
C10
----------
a
SCOTT@test01p> select /*+ gather_plan_statistics */ count(y) from t where x = my_package.get_sys_context;
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 4w5kfk85560fd, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ count(y) from t where x =
my_package.get_sys_context
Plan hash value: 2966233522
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 418 (100)| | 1 |00:00:00.67 | 1509 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.67 | 1509 |
|* 2 | TABLE ACCESS FULL| T | 1 | 50001 | 5029K| 418 (3)| 00:00:01 | 1 |00:00:00.67 | 1509 |
---------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("X"="MY_PACKAGE"."GET_SYS_CONTEXT"())
SCOTT@test01p> select /*+ gather_plan_statistics */ count(y) from t where x = my_package.get_variable;
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 4sfj3d5djwbqg, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ count(y) from t where x =
my_package.get_variable
Plan hash value: 2966233522
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 418 (100)| | 1 |00:00:00.17 | 1509 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.17 | 1509 |
|* 2 | TABLE ACCESS FULL| T | 1 | 50001 | 5029K| 418 (3)| 00:00:01 | 1 |00:00:00.17 | 1509 |
---------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("X"="MY_PACKAGE"."GET_VARIABLE"())
CREATE OR REPLACE FUNCTION RETURN_BIND
(
BIND_IN IN VARCHAR2
) RETURN VARCHAR2 AS
BEGIN
RETURN BIND_IN;
END RETURN_BIND;
variable b1 varchar2(10)
exec :b1 := 'a';
SCOTT@test01p> select RETURN_BIND(:b1) from dual;
RETURN_BIND(:B1)
----------------
a
SCOTT@test01p> select /*+ gather_plan_statistics */ count(y) from t where x = RETURN_BIND(:b1);
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 31wcf0q2urgmh, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ count(y) from t where x =
RETURN_BIND(:b1)
Plan hash value: 2966233522
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 418 (100)| | 1 |00:00:00.24 | 1509 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.24 | 1509 |
|* 2 | TABLE ACCESS FULL| T | 1 | 50001 | 5029K| 418 (3)| 00:00:01 | 1 |00:00:00.24 | 1509 |
---------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("X"="RETURN_BIND"(:B1))
--//從以上測試可以看出無法窺視PL/SQL包以及函式返回的值,這樣執行計劃選擇的是全表掃描.而直接使用引數值:
variable b1 varchar2(10)
exec :b1 := 'a';
SCOTT@test01p> select /*+ gather_plan_statistics */ count(y) from t where x = :b1;
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 3s46kmk2u542g, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ count(y) from t where x = :b1
Plan hash value: 2143077847
---------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 2 (100)| | 1 |00:00:00.01 | 3 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.01 | 3 |
| 2 | TABLE ACCESS BY INDEX ROWID BATCHED| T | 1 | 1 | 103 | 2 (0)| 00:00:01 | 1 |00:00:00.01 | 3 |
|* 3 | INDEX RANGE SCAN | IX | 1 | 1 | | 1 (0)| 00:00:01 | 1 |00:00:00.01 | 2 |
---------------------------------------------------------------------------------------------------------------------------------------
--可以很好地使用索引.
3.突然想起可以使用ASSOCIATE STATISTICS關聯統計,測試看看.
--使用ASSOCIATE STATISTICS 看看:
SCOTT@test01p> ASSOCIATE STATISTICS WITH FUNCTIONS RETURN_BIND DEFAULT SELECTIVITY 1, DEFAULT COST (312722, 5, 0);
Statistics associated.
SCOTT@test01p> Select /*+ gather_plan_statistics */ count(y) from t where x = RETURN_BIND(:b1);
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 15vu5j6v0n9nh, child number 0
-------------------------------------
Select /*+ gather_plan_statistics */ count(y) from t where x =
RETURN_BIND(:b1)
Plan hash value: 2143077847
---------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 839 (100)| | 1 |00:00:00.01 | 3 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.01 | 3 |
| 2 | TABLE ACCESS BY INDEX ROWID BATCHED| T | 1 | 50001 | 5029K| 839 (1)| 00:00:01 | 1 |00:00:00.01 | 3 |
|* 3 | INDEX RANGE SCAN | IX | 1 | 50001 | | 91 (0)| 00:00:01 | 1 |00:00:00.01 | 2 |
---------------------------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
3 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("X"="RETURN_BIND"(:B1))
--不過這樣我修改exec :b1 := 'b';執行計劃依舊使用索引,不會改變,大家可以自己測試.還很奇怪的地方,查詢檢視無顯示.
SCOTT@test01p> select * from USER_USTATS ;
no rows selected
--取消關聯.
SCOTT@test01p> DISASSOCIATE STATISTICS from FUNCTIONS RETURN_BIND ;
Statistics disassociated.
SCOTT@test01p> SElect /*+ gather_plan_statistics */ count(y) from t where x = RETURN_BIND(:b1);
COUNT(Y)
----------
1
--注意我修改sql語句Select 變成了SElect,這樣要重新分析,不然還是使用原來的執行計劃使用索引.
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID g5ttjj4jpfxxr, child number 0
-------------------------------------
SElect /*+ gather_plan_statistics */ count(y) from t where x =
RETURN_BIND(:b1)
Plan hash value: 2966233522
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 418 (100)| | 1 |00:00:00.23 | 1509 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.23 | 1509 |
|* 2 | TABLE ACCESS FULL| T | 1 | 50001 | 5029K| 418 (3)| 00:00:01 | 1 |00:00:00.23 | 1509 |
---------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("X"="RETURN_BIND"(:B1))
--又回到了原來的全表掃描.
--測試使用PL/SQL無法窺視繫結變數的情況:
--例子連結:
1.測試環境:
SCOTT@test01p> @ ver1
PORT_STRING VERSION BANNER CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0 12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
create table t ( x varchar2(10), y char(100));
insert into t select 'a', rownum from dual;
insert into t select 'b', rownum from dual connect by level <= 100000;
commit;
create index ix on t ( x ) ;
exec dbms_stats.gather_table_stats('','T',method_Opt=>'for all columns size 5');
--drop context blah;
create context blah using my_package;
create or replace PACKAGE MY_PACKAGE AS
procedure my_proc(p_val varchar2);
function get_sys_context return varchar2;
function get_variable return varchar2;
END MY_PACKAGE;
create or replace package body MY_PACKAGE AS
my_var varchar2(10);
procedure my_proc(p_val varchar2) is
begin
my_var := p_val;
sys.dbms_session.set_context('BLAH','ATTRIB',p_val);
end my_proc;
function get_sys_context return varchar2 is
begin
return sys_context('BLAH','ATTRIB');
end get_sys_context;
function get_variable return varchar2 is
begin
return my_var;
end get_variable;
end MY_PACKAGE;
2.Now the real testcase starts:
exec my_package.my_proc('a');
select my_package.get_sys_context from dual;
SCOTT@test01p> select my_package.get_sys_context c10 from dual;
C10
----------
a
select my_package.get_variable from dual;
SCOTT@test01p> select my_package.get_variable c10 from dual;
C10
----------
a
SCOTT@test01p> select /*+ gather_plan_statistics */ count(y) from t where x = my_package.get_sys_context;
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 4w5kfk85560fd, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ count(y) from t where x =
my_package.get_sys_context
Plan hash value: 2966233522
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 418 (100)| | 1 |00:00:00.67 | 1509 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.67 | 1509 |
|* 2 | TABLE ACCESS FULL| T | 1 | 50001 | 5029K| 418 (3)| 00:00:01 | 1 |00:00:00.67 | 1509 |
---------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("X"="MY_PACKAGE"."GET_SYS_CONTEXT"())
SCOTT@test01p> select /*+ gather_plan_statistics */ count(y) from t where x = my_package.get_variable;
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 4sfj3d5djwbqg, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ count(y) from t where x =
my_package.get_variable
Plan hash value: 2966233522
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 418 (100)| | 1 |00:00:00.17 | 1509 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.17 | 1509 |
|* 2 | TABLE ACCESS FULL| T | 1 | 50001 | 5029K| 418 (3)| 00:00:01 | 1 |00:00:00.17 | 1509 |
---------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("X"="MY_PACKAGE"."GET_VARIABLE"())
CREATE OR REPLACE FUNCTION RETURN_BIND
(
BIND_IN IN VARCHAR2
) RETURN VARCHAR2 AS
BEGIN
RETURN BIND_IN;
END RETURN_BIND;
variable b1 varchar2(10)
exec :b1 := 'a';
SCOTT@test01p> select RETURN_BIND(:b1) from dual;
RETURN_BIND(:B1)
----------------
a
SCOTT@test01p> select /*+ gather_plan_statistics */ count(y) from t where x = RETURN_BIND(:b1);
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 31wcf0q2urgmh, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ count(y) from t where x =
RETURN_BIND(:b1)
Plan hash value: 2966233522
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 418 (100)| | 1 |00:00:00.24 | 1509 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.24 | 1509 |
|* 2 | TABLE ACCESS FULL| T | 1 | 50001 | 5029K| 418 (3)| 00:00:01 | 1 |00:00:00.24 | 1509 |
---------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("X"="RETURN_BIND"(:B1))
--//從以上測試可以看出無法窺視PL/SQL包以及函式返回的值,這樣執行計劃選擇的是全表掃描.而直接使用引數值:
variable b1 varchar2(10)
exec :b1 := 'a';
SCOTT@test01p> select /*+ gather_plan_statistics */ count(y) from t where x = :b1;
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 3s46kmk2u542g, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ count(y) from t where x = :b1
Plan hash value: 2143077847
---------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 2 (100)| | 1 |00:00:00.01 | 3 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.01 | 3 |
| 2 | TABLE ACCESS BY INDEX ROWID BATCHED| T | 1 | 1 | 103 | 2 (0)| 00:00:01 | 1 |00:00:00.01 | 3 |
|* 3 | INDEX RANGE SCAN | IX | 1 | 1 | | 1 (0)| 00:00:01 | 1 |00:00:00.01 | 2 |
---------------------------------------------------------------------------------------------------------------------------------------
--可以很好地使用索引.
3.突然想起可以使用ASSOCIATE STATISTICS關聯統計,測試看看.
--使用ASSOCIATE STATISTICS 看看:
SCOTT@test01p> ASSOCIATE STATISTICS WITH FUNCTIONS RETURN_BIND DEFAULT SELECTIVITY 1, DEFAULT COST (312722, 5, 0);
Statistics associated.
SCOTT@test01p> Select /*+ gather_plan_statistics */ count(y) from t where x = RETURN_BIND(:b1);
COUNT(Y)
----------
1
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID 15vu5j6v0n9nh, child number 0
-------------------------------------
Select /*+ gather_plan_statistics */ count(y) from t where x =
RETURN_BIND(:b1)
Plan hash value: 2143077847
---------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 839 (100)| | 1 |00:00:00.01 | 3 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.01 | 3 |
| 2 | TABLE ACCESS BY INDEX ROWID BATCHED| T | 1 | 50001 | 5029K| 839 (1)| 00:00:01 | 1 |00:00:00.01 | 3 |
|* 3 | INDEX RANGE SCAN | IX | 1 | 50001 | | 91 (0)| 00:00:01 | 1 |00:00:00.01 | 2 |
---------------------------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
3 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("X"="RETURN_BIND"(:B1))
--不過這樣我修改exec :b1 := 'b';執行計劃依舊使用索引,不會改變,大家可以自己測試.還很奇怪的地方,查詢檢視無顯示.
SCOTT@test01p> select * from USER_USTATS ;
no rows selected
--取消關聯.
SCOTT@test01p> DISASSOCIATE STATISTICS from FUNCTIONS RETURN_BIND ;
Statistics disassociated.
SCOTT@test01p> SElect /*+ gather_plan_statistics */ count(y) from t where x = RETURN_BIND(:b1);
COUNT(Y)
----------
1
--注意我修改sql語句Select 變成了SElect,這樣要重新分析,不然還是使用原來的執行計劃使用索引.
SCOTT@test01p> @ dpc '' ''
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID g5ttjj4jpfxxr, child number 0
-------------------------------------
SElect /*+ gather_plan_statistics */ count(y) from t where x =
RETURN_BIND(:b1)
Plan hash value: 2966233522
---------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers |
---------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 418 (100)| | 1 |00:00:00.23 | 1509 |
| 1 | SORT AGGREGATE | | 1 | 1 | 103 | | | 1 |00:00:00.23 | 1509 |
|* 2 | TABLE ACCESS FULL| T | 1 | 50001 | 5029K| 418 (3)| 00:00:01 | 1 |00:00:00.23 | 1509 |
---------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T@SEL$1
Predicate Information (identified by operation id):
---------------------------------------------------
2 - filter("X"="RETURN_BIND"(:B1))
--又回到了原來的全表掃描.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2127341/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- hacmp無法檢視clstatACM
- 關於共享SQL——窺視解析SQL
- 在WebWorker中無法使用ImageWeb
- 物化檢視job無法執行
- oracle繫結變數窺視(zt)Oracle變數
- 你的智慧汽車正在窺視你!
- 繫結變數窺視測試案例變數
- 在 Microsoft Outlook 中無法開啟附件ROS
- 無法在Eclipse中啟動JbossEclipse
- Live mesh 在xp無法安裝的解決辦法
- 無法在XP系統的檔案視窗中實現後退怎麼辦?
- HouseMenu在DNN4.6中無法正常工作。DNN
- 在WEPAPI介面無法查詢物料分組API
- 在 Ubuntu 環境下 Qt Creator 無法使用搜狗輸入法UbuntuQT
- 資料庫無法建立資料庫檢視資料庫
- 修復無法檢視隱藏檔案方法
- Oracle 變數繫結與變數窺視合集Oracle變數
- oracle bind value peeking繫結變數窺視Oracle變數
- 音訊和影片無法在PowerPoint中播放音訊
- 在linux中無法啟動mysqld 服務LinuxMySql
- Win10系統無法錄製遊戲視訊提示無法錄製內容如何解決Win10遊戲
- 智慧電視無法正常開機的解決方法
- 在RAC建立資料庫報無法建立“/etc/oratab"解決辦法資料庫
- Win10系統flash無法播放視訊怎麼辦 Win10系統flash無法使用Win10
- 轉METALINK一篇文章(變數窺視)變數
- 遊戲世界的經濟體系研究分析窺視(轉)遊戲
- Linux下VMware在更新完核心無法啟動Linux
- Visualbox在UEFI模式下無法正常引導模式
- github在開啟雙因素認證後無法pushGithub
- 物化檢視日誌無法正常清除的解決方法
- PL2303在win10無法使用的解決辦法Win10
- 更新win10 1903後事件檢視器無法使用:MMC無法建立管理單元怎麼辦Win10事件
- win10任務檢視記錄無法刪除的解決辦法Win10
- Google:窺視消費者的未來2020Go
- 【原創】Oracle 變數繫結與變數窺視合集Oracle變數
- oracle 11g 變數窺視和acs最佳實踐Oracle變數
- hibernate在JPA規範中在控制檯無法出現SQL語句SQL
- 無需程式碼!pd16虛擬機器在 big sur 下無法聯網解決辦法虛擬機