Oracle

Oracle Database 12c:TNS:權限被拒絕(CentOS)

  • August 13, 2015

(這篇文章與另一篇文章的標題相似,但根本原因和解決方案完全不同。)

問題:

我無法以 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:Johnto John:Users,然後UsersJohn. 我不知道為什麼這很重要。如果它確實重要,那當然不應該。

我將如何獲得/ 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

引用自:https://dba.stackexchange.com/questions/110990