天天看點

Oracle 預設密碼及修改密碼

預設密碼:

使用者名:sys     密碼:change_on_install  

使用者名:system     密碼:manager  

使用者名:internal     密碼:oracle  

使用者名:scott     密碼:tiger

遺失密碼後修改密碼

一個修改oracle使用者密碼的小訣竅資料庫版本:9.2.0.5

有時候我們可能不知道一個使用者的密碼,但是又需要以這個使用者做一些操作,又不能去修改掉這個使用者的密碼,這個時候,就可以利用一些小竅門,來完成操作。

unix 的話,需要轉到oracle使用者環境變量下,前提是采用作業系統驗證。

具體操作過程如下:

sql*plus: release 9.2.0.5.0 - production on 星期日 11月 21 13:32:34 2004

copyright (c) 1982, 2002, oracle corporation. all rights reserved.

sql> connect sys/oracle as sysdba

已連接配接。

sql> select username,password from dba_users;

username                       password

------------------------------ ------------------------------

sys                            8a8f025737a9097a

system                         2d594e86f93b17a1

dbsnmp                         e066d214d5421ccc

toad                           a1ba01cf0dd82695

outln                          4a3ba55e08595c81

wmsys                          7c9ba362f8314299

已選擇6行。

sql> connect system/oracle

修改使用者system密碼為manager

sql> alter user system identified by manager;

使用者已更改。

system                         d4df7931ab130e37

sql> connect system/manager

然後此時可以做想要做的任何操作了

修改使用者system密碼為以前的值

sql> alter user system identified by values '2d594e86f93b17a1';

error:

ora-01017: invalid username/password; logon denied

警告: 您不再連接配接到 oracle.

又或者删除舊的密碼檔案,然後建立一個,如

orapwd file=d:\oracle\database\pwdetalker.ora password=newpass entries=10 force=y;

可知使用os驗證登入後修改密碼

建立密碼檔案

轉貼(借花獻佛)

概要:oracle關系資料庫系統以其卓越的性能獲得了廣泛的應用,而保證資料庫的安全性是資料庫管理工作的重要内容。本文是筆者在總結oracle資料庫安全管理工作的基礎上,對oracle資料庫系統密碼檔案的建立、使用和維護作了詳細的介紹,供大家參考。

  關鍵詞:oracle資料庫 密碼檔案

  在oracle資料庫系統中,使用者如果要以特權使用者身份(internal/sysdba/sysoper)登入oracle資料庫可以有兩種身份驗證的方法:即使用與作業系統內建的身份驗證或使用oracle資料庫的密碼檔案進行身份驗證。是以,管理好密碼檔案,對于控制授權使用者從遠端或本機登入oracle資料庫系統,執行資料庫管理工作,具有重要的意義。

  oracle資料庫的密碼檔案存放有超級使用者internal/sys的密碼及其他特權使用者的使用者名/密碼,它一般存放在oracle_home\database目錄下。

  一、 密碼檔案的建立:

  在使用oracle instance manager建立一資料庫執行個體的時侯,在oracle_home\database目錄下還自動建立了一個與之對應的密碼檔案,檔案名為pwdsid.ora,其中sid代表相應的oracle資料庫系統辨別符。此密碼檔案是進行初始資料庫管理工作的基礎。在此之後,管理者也可以根據需要,使用工具orapwd.exe手工建立密碼檔案,指令格式如下:

  c:\ >;orapwd file=< filename > password =< password > entries=< max_users >;

  各指令參數的含義為:

  ---- filename:密碼檔案名;

  ---- password:設定internal/sys帳号的密碼;

  ---- max_users:密碼檔案中可以存放的最大使用者數,對應于允許以sysdba/sysoper權限登入資料庫的最大使用者數。由于在以後的維護中,若使用者數超出了此限制,則需要重建密碼檔案,是以此參數可以根據需要設定得大一些。

  有了密碼檔案之後,需要設定初始化參數remote_login_passwordfile來控制密碼檔案的使用狀态。

  二、 設定初始化參數remote_login_passwordfile:

  在oracle資料庫執行個體的初始化參數檔案中,此參數控制着密碼檔案的使用及其狀态。它可以有以下幾個選項:

  none:訓示oracle系統不使用密碼檔案,特權使用者的登入通過作業系統進行身份驗證;

  exclusive:訓示隻有一個資料庫執行個體可以使用此密碼檔案。隻有在此設定下的密碼檔案可以包含有除internal/sys以外的使用者資訊,即允許将系統權限sysoper/sysdba授予除internal/sys以外的其他使用者。

  shared:訓示可有多個資料庫執行個體可以使用此密碼檔案。在此設定下隻有internal/sys帳号能被密碼檔案識别,即使檔案中存有其他使用者的資訊,也不允許他們以sysoper/sysdba的權限登入。此設定為預設值。

  在remote_login_passwordfile參數設定為exclusive、shared情況下,oracle系統搜尋密碼檔案的次序為:在系統注冊庫中查找ora_sid_pwfile參數值(它為密碼檔案的全路徑名);若未找到,則查找ora_pwfile參數值;若仍未找到,則使用預設值oracle_home\database\pwdsid.ora;其中的sid代表相應的oracle資料庫系統辨別符。

  三、 向密碼檔案中增加、删除使用者:

  當初始化參數remote_login_passwordfile設定為exclusive時,系統允許除internal/sys以外的其他使用者以管理者身份從遠端或本機登入到oracle資料庫系統,執行資料庫管理工作;這些使用者名必須存在于密碼檔案中,系統才能識别他們。由于不管是在建立資料庫執行個體時自動建立的密碼檔案,還是使用工具orapwd.exe手工建立的密碼檔案,都隻包含internal/sys使用者的資訊;為此,在實際操作中,可能需要向密碼檔案添加或删除其他使用者帳号。

  由于僅被授予sysoper/sysdba系統權限的使用者才存在于密碼檔案中,是以當向某一使用者授予或收回sysoper/sysdba系統權限時,他們的帳号也将相應地被加入到密碼檔案或從密碼檔案中删除。由此,向密碼檔案中增加或删除某一使用者,實際上也就是對某一使用者授予或收回sysoper/sysdba系統權限。

  要進行此項授權操作,需使用sysdba權限(或internal帳号)連入資料庫,且初始化參數remote_login_passwordfile的設定必須為exclusive。具體操作步驟如下:

  建立相應的密碼檔案;

  設定初始化參數remote_login_passwordfile=exclusive;

  使用sysdba權限登入: connect sys/internal_user_passsword as sysdba;

  啟動資料庫執行個體并打開資料庫;

  建立相應使用者帳号,對其授權(包括sysoper和sysdba): 授予權限:grant sysdba to user_name;

  收回權限:revoke sysdba from user_name;

  現在這些使用者可以以管理者身份登入資料庫系統了;

  四、 使用密碼檔案登入:

  有了密碼檔案後,使用者就可以使用密碼檔案以sysoper/sysdba權限登入oracle資料庫執行個體了,注意初始化參數remote_login_passwordfile應設定為exclusive或shared。任何使用者以sysoper/sysdba的權限登入後,将位于sys使用者的schema之下,以下為兩個登入的例子:

  1. 以管理者身份登入:

  假設使用者scott已被授予sysdba權限,則他可以使用以下指令登入:

  connect scott/tiger as sysdba

  2. 以internal身份登入:

  connect internal/internal_password

  五、 密碼檔案的維護:

  1. 檢視密碼檔案中的成員:

  可以通過查詢視圖v$pwfile_users來擷取擁有sysoper/sysdba系統權限的使用者的資訊,表中sysoper/sysdba列的取值true/false表示此使用者是否擁有相應的權限。這些使用者也就是相應地存在于密碼檔案中的成員。

  2. 擴充密碼檔案的使用者數量:

  當向密碼檔案添加的帳号數目超過建立密碼檔案時所定的限制(即orapwd.exe工具的max_users參數)時,為擴充密碼檔案的使用者數限制,需重建密碼檔案,具體步驟如下:

   a= 查詢視圖v$pwfile_users,記錄下擁有sysoper/sysdba系統權限的使用者資訊;

   b= 關閉資料庫;

   c= 删除密碼檔案;

   d= 用orapwd.exe建立一密碼檔案;

   e= 将步驟a中擷取的使用者添加到密碼檔案中。

   3. 修改密碼檔案的狀态:

  密碼檔案的狀态資訊存放于此檔案中,當它被建立時,它的預設狀态為shared。可以通過改變初始化參數remote_login_passwordfile的設定改變密碼檔案的狀态。當啟動資料庫事例時,oracle系統從初始化參數檔案中讀取remote_login_passwordfile參數的設定;當加載資料庫時,系統将此參數與密碼檔案的狀态進行比較,如果不同,則更新密碼檔案的狀态。若計劃允許從多台客戶機上啟動資料庫執行個體,由于各客戶機上必須有初始化參數檔案,是以應確定各客戶機上的初始化參數檔案的一緻性,以避免意外地改變了密碼檔案的狀态,造成資料庫登陸的失敗。

   4. 修改密碼檔案的存儲位置:

  密碼檔案的存放位置可以根據需要進行移動,但作此修改後,應相應修改系統注冊庫有關指向密碼檔案存放位置的參數或環境變量的設定。

  5. 删除密碼檔案:

  在删除密碼檔案前,應確定目前運作的各資料庫執行個體的初始化參數remote_login_passwordfile皆設定為none。在删除密碼檔案後,若想要以管理者身份連入資料庫的話,則必須使用作業系統驗證的方法進行登入。

在dos下,必須是以administrator登陸

set oracoe_sid = "服務名"

sqlplus /nolog

conn /as sysdba

alter user system identified by ****;

更改之後重新啟動機器和執行個體放可生效

-------------

orapwd是oracle提供的建立密碼檔案的指令,如果密碼檔案不見了可以用這個指令重新建立。下面是orapwd指令的一些解釋。

d:\oracle\ora92\database>orapwd

usage: orapwd file=<fname> password=<password> entries=<users>

  where

    file - name of password file (mand),

    password - password for sys (mand),

    entries - maximum number of distinct dba and opers (opt),

  there are no spaces around the equal-to (=) character.

例如:d:\oracle\ora92\database>orapwd file=pwdcjh.ora password=cjh entries=2

其中參數entries的含義是表示密碼檔案中可以存放的最大使用者數,對應于允許以sysdba/sysoper權限登入資料庫的最大使用者數,如果使用者數超過這個值隻能重建密碼檔案,增大entries。

file後面可以指定密碼檔案的全路徑和檔案名,否則建立在目前目錄下。

windows下oracle預設的位置是ora92/database目錄,預設的檔案名是pwdsid.ora,對于别的檔案名是不認的。linux下oracle預設的位置是$oracle_home/dbs目錄,預設的檔案名是orapwsid,對于别的檔案名是不認的。

建立完後,資料庫需要重新開機動,新的密碼檔案才能生效。

但是這個密碼檔案對于非作業系統認證例如網絡連接配接的方式才有用。對于在本機登入,因為采用了作業系統認證,不管用什麼密碼都可以登入,實際上密碼沒起任何作用。如果在本機登陸不采用作業系統認證,把ora92/network/admin下的sqlnet.ora中的

sqlnet.authentication_services= (nts)

改為

sqlnet.authentication_services= (none)

然後用

d:\oracle\ora92\database>sqlplus "sys/cjh@cjh as sysdba"

就可以登陸了。

orapwd格式