使用alter session set current_schema=scott用explain plan for檢視scott使用者的sql
某Q友問題
explain沒有思路,除了切換到sql的使用者下面我知道使用者也不知道密碼
這也切不過去啊
結論
1,學會檢視官方手冊,前提就是要多看多思考,其碼熟悉官方手冊的知識結構構成,方可針對性查閱資料2, alter session set current_schema可以切換到對應指定的使用者,相當於在指定使用者進行檢視相關操作
測試
SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
SQL> show user
USER is "SCOTT"
SQL> explain plan for select count(a) from t_plan;
Explained.
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, NULL, 'ADVANCED -PROJECTION'));
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 4286448300
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 13 | 3 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 13 | | |
| 2 | TABLE ACCESS FULL| T_PLAN | 1 | 13 | 3 (0)| 00:00:01 |
-----------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T_PLAN@SEL$1
Outline Data
-------------
/*+
BEGIN_OUTLINE_DATA
FULL(@"SEL$1" "T_PLAN"@"SEL$1")
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
OUTLINE_LEAF(@"SEL$1")
ALL_ROWS
DB_VERSION('11.2.0.1')
OPTIMIZER_FEATURES_ENABLE('11.2.0.1')
IGNORE_OPTIM_EMBEDDED_HINTS
END_OUTLINE_DATA
*/
Note
-----
- dynamic sampling used for this statement (level=2)
33 rows selected.
SQL>
----現在我們回到開頭的Q友問題,無非就是想讓在SYS使用者這個會話可以檢視SCOTT使用者的建立的sql執行計劃,所以我想肯定是到官方手冊 Oracle? Database SQL Language Reference
去找,找哪塊呢,是和會話相關,那麼只能是alter session,經查閱發現
alter session set current_schema可以達到這個目標,現摘錄相關資訊於此,供大家參考:
Syntax:
CURRENT_SCHEMA = schema
The CURRENT_SCHEMA parameter changes the current schema of the session to the specified schema. Subsequent unqualified references to schema objects during the session will resolve to objects in the specified schema. The setting persists for the duration of the session or until you issue another ALTER SESSION SET CURRENT_SCHEMA statement.
This setting offers a convenient way to perform operations on objects in a schema other than that of the current user without having to qualify the objects with the schema name. This setting changes the current schema, but it does not change the session user or the current user, nor does it give the session user any additional system or object privileges for the session.
SQL> show user
USER is "SYS"
SQL> explain plan for select count(a) from t_plan;
explain plan for select count(a) from t_plan
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> alter session set current_schema=scott;
Session altered.
SQL> explain plan for select count(a) from t_plan;
Explained.
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, NULL, 'ADVANCED -PROJECTION'));
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 4286448300
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 13 | 3 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 13 | | |
| 2 | TABLE ACCESS FULL| T_PLAN | 1 | 13 | 3 (0)| 00:00:01 |
-----------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------
1 - SEL$1
2 - SEL$1 / T_PLAN@SEL$1
Outline Data
-------------
/*+
BEGIN_OUTLINE_DATA
FULL(@"SEL$1" "T_PLAN"@"SEL$1")
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
OUTLINE_LEAF(@"SEL$1")
ALL_ROWS
DB_VERSION('11.2.0.1')
OPTIMIZER_FEATURES_ENABLE('11.2.0.1')
IGNORE_OPTIM_EMBEDDED_HINTS
END_OUTLINE_DATA
*/
Note
-----
- dynamic sampling used for this statement (level=2)
33 rows selected.
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1872040/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫scott使用者建立view檢視許可權Oracle資料庫View
- [20181006]建立測試使用者scott.txt
- 恢復oracle的scott使用者初始狀態操作Oracle
- Oracle通過scott使用者中的emp練習單表操作Oracle
- Oracle-解鎖scott賬戶Oracle
- 【Oracle】scott使用者下表結構、初始化資料和建表語句Oracle
- 【SQL_PLAN】Oracle 透過檢視sql_plan 格式化執行計劃SQLOracle
- 隱於網路爭論之下,Scott眼中的Alec
- 小菜前端是如何練成的 - Scott 親筆信前端
- Oracle執行計劃Explain Plan 如何使用OracleAI
- Scott Brinker:2019全球營銷技術全景圖
- 函式式DDD架構入門 - SCOTT WLASCHIN函式架構
- V$ACTIVE_SESSION_HISTORY檢視的使用Session
- alter system set event和set events的區別
- alter table set unused column
- 育碧任命Katie Scott為研發戰略副總裁
- SQL__ALTERSQL
- 檢視瀏覽器請求的session 瀏覽器怎麼檢視session瀏覽器Session
- 用 Explain 命令分析 MySQL 的 SQL 執行AIMySql
- centos7新增普通使用者用於檢視日誌檔案及檢視centos使用者CentOS
- 檢視一個正在執行的sql的執行計劃(explain for connection processlist_id)SQLAI
- Oracle檢視已被使用的open_cursors&session_cached_cursorsOracleSession
- 2.7.6.2.1 ALTER SYSTEM SET語句中的SCOPE子句
- 瀏覽器檢視Session瀏覽器Session
- 基於函數語言程式設計的領域驅動設計 - Scott Wlaschin函數程式設計
- SQL Server建立使用者只能訪問指定資料庫和檢視SQLServer資料庫
- SQL PLAN Management的測試SQL
- sql_plan_baselineSQL
- 使用set autotrace on 檢視資料庫執行計劃資料庫
- 檢視oracle資料庫的連線數以及使用者檢視Oracle資料庫
- session檢視中wait_timeSessionAI
- MySQL 給使用者新增 ALTER VIEW 的許可權MySqlView
- 第一屆搞管理|Scott - 如何在中小前端團隊中完成管理轉型前端
- Scott Galloway:疫情期間美國線上零售比例增長至28%
- Session store not set on request.Session
- Laravel - Session store not set on requestLaravelSession
- 如何使用SQL查詢檢視,Postico使用技巧分享~SQL
- [20211019]V$DETACHED_SESSION檢視.txtSession
- Linux 系統檢視使用者組Linux