Oracle
Oracle Database 12c:TNS:權限被拒絕(CentOS)
(這篇文章與另一篇文章的標題相似,但根本原因和解決方案完全不同。)
問題:
我無法以 sysdba 身份登錄 sqlplus,但監聽器似乎已啟動
[John@localhost ~]$ lsnrctl start LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 13-AUG-2015 18:19:03 Copyright (c) 1991, 2014, Oracle. All rights reserved. Starting /home/John/app/John/product/12.1.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 12.1.0.2.0 - Production System parameter file is /home/John/app/John/product/12.1.0/dbhome_1/network/admin/listener.ora Log messages written to /home/John/app/John/diag/tnslsnr/localhost/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production Start Date 13-AUG-2015 18:19:03 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /home/John/app/John/product/12.1.0/dbhome_1/network/admin/listener.ora Listener Log File /home/John/app/John/diag/tnslsnr/localhost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) The listener supports no services The command completed successfully
偵聽器似乎已啟動,但 TNS 偵聽器拒絕 sysdba 登錄。
[John@localhost ~]$ sqlplus -prelim / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Thu Aug 13 18:25:49 2015 Copyright (c) 1982, 2014, Oracle. All rights reserved. ERROR: ORA-01017: invalid username/password; logon denied Enter user-name: ^C [John@localhost ~]$
可能的原因:
在發生這種情況的前幾天,我能夠登錄。我能想到的唯一可能導致問題的事情是,我將所有文件和文件夾更改為
John:John
toJohn:Users
,然後Users
將John
. 我不知道為什麼這很重要。如果它確實重要,那當然不應該。我將如何獲得
/ as sysdba
有關 TNS 偵聽器突然拒絕的原因的更詳細資訊?如果它明顯與組更改有關,那麼在糾正身份驗證錯誤的同時需要進行哪些特定更改才能使組設置保持不變?
此語法根本不使用偵聽器:
sqlplus -prelim / as sysdba
但是您遇到了身份驗證錯誤,因為基於作業系統組的 SYSDBA 身份驗證失敗。檢查以下內容:
cat $ORACLE_HOME/rdbms/lib/config.c
在那裡你應該看到這樣的一行:
#define SS_DBA_GRP "John"
只有那些
/ as sysdba
屬於上面定義的作業系統組成員的使用者才能使用。如果您安裝數據庫軟體時將 OSDBA 組設置為 John,並將您的組更改為 Users,那麼您將無法使用/ as sysdba
.如果要將 OSDBA 組更改為新組,請編輯上述文件,設置所需的值,關閉從 ORACLE_HOME(數據庫、偵聽器)執行的所有內容,然後執行
$ORACLE_HOME/bin/relink all