口令文件介紹 在ORALCE資料庫系統中,用戶如果要以特權用戶身份(SYS/SYSDBA/SYSOPER)登錄ORALCE資料庫可以有兩種身份驗證的方法:即使用與操作系統集成的身份驗證或使用ORALCE資料庫的密碼文件進行身份驗證。因此,管理好密碼文件,對於控制授權用戶從伺服器本機或遠端登錄Orac... ...
口令文件介紹
在ORALCE資料庫系統中,用戶如果要以特權用戶身份(SYS/SYSDBA/SYSOPER)登錄ORALCE資料庫可以有兩種身份驗證的方法:即使用與操作系統集成的身份驗證或使用ORALCE資料庫的密碼文件進行身份驗證。因此,管理好密碼文件,對於控制授權用戶從伺服器本機或遠端登錄Oracle資料庫系統,執行資料庫管理工作,具有重要的意義.
ORALCE口令文件用於存儲擁有部分特權用戶(sys等用戶)的口令(註意:普通賬號密碼是不會存儲在口令文件的)。允許用戶通過口令文件驗證,在資料庫未啟動之前登陸,從而啟動資料庫。如果沒有口令文件,在資料庫未啟動之前就只能通過操作系統認證.口令文件存放在$ORACLE_HOME/dbs目錄下(linux,window放在database),預設名稱是orapw$ORACLE_SID。即密碼文件位置:
Linux下的存放位置:$ORACLE_HOME/dbs/orapw<sid>.ora
Windows下的存放位置:$ORACLE_HOME/database/PW%ORACLE_SID%.ora
口令文件管理
1:口令文件成員查看
SQL> SELECT * FROM V$PWFILE_USERS;
USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
如果查詢該視圖沒有的記錄的話,那麼這是什麼情況呢?出現這種情況,一般是口令文件被刪除或移走。 例如如下操作所示:
oracle@DB-Server ~]$
[oracle@DB-Server ~]$ cd $ORACLE_HOME/dbs
[oracle@DB-Server dbs]$ mv orapwgsp /tmp
[oracle@DB-Server dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu Aug 4 17:43:39 2016
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> SELECT * FROM V$PWFILE_USERS;
no rows selected
SQL>
ORACLE使用操作系統集成的身份驗證或使用密碼驗證,這個類似SQL SERVER中的Windows身份驗證和SQL Server驗證方式,那麼使用哪種方式登錄資料庫是由兩個參數控制的。
1:ORACLE提供的一個參數remote_login_passwordfile,remote_login_passwordfile有none,shared,exclusive3個值:
none表示不使用口令文件;
exclusive表示實例獨占使用口令文件,也就是各自實例使用單獨的口令文件,
shared表示多個實例共用一個口令文件
2:sqlnet.ora裡面的參數SQLNET.AUTHENTICATION_SERVICES
SQLNET.AUTHENTICATION_SERVICES = none | all | ntf(windows)
none : 表示關閉操作系統認證,只能密碼認證
all : 用於linux或unix平臺,關閉本機密碼文件認證,採用操作系統認證,但遠程<異機>可以使用密碼文件認證
nts : 用於windows平臺
2:使用操作系統集成的身份驗證登錄資料庫
[oracle@DB-Server ~]$
[oracle@DB-Server ~]$ cd /u01/app/network/admin/
[oracle@DB-Server admin]$ more sqlnet.ora
# sqlnet.ora Network Configuration File: /u01/app/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /u01
[oracle@DB-Server admin]$ vi sqlnet.ora
# sqlnet.ora Network Configuration File: /u01/app/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /u01
SQLNET.AUTHENTICATION_SERVICES=all
其實預設情況,參數文件sqlnet.ora裡面並沒有配置SQLNET.AUTHENTICATION_SERVICES這個參數,預設表示操作系統認證,如果配置文件sqlnet.ora 裡面有SQLNET.AUTHENTICATION_SERVICES=none, 那麼設置為SQLNET.AUTHENTICATION_SERVICES=all 即可啟用操作系統集成的身份驗證登錄資料庫
[oracle@DB-Server admin]$ more sqlnet.ora
# sqlnet.ora Network Configuration File: /u01/app/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /u01
SQLNET.AUTHENTICATION_SERVICES=none
[oracle@DB-Server admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Sat Aug 6 21:30:23 2016
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-01031: insufficient privileges
Enter user-name:
3:改變OS認證為口令認證
SQLNET.AUTHENTICATION_SERVICES = none | all | ntf(windows)
none : 表示關閉操作系統認證,只能密碼認證
all : 用於linux或unix平臺,關閉本機密碼文件認證,採用操作系統認證,但遠程<異機>可以使用密碼文件認證
nts : 用於windows平臺
在sqlnet.ora文件裡面,增加SQLNET.AUTHENTICATION_SERVICES= (none)
[oracle@DB-Server admin]$ vi sqlnet.ora
# sqlnet.ora Network Configuration File: /database/product/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.AUTHENTICATION_SERVICES= none
參數remote_login_passwordfile僅僅表示遠程登錄資料庫時,是否使用密碼驗證。當remote_login_passwordfile=none並且SQLNET.AUTHENTICATION_SERVICES= (none)時,遠程和本機都無法登錄資料庫。
SQL> alter system set remote_login_passwordfile=none scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1218920 bytes
Variable Size 234882712 bytes
Database Buffers 838860800 bytes
Redo Buffers 15556608 bytes
Database mounted.
Database opened.
SQL>
此時從遠程客戶端登錄:此處實際上是無法通過口令文件驗證
C:\Users\kerry>sqlplus "sys/kkk123456@mydb as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 1月 11 15:37:45 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1090519040 bytes
Fixed Size 1218920 bytes
Variable Size 234882712 bytes
Database Buffers 838860800 bytes
Redo Buffers 15556608 bytes
Database mounted