在操作系統本地在oracle用戶下使用sqlplus / as sysdba連接sqlplus的時候提示ORA-01031: insufficient privileges
查看操作系統版本信息
[oracle@OracleBak admin]$ lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.6 (Final) Release: 6.6 Codename: Final
正常本地登陸的時候應該不需要授權的,檢查sqlnet.ora文件,文件路徑爲$ORACLE_HOME/network/admin/sqlnet.ora,
[oracle@OracleBak admin]$ cat sqlnet.ora # sqlnet.ora Network Configuration File: /opt/ora11/product/11.2/network/admin/sqlnet.ora # Generated by Oracle configuration tools. SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES,EZCONNECT)
檢查監聽和tnsping均正常,查閱資料後發現sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES
1、在windows下,SQLNET.AUTHENTICATION_SERVICES必須設置爲NTS才能使用OS認證;
不設置或者設置爲其他任何值都不能使用OS認證。
2、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值設置爲ALL,或者不設置的情況下,OS驗證才能成功;
將此參數修改爲ALL後即可使用sqlplus / as sysdba;直接登陸了,可是使用sqlplus sys/oracle@orcl as sysdba;登陸的時候提示ORA-12641: Authentication service failed to initialize,將sqlnet.ora中的
SQLNET.AUTHENTICATION_SERVICES= (ALL)
這一行去掉之後再使用用戶名和密碼登陸可以正常登陸了
sqlnet.ora文件內容
# sqlnet.ora Network Configuration File: /opt/ora11/product/11.2/network/admin/sqlnet.ora # Generated by Oracle configuration tools. #SQLNET.AUTHENTICATION_SERVICES= (ALL) NAMES.DIRECTORY_PATH= (TNSNAMES,EZCONNECT)
tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/ora11/product/11.2/network/admin/tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = OracleBak)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
listener.ora
# listener.ora Network Configuration File: /opt/ora11/product/11.2/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (SID_NAME = orcl) ) ) ORCL = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.10.242)(PORT = 1521)) ) ) ADR_BASE_GNNT = /opt/ora11