說說密碼檔案Passwordfile(三)
我們的實驗分為本地登入和遠端登入兩個部分探討。
本地登入
資料庫伺服器就在本地,或者管理人員使用telnet、ssh和遠端桌面等遠端登入到系統中。這種方式有一個共同的特點,就是需要輸入資料庫伺服器所在作業系統的使用者名稱和密碼。從Oracle的角度看,就是經過作業系統層面的驗證。
注意:如果是使用telnet、ssh和遠端桌面技術進行系統登入,是要求安全訪問協議的支援。
首先,我們在sqlnet.ora檔案中,設定禁止使用OS層面驗證。
# sqlnet.ora Network Configuration File: D:\oracle\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= (NONE) //設定為禁用
連線空閒例項,並且嘗試登入啟動。
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 1月 24 22:30:50 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
ERROR:
ORA-01031: insufficient privileges //由於禁用了OS層面驗證,所以使用/登入失敗;
之後,只能透過密碼檔案進行驗證了。
SQL> conn sys/sys as sysdba;
已連線到空閒例程。 //登入入系統
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 218106756 bytes
Database Buffers 385875968 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
資料庫已經開啟。
//驗證密碼檔案專案
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
------------------------------ ----- -----
SYS TRUE TRUE
SCOTT TRUE FALSE
結論:在登入入資料庫作業系統之後,在沒有OS層面驗證的情況下,使用密碼檔案是很方便的驗證方式。但是,請注意下面一個程式碼片段。
[oracle@oracle11g ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jan 23 22:03:30 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn sys/sys as sysdba; //順利登入
Connected to an idle instance.
SQL> conn sys/sys@orcl as sysdba; //登入失敗
ERROR:
ORA-12541: TNS:no listener
Warning: You are no longer connected to ORACLE.
我們使用預設ORACLE_SID連線時候,是成功的。但是使用本地命名服務名稱,就是報錯。這個問題我們留待下面探討,畢竟在這種方式下,我們順利的啟動了資料庫。
遠端連線
我們這裡說的遠端連線。是指在遠端計算機上,透過Oracle客戶端連線資料庫例項,進行資料庫操作。我們在這裡實驗使用密碼檔案驗證登入名稱的方法。
首先,我們嘗試連線伺服器。
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 1月 24 22:45:51 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn as sysdba; //因為在遠端機器上,我們無法迴避使用本地命名服務
ERROR:
ORA-12541: TNS: 無監聽程式 //找不到伺服器上的監聽器
我們之前談過,本地命名服務就是與監聽器取得聯絡的方式資訊。如果監聽器沒有啟動,也就無從談起連線。所以,我們取得了遠端連線的一個結論:
如果要進行遠端連線啟動,必須保證資料庫伺服器的監聽器程式是啟動的。
[oracle@oracle11g ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-JAN-2011 22:09:42
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /u01/oracle/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/oracle/network/admin/listener.ora
Log messages written to /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 23-JAN-2011 22:09:42
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
The listener supports no services
The command completed successfully
之後,再次嘗試連線。
SQL> conn as sysdba;
ERROR:
ORA-12514: TNS: 監聽程式當前無法識別連線描述符中請求的服務
修改起了作用,連線找到了監聽器程式。但是監聽器程式對於wilson對應的服務名(同名為wilson)並不識別。注意監聽器程式下的“The listener supports no services”提示。監聽器啟動了,但是沒有接到任何服務資訊。
這就與監聽器的動靜態序號產生器制相關了。現在普遍使用的是動態註冊方式,在例項啟動的時候,PMON後臺程式主動向監聽器進行註冊。但是現在例項根本沒有啟動,怎麼進行動態註冊呢?所以,需要考慮靜態註冊方法。
這裡不累述監聽器知識,有興趣可以參閱筆者“說說監聽器”系列
(http://space.itpub.net/17203031/viewspace-682627)。
修改監聽器檔案listener.ora,加入靜態註冊資訊。
[oracle@oracle11g ~]$ vim /u01/oracle/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/oracle/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = wilson)
(ORACLE_HOME = /u01/oracle)
(SID_NAME = wilson)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11g)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01
設定靜態註冊資訊之後,重新啟動監聽器程式。
[oracle@oracle11g ~]$ lsnrctl stop
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-JAN-2011 22:19:41
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))
The command completed successfully
[oracle@oracle11g ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 23-JAN-2011 22:19:54
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Starting /u01/oracle/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /u01/oracle/network/admin/listener.ora
Log messages written to /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 23-JAN-2011 22:19:54
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))
Services Summary...
Service "wilson" has 1 instance(s).
Instance "wilson", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
註冊上一個服務,但是狀態是UNKNOWN。再次嘗試連線。
//可以連線上了
SQL> conn as sysdba;
已連線到空閒例程。 //空閒例項
SQL> startup //啟動資料庫
ORACLE 例程已經啟動。
Total System Global Area 414298112 bytes
Fixed Size 1336904 bytes
Variable Size 310380984 bytes
Database Buffers 96468992 bytes
Redo Buffers 6111232 bytes
資料庫裝載完畢。
資料庫已經開啟。
結論:如果是希望遠端登入連線,使用密碼檔案驗證。需要有兩個隱含保證:一個是監聽程式啟動,另一個是靜態註冊資料庫服務資訊。兩個條件是實現遠端登入管理的前提條件。
筆者認為,從實用角度看,遠端連線的實際意義較差。尤其是靜態註冊的前提要求,現在普遍使用的是動態註冊。通常我們使用作業系統驗證外加本地登入密碼檔案驗證,就已經可以滿足一般的需要了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-684589/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單說說webpack的配置檔案Web
- 【Docker】(10)---詳細說說 Dockerfile檔案Docker
- 說說在 Python 中,如何寫入檔案Python
- 無密碼身份認證,跟密碼說再見!密碼
- fepk檔案格式說明
- 說說ITSM專案實戰那些事兒(三)
- Oracle 密碼檔案Oracle密碼
- Nginx的配置檔案說明Nginx
- Oracle:ASM & 密碼檔案OracleASM密碼
- 說說在 Python 中,如何讀取檔案中的資料Python
- nginx日誌配置檔案說明Nginx
- Linux下玩轉nginx系列(三)---nginx日誌配置檔案說明LinuxNginx
- Java 大檔案IO操作效率對比【我說說 你瞅瞅】Java
- 碼農深耕 - 說說IDisposable
- django的初始化檔案說明Django
- 通過手寫檔案伺服器,說說前後端互動伺服器後端
- U盤中毒了怎麼恢復檔案,我來說道說道
- 談到區塊鏈,不得不說密碼學區塊鏈密碼學
- 【PROFILE】Oracle11g密碼複雜度說明Oracle密碼複雜度
- Hadoop之HDFS檔案讀寫流程說明Hadoop
- C++檔案說明及使用方法C++
- CentOS8中systemd配置檔案說明CentOS
- 管理(002):建立密碼檔案示例密碼
- 管理(005):密碼檔案設定密碼
- Oracle 12c的DG自動同步密碼檔案--ASM 新特性:共享密碼檔案Oracle密碼ASM
- PDF檔案有限制密碼,該如何編輯檔案?密碼
- 小說軟體開發,java獲取文字檔案的編碼格式Java
- Linux中log檔案是什麼意思?Linux日誌檔案說明Linux
- Oracle安裝光碟內容的檔案說明Oracle
- SpringBoot Jar包瘦身 - 跟大檔案說再見!Spring BootJAR
- 易優CMS模板目錄各檔案說明
- SpringBoot專案配置檔案中密碼的加密Spring Boot密碼加密
- 如何給PDF檔案設定密碼?密碼
- 1.6.5. 使用密碼檔案認證密碼
- 細說三極體
- Spring Security實戰三:說說我的認識Spring
- Bytom國密網說明和指南
- 自研 PHP 框架 1.1_index.php 檔案說明PHP框架Index
- 自研 PHP 框架 1.0_index.php 檔案說明PHP框架Index