sqlplus / as sysdba無法登入的奇怪報錯
最近看了一個問題,看問題的表現著實比較奇怪,困擾了我好一會兒。
問題的背景是幫助開發的同學解決一個資料庫問題,最後問題解決之後,我想做一個作業系統級的檢查,幫他們看看還有什麼需要注意的地方。然後在命令列中國登陸到了這臺資料庫伺服器,切換到oracle使用者之後,檢視到資料庫例項為cytj,然後準備做一番檢查。
#ps -ef|grep smon
root 3657 32596 0 17:37 pts/2 00:00:00 grep smon
oracle 5433 1 0 2015 ? 00:45:46 ora_smon_cytj
但是這個時候,奇怪的問題就發生了。
#su - oracle
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 17:37:56 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
碰到這種問題,看起來還是哪幾種常規的思路,其中之一就是看看ORACLE_HOME是否完全對映。根據smon的程式得到程式號為5433,在/proc/5433下面可以得到一個環境變數的列表。
$cat /proc/5433/environ|xargs -0 -n1 |grep ORACLE_HOME
ORACLE_HOME=/U01/app/oracle/product/11.2.0.4
解析得到ORACLE_HOME的路徑
然後檢視系統環境變數的值$ORACLE_HOME,發現也確實是完全對映的。
$echo $ORACLE_BASE
/U01/app/oracle
$echo $ORACLE_HOME
/U01/app/oracle/product/11.2.0.4
那麼ORACLE_SID,ORACLE_HOME都沒有問題,怎麼就連線不到這個例項了呢?
一種分析問題的思路就是,檢視網路的配置情況,是否為/etc/hosts的配置問題。然後檢視資料庫
$cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
#GATEWAY=
HOSTNAME=BJ-BX-131-190
$cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.127.131.190 BJ-BX-131-190
$cat /U01/app/oracle/product/11.2.0.4/network/admin/sqlnet.ora
# sqlnet.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
使用tnsping來檢測tns連線串的情況,也沒有發現任何問題。當然這個地方和sqlplus / as sysdba 應該沒有直接關係,但是透過這個可以說明網路服務配置都是合理的。
[admin]$tnsping cytj
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 07-MAR-2016 18:02:35
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
/U01/app/oracle/product/11.2.0.4/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.127.131.190)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cytj)))
OK (20 msec)
使用一個普通使用者來本地連線測試,發現scott使用者是鎖定的,透過這個也能夠說明連線是起了作用了。
[admin]$sqlplus scott/tiger
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 18:03:40 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-28000: the account is locked
然後換做tns連線的方式,發現錯誤也是一樣,說明走網路連線的方式也起作用了。
[admin]$sqlplus scott/tiger@cytj
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 18:03:40 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-28000: the account is locked
然後對於這個錯誤,在這個系統中摸索了一番,發現這個路徑著實夠亂,竟然存在兩個ORACLE_HOME,
當前的是:
/U01/app/oracle/product/11.2.0.4/dbs
發現的新ORACLE_HOME是
/home/U01/app/oracle/product/11.2.0.4/dbs
但是經過一番論證發現然並卵,這個路徑對這個問題實際上沒有造成什麼影響。
因為ORACLE_HOME這些配置完全和另外一個ORACLE_HOME沒有任何關聯。
還有一些可能就是和密碼檔案有關,於是我手工修改了sys密碼,再次登入。
[dbs]$sqlplus system/oracle
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 22:12:11 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning and Real Application Testing options
SQL> alter user sys identified by oracle;
User altered.
然後再次登入,問題依舊。
這個時候還可以進一步排除密碼檔案的影響,比如我指定了一個不存在的例項test,這個時候sqlplus / as sysdba應該接入一個空例項。
$export ORACLE_SID=test
$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 19:28:42 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
然後進一步測試,發現dg broker登入也有問題。
[dbs]$dgmgrl /
DGMGRL for Linux: Version 11.2.0.4.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
ORA-01017: invalid username/password; logon denied
使用rman來登入發現也是同樣的錯誤。
[dbs]$rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Mar 7 19:29:36 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-01017: invalid username/password; logon denied
好了,事已至此,可以充分肯定問題出在這個本地作業系統認證上,oracle所在的使用者組都是沒有問題的。
作業系統認證在$ORACLE_HOME/network/admin/sqlnet.ora也有一些關係。
我們看看這個檔案是怎麼配置的。
[admin]$vi sqlnet.ora
# sqlnet.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
xxxx
看到這個問題,一下子明白了原委,就是下面的配置導致的問題。
SQLNET.AUTHENTICATION_SERVICES= (NTS)
這個應該是在windows中的配置,怎麼在linux裡面設定這個,可見最開始就是從windows中複製的這個檔案,怎麼進一步印證呢,可以看看sqlnet.ora的註釋部分,裡面的路徑就是D盤的路徑,也有註釋說了是在NT環境下,在linux環境中,這個引數其實是不需要的。
註釋掉之後。
再次登入就沒有任何問題了。
問題的背景是幫助開發的同學解決一個資料庫問題,最後問題解決之後,我想做一個作業系統級的檢查,幫他們看看還有什麼需要注意的地方。然後在命令列中國登陸到了這臺資料庫伺服器,切換到oracle使用者之後,檢視到資料庫例項為cytj,然後準備做一番檢查。
#ps -ef|grep smon
root 3657 32596 0 17:37 pts/2 00:00:00 grep smon
oracle 5433 1 0 2015 ? 00:45:46 ora_smon_cytj
但是這個時候,奇怪的問題就發生了。
#su - oracle
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 17:37:56 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name:
碰到這種問題,看起來還是哪幾種常規的思路,其中之一就是看看ORACLE_HOME是否完全對映。根據smon的程式得到程式號為5433,在/proc/5433下面可以得到一個環境變數的列表。
$cat /proc/5433/environ|xargs -0 -n1 |grep ORACLE_HOME
ORACLE_HOME=/U01/app/oracle/product/11.2.0.4
解析得到ORACLE_HOME的路徑
然後檢視系統環境變數的值$ORACLE_HOME,發現也確實是完全對映的。
$echo $ORACLE_BASE
/U01/app/oracle
$echo $ORACLE_HOME
/U01/app/oracle/product/11.2.0.4
那麼ORACLE_SID,ORACLE_HOME都沒有問題,怎麼就連線不到這個例項了呢?
一種分析問題的思路就是,檢視網路的配置情況,是否為/etc/hosts的配置問題。然後檢視資料庫
$cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
#GATEWAY=
HOSTNAME=BJ-BX-131-190
$cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.127.131.190 BJ-BX-131-190
$cat /U01/app/oracle/product/11.2.0.4/network/admin/sqlnet.ora
# sqlnet.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
使用tnsping來檢測tns連線串的情況,也沒有發現任何問題。當然這個地方和sqlplus / as sysdba 應該沒有直接關係,但是透過這個可以說明網路服務配置都是合理的。
[admin]$tnsping cytj
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 07-MAR-2016 18:02:35
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
/U01/app/oracle/product/11.2.0.4/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.127.131.190)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cytj)))
OK (20 msec)
使用一個普通使用者來本地連線測試,發現scott使用者是鎖定的,透過這個也能夠說明連線是起了作用了。
[admin]$sqlplus scott/tiger
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 18:03:40 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-28000: the account is locked
然後換做tns連線的方式,發現錯誤也是一樣,說明走網路連線的方式也起作用了。
[admin]$sqlplus scott/tiger@cytj
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 18:03:40 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-28000: the account is locked
然後對於這個錯誤,在這個系統中摸索了一番,發現這個路徑著實夠亂,竟然存在兩個ORACLE_HOME,
當前的是:
/U01/app/oracle/product/11.2.0.4/dbs
發現的新ORACLE_HOME是
/home/U01/app/oracle/product/11.2.0.4/dbs
但是經過一番論證發現然並卵,這個路徑對這個問題實際上沒有造成什麼影響。
因為ORACLE_HOME這些配置完全和另外一個ORACLE_HOME沒有任何關聯。
還有一些可能就是和密碼檔案有關,於是我手工修改了sys密碼,再次登入。
[dbs]$sqlplus system/oracle
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 22:12:11 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning and Real Application Testing options
SQL> alter user sys identified by oracle;
User altered.
然後再次登入,問題依舊。
這個時候還可以進一步排除密碼檔案的影響,比如我指定了一個不存在的例項test,這個時候sqlplus / as sysdba應該接入一個空例項。
$export ORACLE_SID=test
$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 7 19:28:42 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
然後進一步測試,發現dg broker登入也有問題。
[dbs]$dgmgrl /
DGMGRL for Linux: Version 11.2.0.4.0 - 64bit Production
Copyright (c) 2000, 2009, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.
ORA-01017: invalid username/password; logon denied
使用rman來登入發現也是同樣的錯誤。
[dbs]$rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Mar 7 19:29:36 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-01017: invalid username/password; logon denied
好了,事已至此,可以充分肯定問題出在這個本地作業系統認證上,oracle所在的使用者組都是沒有問題的。
作業系統認證在$ORACLE_HOME/network/admin/sqlnet.ora也有一些關係。
我們看看這個檔案是怎麼配置的。
[admin]$vi sqlnet.ora
# sqlnet.ora Network Configuration File: D:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
xxxx
看到這個問題,一下子明白了原委,就是下面的配置導致的問題。
SQLNET.AUTHENTICATION_SERVICES= (NTS)
這個應該是在windows中的配置,怎麼在linux裡面設定這個,可見最開始就是從windows中複製的這個檔案,怎麼進一步印證呢,可以看看sqlnet.ora的註釋部分,裡面的路徑就是D盤的路徑,也有註釋說了是在NT環境下,在linux環境中,這個引數其實是不需要的。
註釋掉之後。
再次登入就沒有任何問題了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-2089578/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlplus sys/oracle@orcl as sysdba無法登入SQLOracle
- sqlplus / as sysdba 登入報許可權不足 for windowsSQLWindows
- sqlplus -prelim / as sysdba強制登入SQL
- 【問題處理】“sqlplus / as sysdba”無法登陸——多餘的斜槓!SQL
- Oracle所有者不是dba 引起sqlplus / as sysdba 登入報錯ORA-01031OracleSQL
- windows 下用 as sysdba登陸報錯Windows
- 使用strace診斷奇怪的sqlplus登入問題SQL
- sqlplus “/ as sysdba”登入的時候提示沒有許可權SQL
- sqlplus本地登入報錯ORA-12545SQL
- 奇怪的問題: 資料庫使用者登入的時候報錯資料庫
- sysdba不能遠端登入
- sysdba登入oracle的schema是sysOracle
- sqlplus / as sysdba登入提示ORA-01031: 許可權不足SQL
- sqlplus / as sysdba報錯ORA-01031: insufficient privileges的原因分析SQL
- [20161216sqlplus無法登入與ORA-01821錯誤SQL
- ORACLE_HOME設定錯誤導致本地sqlplus無法登陸OracleSQL
- Python——奇怪的掃碼登入Python
- 程式無任何報錯但是無法寫入資料庫資料庫
- Vue的動態選單無法登入(無法載入選單)Vue
- Oracle禁止connect / as sysdba方式登入Oracle
- SDWebImage 載入https報錯 無法載入問題WebHTTP
- sqlplus -prelim/ as sysdba用法SQL
- 隨筆 sqlplus / as sysdbaSQL
- 新浪UC無法登入的解決辦法
- Postman無法登入賬號Postman
- cacti登陸出現報錯:資料庫無法連線資料庫
- 主機安裝zblog 無法登陸:錯誤原因:登入失敗
- sqlplus 可以登入 plsql 不能登入SQL
- 奇怪的登入問題及解決
- VSCode報錯:cnpm : 無法載入檔案VSCodeNPM
- 利用jnbSA啟動netbackup圖形介面報錯無法登陸
- 以sysdba身份登入oracle報ORA-1031許可權不足錯誤之完美分析Oracle
- oracle安裝後無法登入Oracle
- sqlplus登入資料庫報錯ORA-12547: TNS:lost contactSQL資料庫
- sqlplus / as sysdba報錯ORA-01017: invalid username/password; logon deniedSQLGo
- InfoPackage無法開啟 報錯Package
- SQLPlus無法登入資料庫提示密碼不對或許可權不足SQL資料庫密碼
- sqlplus as sysdb登入報ora-01017SQL