sys用戶在cmd下以DBA身份登陸:
sqlplus /nolog
--運行sqlplus命令,進入sqlplus環境。其中/nolog是不登陸到數據庫服務器的意思,如果沒有/nolog參數,sqlplus會提示你輸入用戶名和密碼
SQL〉connect / as sysdba
--以系統管理員(sysdba)身份連接數據庫,如果需要對數據庫進行管理操作,那么需要以這種方式登陸數據庫,或者:
connect sys@service_name as sysdba
--其中service_name是你配置的客戶tnsname服務名
SQL> startup --如果數據庫沒有啟動的話,經過上述步驟連接后,正常啟動數據
這里介紹下幾種連接用到的命令形式
1.sqlplus / as sysdba 這是典型的操作系統認證,不需要listener進程
2.sqlplus sys/oracle 這種連接方式只能連接本機數據庫,同樣不需要listener進程
3.sqlplus sys/oracle@orcl 這種方式需要listener進程處於可用狀態。最普遍的通過網絡連接。
以上連接方式使用sys用戶或者其他通過密碼文件驗證的用戶都不需要數據庫處於可用狀態,操作系統認證也不需要數據庫可用,普通用戶因為是數據庫認證,所以數據庫必需處於open狀態。
平時排錯可能會用到的
1.lsnrctl status查看服務器端listener進程的狀態
2.tnsping 查看客戶端sqlnet.ora和tnsname.ora文件的配置正確與否,及對應的服務器的listener進程的狀態。
3.SQL>show sga 查看instance是否已經啟動
如果在sql*plus環境中使用shutdown命令關閉了數據庫,現在要啟動數據庫的話,必須先用不登陸到數據庫服務器的方式進入sqlplus環境,再用startup命令啟動數據庫。因為數據庫沒有啟動的話,不能登陸數據庫,也無法驗證用戶名和密碼。
sqlplus命令格式如下:
用法: SQLPLUS [ [<option>] [<logon>] [<start>] ]
其中 <option> ::= -H | -V | [ [-M <o>] [-R <n>] [-S] ]
<登錄> ::= <用戶名>[/<口令>][@<connect_string>] | / | /NOLOG
<啟動> : : = @<文件名>[.<ext>] [<參數> ...]
"-H" 顯示 SQL*Plus 的版本標幟和使用語法
"-V" 顯示 SQL*Plus 的版本標幟
"-M <o>" 使用 HTML 標志選項 <o>
"-R <n>" uses restricted mode <n>
"-S" uses silent mode
和
2,sqlplus /nolog
SQL> connect / as sysdba
1和2是一樣的意思。
1. sqlplus / as sysdba
操作系統認證,不需要數據庫服務器啟動listener,也不需要數據庫服務器處於可用狀態。比如我們想要啟動數據庫就可以用這種方式進入
sqlplus,然后通過startup命令來啟動。
連接本機數據庫,不需要數據庫服務器的listener進程,但是由於需要用戶名密碼的認證,因此需要數據庫服務器處於可用狀態才行。
通過網絡連接,這是需要數據庫服務器的listener處於監聽狀態。此時建立一個連接的大致步驟如下
a. 查詢sqlnet.ora,看看名稱的解析方式,默認是TNSNAME
b. 查詢tnsnames.ora文件,從里邊找orcl的記錄,並且找到數據庫服務器的主機名或者IP,端口和service_name
c. 如果服務器listener進程沒有問題的話,建立與listener進程的連接。
d. 根據不同的服務器模式如專用服務器模式或者共享服務器模式,listener采取接下去的動作。默認是專用服務器模式,沒有問題的話客戶端
就連接上了數據庫的server process。
e. 這時連接已經建立,可以操作數據庫了。
如果你希望使用操作系統的認證方式登陸到數據庫,數據庫自然會要求操作系統進行認證,如果是本地用戶,在本機就可以完成認證工作,如果是域用戶, oracle**必須**連接到domain controller進行認證, 如果此時網絡出現故障,oracle會提示你權限不夠(insufficient privileges) 我曾經告訴過你 dba使用的是sys用戶登陸到數據庫進行建立數據庫的操作的 你可以測試一下, 在你登陸到域和不登陸到域的情況(甚至是你斷開網線和連接網線的情況下) conn sys/你的sys的密碼 as sysdba 是否可以登陸到系統。 這對於你研究dbca 的行為會有所幫助。 |