SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
測試環境:OEL6.5+Oracle 11g R2
在進行執行計劃測試的時候,遇到一個小問題。
在用普通使用者執行下面這條命令的時候,普通使用者名稱為hhu,已經賦予了create session和resource許可權。在執行set autotrace on的時候,出現瞭如下錯誤:
SYS@ORCL> create user hhu identified by hhu;
User created.
SYS@ORCL> grant create session,resource to hhu;
Grant succeeded.
SYS@ORCL> conn hhu/hhu
Connected.
HHU@ORCL> create table t as select * from all_objects;
Table created.
HHU@ORCL> create index idx_object_id on t(object_id);
Index created.
HHU@ORCL> set autotrace on
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report
第一次遇到這樣的錯誤(可見還是菜鳥),目前還沒財力購買一個mos帳號,於是乎去google了一下(官方文件應該也有解釋,但是第一次遇到這樣的問題,效率上不行),得到如下解釋:
要執行autotrace命令使用者必須要擁有PLUSTRACE角色,而這個角色預設賦予給使用者的。使用sys使用者執行$ORACLE_HOME/sqlplus/admin/plustrce.sql可以建立PLUSTRACE角色。
plustrce.sql這個指令碼會建立PLUSTRACE角色並賦予查詢v$sesstat,v$statnme以及v$mystat的許可權。PLUSTRACE被以with admin option方式授權給DBA角色。
對於9i和更早期的資料庫版本,可能還需要執行$ORACLE_HOME/rdbms/admin/utlxplan.sql指令碼來建立plan table。而在10g以及更高的版本中,PLAN_TBALE是預先存在的。
也就是說,錯誤原因是我所使用的普通使用者缺少一個能執行autotrace命令的相關角色,那麼我只需要建立好這個角色即可,而建立這個角色只需要執行
$ORACLE_HOME/sqlplus/admin/plustrce.sql即可。
執行plustrce.sql指令碼,得到的結果如下:
執行完$ORACLE_HOME/sqlplus/admin/plustrce.sql這個指令碼後,我們需要將PLUSTRACE角色賦予給hhu使用者。
HHU@ORCL> conn / as sysdba
Connected.
SYS@ORCL> grant plustrace to hhu;
Grant succeeded.
SYS@ORCL> conn hhu/hhu
Connected.
HHU@ORCL> set autotrace on
HHU@ORCL> set linesize 1000
HHU@ORCL>
下面是$ORACLE_HOME/sqlplus/admin/plustrce.sql這個指令碼的完整內容(實際上看上面這個指令碼的執行過程也能分析出來):
[oracle@hhu ~]$ cat $ORACLE_HOME/sqlplus/admin/plustrce.sql
--
-- Copyright (c) Oracle Corporation 1995, 2002. All Rights Reserved.
--
-- NAME
-- plustrce.sql
--
-- DESCRIPTION
-- Creates a role with access to Dynamic Performance Tables
-- for the SQL*Plus SET AUTOTRACE ... STATISTICS command.
-- After this script has been run, each user requiring access to
-- the AUTOTRACE feature should be granted the PLUSTRACE role by
-- the DBA.
--
-- USAGE
-- sqlplus "sys/knl_test7 as sysdba" @plustrce
--
-- Catalog.sql must have been run before this file is run.
-- This file must be run while connected to a DBA schema.
set echo on
drop role plustrace;
create role plustrace;
grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$mystat to plustrace;
grant plustrace to dba with admin option;
set echo off
可以發現,其實就是幾條簡單的建立角色並賦予相關許可權的命令的組合,如果知道整個指令碼內容,PLUSTRACE這個角色名是可以任意取的;在最後的命令中使用with admin option,說明該角色可被級聯授予。
@huan
在進行執行計劃測試的時候,遇到一個小問題。
在用普通使用者執行下面這條命令的時候,普通使用者名稱為hhu,已經賦予了create session和resource許可權。在執行set autotrace on的時候,出現瞭如下錯誤:
SYS@ORCL> create user hhu identified by hhu;
User created.
SYS@ORCL> grant create session,resource to hhu;
Grant succeeded.
SYS@ORCL> conn hhu/hhu
Connected.
HHU@ORCL> create table t as select * from all_objects;
Table created.
HHU@ORCL> create index idx_object_id on t(object_id);
Index created.
HHU@ORCL> set autotrace on
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled
SP2-0611: Error enabling STATISTICS report
第一次遇到這樣的錯誤(可見還是菜鳥),目前還沒財力購買一個mos帳號,於是乎去google了一下(官方文件應該也有解釋,但是第一次遇到這樣的問題,效率上不行),得到如下解釋:
要執行autotrace命令使用者必須要擁有PLUSTRACE角色,而這個角色預設賦予給使用者的。使用sys使用者執行$ORACLE_HOME/sqlplus/admin/plustrce.sql可以建立PLUSTRACE角色。
plustrce.sql這個指令碼會建立PLUSTRACE角色並賦予查詢v$sesstat,v$statnme以及v$mystat的許可權。PLUSTRACE被以with admin option方式授權給DBA角色。
對於9i和更早期的資料庫版本,可能還需要執行$ORACLE_HOME/rdbms/admin/utlxplan.sql指令碼來建立plan table。而在10g以及更高的版本中,PLAN_TBALE是預先存在的。
也就是說,錯誤原因是我所使用的普通使用者缺少一個能執行autotrace命令的相關角色,那麼我只需要建立好這個角色即可,而建立這個角色只需要執行
$ORACLE_HOME/sqlplus/admin/plustrce.sql即可。
執行plustrce.sql指令碼,得到的結果如下:
點選(此處)摺疊或開啟
-
SYS@ORCL>@$ORACLE_HOME/sqlplus/admin/plustrce.sql;
-
SYS@ORCL>
-
SYS@ORCL> drop role plustrace;
-
drop role plustrace
-
*
-
ERROR at line 1:
-
ORA-01919: role 'PLUSTRACE' does not exist
-
-
-
SYS@ORCL> create role plustrace;
-
-
Role created.
-
-
SYS@ORCL>
-
SYS@ORCL> grant select on v_$sesstat to plustrace;
-
-
Grant succeeded.
-
-
SYS@ORCL> grant select on v_$statname to plustrace;
-
-
Grant succeeded.
-
-
SYS@ORCL> grant select on v_$mystat to plustrace;
-
-
Grant succeeded.
-
-
SYS@ORCL> grant plustrace to dba with admin option;
-
-
Grant succeeded.
-
-
SYS@ORCL>
- SYS@ORCL> set echo off
HHU@ORCL> conn / as sysdba
Connected.
SYS@ORCL> grant plustrace to hhu;
Grant succeeded.
SYS@ORCL> conn hhu/hhu
Connected.
HHU@ORCL> set autotrace on
HHU@ORCL> set linesize 1000
HHU@ORCL>
下面是$ORACLE_HOME/sqlplus/admin/plustrce.sql這個指令碼的完整內容(實際上看上面這個指令碼的執行過程也能分析出來):
[oracle@hhu ~]$ cat $ORACLE_HOME/sqlplus/admin/plustrce.sql
--
-- Copyright (c) Oracle Corporation 1995, 2002. All Rights Reserved.
--
-- NAME
-- plustrce.sql
--
-- DESCRIPTION
-- Creates a role with access to Dynamic Performance Tables
-- for the SQL*Plus SET AUTOTRACE ... STATISTICS command.
-- After this script has been run, each user requiring access to
-- the AUTOTRACE feature should be granted the PLUSTRACE role by
-- the DBA.
--
-- USAGE
-- sqlplus "sys/knl_test7 as sysdba" @plustrce
--
-- Catalog.sql must have been run before this file is run.
-- This file must be run while connected to a DBA schema.
set echo on
drop role plustrace;
create role plustrace;
grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$mystat to plustrace;
grant plustrace to dba with admin option;
set echo off
可以發現,其實就是幾條簡單的建立角色並賦予相關許可權的命令的組合,如果知道整個指令碼內容,PLUSTRACE這個角色名是可以任意取的;在最後的命令中使用with admin option,說明該角色可被級聯授予。
@huan
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-1984654/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabledSessionIDE
- SP2-0618: Cannot find the Session Identifier.Check PLUSTRACE role is enabledSessionIDE
- SP2-0618: Cannot find the Session IdentifierSessionIDE
- Oracle autotrace 報 SP2-0618 PLUSTRACE role 問題解決Oracle
- SP2-0618:Cannot find the Session Identifier.SP2-0611SessionIDE
- 使用普通使用者set autotrace on報錯SP2-0618: Cannot find the Session IdentifierSessionIDE
- How to Check whether SELinux is Enabled or Disabled [ID 432988.1]Linux
- 解決cannot find module providing package或cannot find main modulePackageAI
- Cannot find folder "Maintenance Plans".AINaN
- [Oracle Script] check active sessionOracleSession
- 解決 Cannot find OpenSSL's
- /usr/bin/ld: cannot find -lopenblas
- ORA-01931: cannot grant UNLIMITED TABLESPACE to a roleMIT
- Cannot find package module sap/cds/commonPackage
- /usr/bin/ld: cannot find -lmysqlclient_rMySqlclient
- IntelliJ IDEA Cannot find declaration to go toIntelliJIdeaGo
- 求救--Cannot find ActionMappings or ActionFormBeans collectionAPPORMBean
- SP2-0618: 無法找到會話識別符號。啟用檢查 PLUSTRACE 角色會話符號
- SP2-0618:無法找到會話識別符號。啟用檢查 PLUSTRACE 角色會話符號
- ORA-01618: redo thread 2 is not enabled - cannot mountthread
- MapStruct-plus cannot find converter fromStruct
- 啟用PLUSTRACE 角色——設定AUTOTRACE出現SP2-0618、SP2-0611錯誤
- Vue Router Cannot find module 'XXX.vue'Vue
- Go cannot find package "go-sql-driver/mysql" in any ofGoPackageMySql
- 解決Cannot find module '@angular/compiler-cli'AngularCompile
- Cannot find SS.INI file for user *** 解決方法
- 解決“su: cannot open session: Permission denied”Session
- “SP2-0618:無法找到會話識別符號。啟用檢查PLUSTRACE角色”解決方案會話符號
- Error: Cannot find configuration directory: /etc/hadoopErrorHadoop
- PHP報錯:?configure: error: Cannot find libmysqlclientPHPErrorIBMMySqlclient
- ORA-38856: cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabledthread
- ORA-01618: redo thread 2 is not enabled - cannot mount 問題處理thread
- Cannot find module ‘webpack-cli/bin/config-yargs‘Web
- Python django報錯ImportError: cannot import name find_specPythonDjangoImportError
- 記一次ALTER SESSION SET hash_join_enabled specifies an obsolete parameterSession
- jQuery :enabledjQuery
- SQL2012報錯:cannot find one or more cpmponentsSQL
- Cannot find ActionMappings or ActionFormBeans collection,實在是搞不定了APPORMBean