說說密碼檔案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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 說說密碼檔案Passwordfile(一)密碼
- 說說密碼檔案Passwordfile(二)密碼
- Oracle密碼檔案的作用和說明Oracle密碼
- REMOTE_LOGIN_PASSWORDFILE引數和ORAPW密碼檔案REM密碼
- 【Docker】(10)---詳細說說 Dockerfile檔案Docker
- 簡單說說webpack的配置檔案Web
- Infer - 檔案說明
- 檔案-spfile說明
- Oracle中passwordfile的作用及說明考試大全Oracle
- 無密碼身份認證,跟密碼說再見!密碼
- php檔案操作錯誤程式碼說明PHP
- 說說在 Python 中,如何寫入檔案Python
- fepk檔案格式說明
- Oracle Listener設定密碼示例說明Oracle密碼
- RHEL 7特性說明(三):儲存與檔案系統
- Nginx的配置檔案說明Nginx
- Docker 的配置檔案說明Docker
- LINUX常用檔案說明Linux
- android混淆檔案說明Android
- 檔案-init.ora說明
- MySQL 日誌檔案 說明MySql
- Apache 配置檔案說明(轉)Apache
- 【口令檔案】remote_login_passwordfileREM
- 關於密碼檔案,SYS密碼密碼
- Oracle 密碼檔案Oracle密碼
- 說說三層架構和MVC架構MVC
- Nginx配置檔案詳細說明Nginx
- linux日誌檔案說明Linux
- saltstack/saltmaster配置檔案說明(二)AST
- Redis配置檔案引數說明Redis
- TIFF檔案格式中文解說.txt
- oracle控制檔案轉儲說明Oracle
- Linux的基本檔案說明Linux
- 說說在 Python 中,如何讀取檔案中的資料Python
- Oracle:ASM & 密碼檔案OracleASM密碼
- 建立oracle 密碼檔案Oracle密碼
- django的初始化檔案說明Django
- http.conf配置檔案說明HTTP