首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL*Plus 以 SYSDBA 身份登錄:正確語法與常見錯誤

     編輯:Oracle 資料庫相關知識

SQL*Plus 連接數據庫時,以最高權限 SYSDBA/SYSOPER 登錄的正確語法、OS 驗證與密碼文件驗證機制、常見報錯原因與解決。

一、標準登錄語法

# 1. OS 驗證(當前 OS 用戶屬於 ORA_DBA/ORA_OPER 組)
sqlplus / AS SYSDBA
sqlplus / AS SYSOPER

# 2. 密碼文件驗證(遠程/非 OS 認證用戶)
sqlplus sys/password AS SYSDBA
sqlplus sys/password@TNS_ALIAS AS SYSDBA

# 3. 帶引號的完整語法(防止 Shell 特殊字符轉義)
sqlplus "sys/password AS SYSDBA"
sqlplus "/ AS SYSDBA"

二、驗證機制詳解

模式前提條件適用場景
OS AuthenticationSQLNET.AUTHENTICATION_SERVICES = (NTS) (Windows) 或 (ALL) (Linux/Unix)
OS 用戶在 ORA_DBA (SYSDBA) 或 ORA_OPER (SYSOPER) 組
本地管理員登錄、自動化腳本、Cron 任務
Password FileORAPWD FILE=$ORACLE_HOME/dbs/orapwSID ENTRIES=10 FORCE=Y
REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE/SHARED
Data Guard、遠程管理、非 OS DBA 用戶、RAC

三、常見錯誤與解決

  1. ORA-01031: insufficient privileges
    原因:OS 用戶不在 ORA_DBA 組、sqlnet.ora 禁用 NTS、密碼文件不存在/條目不足。
    解決:net localgroup ORA_DBA username /add (Windows) 或 usermod -aG dba oracle (Linux)。
  2. ORA-12560: TNS:protocol adapter error (Windows)
    原因:Oracle 服務未啟動、ORACLE_SID 未設置/錯誤、嘗試連接遠程實例但未指定 @TNS。
    解決:SET ORACLE_SID=ORCL → NET START OracleServiceORCL → SQLPLUS / AS SYSDBA。
  3. SP2-0306: Invalid option
    原因:未加引號導致 Shell 吃掉 / 或 AS。
    解決:sqlplus "/ AS SYSDBA" (Linux) 或 sqlplus "sys/pwd AS SYSDBA"。
  4. ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
    原因:12c+ SEC_CASE_SENSITIVE_LOGON、密碼文件大小寫敏感、或嘗試 sqlplus sys/pwd 不帶 AS SYSDBA。
    解決:必須顯式指定 AS SYSDBA 或 AS SYSOPER。

四、最佳實踐

  • 自動化腳本統一使用 sqlplus -S "/ AS SYSDBA" (-S 靜默模式,隱藏版權信息)。
  • 密碼文件定期備份:CP $ORACLE_HOME/dbs/orapw$ORACLE_SID /backup/。
  • 禁用 SYS 遠程密碼登錄(安全基線):SEC_MAX_FAILED_LOGIN_ATTEMPTS=3、SEC_PROTOCOL_ERROR_FURTHER_ACTION=DROP。
  • RAC 環境:sqlplus sys/pwd@NODE1_SID AS SYSDBA 指定實例,或使用 SRVCTL 管理。

牢記 sqlplus "/ AS SYSDBA" 這一「萬能鑰匙」,配合 OS 認證與密碼文件雙軌制,隨時隨地掌控數據庫核心權限。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved