新聞中心
如何修改Oracle用戶密碼呢?這是很多人都提到過的問題,下面就教您一個Oracle用戶密碼的方法,希望對您能有所幫助。

創(chuàng)新互聯(lián)建站服務(wù)項目包括龍灣網(wǎng)站建設(shè)、龍灣網(wǎng)站制作、龍灣網(wǎng)頁制作以及龍灣網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,龍灣網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到龍灣省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
做為Unix 系統(tǒng)管理員,Oracle 數(shù)據(jù)庫管理員,Oracle ERP 應(yīng)用系統(tǒng)管理員,需要不定期地更改各系統(tǒng)中重要用戶的密碼,以保證系統(tǒng)及數(shù)據(jù)的安全。
但是,由于所管理的小型機及數(shù)據(jù)庫、應(yīng)用系統(tǒng)較多,每月更改近百個用戶的密碼,不論是密碼的生成,還是密碼的更改,工作量均很大,尤其是密碼的生成,為了加強安全性,密碼不能太簡單,***為字母與數(shù)字的隨機組合。但大量的密碼,若不借助自動生成,則其編排是Oracle ERP 系統(tǒng)中應(yīng)用系統(tǒng)用戶(指各子系統(tǒng)的用戶,非指具體應(yīng)用用戶)同時也是Oracle 數(shù)據(jù)庫用戶(如應(yīng)收模塊,用戶為 AR,AR既是數(shù)據(jù)庫用戶,又是應(yīng)用用戶),而且,只有 applsyspub(登錄系統(tǒng)的公用用戶),applsys(應(yīng)用基礎(chǔ)用戶),apps(具體應(yīng)用操作用戶)為必須為應(yīng)用系統(tǒng)中密碼與數(shù)據(jù)庫密碼一致外,其它應(yīng)用的Oracle用戶密碼可以與應(yīng)用系統(tǒng)中密碼中不一致,只需在對應(yīng)用系統(tǒng)進行打 patch 工作時才需將其改為一致。因而,可在打 patch 前,在應(yīng)用系統(tǒng)中將應(yīng)用系統(tǒng)用戶密碼修改為與數(shù)據(jù)庫一致即可,平時不用修改其密碼,這樣一則減少了工作量,二則加強了系統(tǒng)的安全性。
更改數(shù)據(jù)庫用戶密碼可通過在 sqlplus 執(zhí)行 alter user identified by 密碼 的命令而實現(xiàn),因而,可以通過自動生成密碼腳本的方式,高效地完成密碼的更改工作。而 Unix 用密碼則由于需由管理員負責更改密碼的并不多,故可在自動生成后,手工進行修改。
為了生成較為復雜的密碼,同時提高工作效率,我用 Excel 自帶的 VBA 編寫了一個小腳本,運行該程序,則自動生成一個更改用戶密碼的腳本,同時,將用戶密碼記錄在工作表上,以便于打印出來,保存在密碼本中,做為記錄。 首先,需在工作表中***列輸入各個要修改密碼的數(shù)據(jù)庫用戶的用戶名,在第三列輸入各然后,運行腳本 gen_pass_oracle ,則自動生成Oracle 用戶的相應(yīng)的密碼;運行腳本 gen_pass_unix ,則自動生成unix 操作系統(tǒng)用戶的相應(yīng)的密碼。生成的Oracle用戶密碼保存在 change_pass.sql 中,可在 sqlplus 中調(diào)用該腳生成的Unix 用戶密碼保存在 change_pass.txt 中,需手工逐個地更改密碼。
可通過在程序首部修改 pass_length 的值的方法,確定生成的密碼的長度;可通過在程序首部修改 start_asc 的方法,確定密碼的組成 0-9,A-Z還是僅 A-Z 其主要實現(xiàn)為:通過檢查工作表中每一行第1列(或第3列)是否為空,判斷是否結(jié)束密碼生成工作。若非空,即有用戶名,則進行循環(huán),生成在程序頭部定義的指定長度的密碼串。密碼串中的字符為通過起始字符的 ascii 值加上隨機數(shù)產(chǎn)生的隨機值得到的新的 ascii 值,再將其轉(zhuǎn)換為字符型,并加入密碼串中。當密碼串的長度達到指定長度時,將其組合為一個 sql 語句寫入文件中,同時,在該行的第2列(或第4列)中寫入該密碼串。 同時,考慮到在 Excel 中會將“=”開頭的字符串當作公式對待,故,在生成密碼串時,將等于"="的ascii 值過濾。用類似方法,可使生成的密碼串中不包含其它不想包含的字符。
通過使用這種方式,生成并修改密碼的工作量得到大大減少,安全性得到提高。
實際上,這種方法產(chǎn)生的密碼不限于 unix 與 Oracle, 可用于各種操作系統(tǒng)中重要用戶
- Sub gen_pass_app()
- Dim bit_count as integer ’循環(huán)變量, 密碼中位數(shù)計數(shù)器
- dim row_num as integer ’需生成密碼的用戶名信息開始的行號
- dim rnd_base As Integer ’隨機數(shù)種子
- Dim char_value As Integer ’密碼中每個字符的 ascii 值
- Dim temp_str As String ’密碼串
- Dim username(50) As String ’用戶名
- dim pass_length as integer ’定義生成的密碼的長度
- dim start_asc as integer ’ 定義從哪個字符開始生成
- pass_length = 8 ’ 設(shè)定密碼長度為 8 位
- Rem start_asc = 48 ’ 設(shè)定密碼從 0 開始
- start_asc = 65 ’ 設(shè)定密碼從 A 開始
- rem 由于 Oracle 數(shù)據(jù)庫用戶密碼不區(qū)分大小寫,故,視所選擇的起始字母,決定隨機數(shù)
- rnd_base = 90 - start_asc
- ?
- rem 打開文件,用于輸出生成的改密碼的腳本
- Open "c:change_pass.sql" For Output As #1
- rem 同時,在工作表上記錄相應(yīng)的密碼,以便打印出來備作為記錄,此處為先寫標題
- Cells(1, 1) = "Username": Cells(1, 2) = "Password"
- Cells(1, 3) = "Username": Cells(1, 4) = "Password"
- rem 先生成 apps 的密碼,但腳本中加上注釋,因 apps密碼必須與應(yīng)用程序一起改
- rem 先初始化密碼串為空白
- temp_str = ""
- For bit_count = 1 To pass_length
- char_value = start_asc + Int(Rnd(1) * rnd_base)
- rem 此處為為防=號引起 excel 誤認為是公式,從而程序出錯。
- If char_value = 61 Then
- char_value = 62
- End If
- rem 組合成密碼
- temp_strtemp_str = temp_str + Chr$(char_value)
- Next bit_count
- rem 將生成的 apps 密碼輸出到腳本文件
- Print #1, "REM alter user apps" + " identified by " + temp_str + ";"
- rem 同時,記錄在工作表上
- Cells(2, 3) = "APPS": Cells(2, 4) = temp_str
- rem 需生成密碼的用戶名從 row_num 行開始
- row_num = 2
- rem 若***列非空,則創(chuàng)建密碼,否則退出 Do While Cells(row_num, 1) <> ""
- temp_str = ""
- For bit_count = 1 To pass_length
- char_value = start_asc + Int(Rnd(1) * rnd_base)
- If char_value = 61 Then
- char_value = 62
- End If
- temp_strtemp_str = temp_str + Chr$(char_value)
- Next bit_count
- Print #1, "alter user " + Cells(row_num, 1) + " identified by " + temp_str +
- Cells(row_num, 2) = temp_str
- rem 獲取下一行
- row_numrow_num = row_num + 1
- Loop
- rem 所有用戶的密碼已生成,關(guān)閉文件
- Close #1
- End Sub
- ?
- Sub gen_pass_unix()
- Dim bit_count as integer ’循環(huán)變量, 密碼中位數(shù)計數(shù)器
- dim row_num as integer ’需生成密碼的用戶名信息開始的行號
- dim rnd_base As Integer ’隨機數(shù)種子
- Dim char_value As Integer ’密碼中每個字符的 ascii 值
- Dim temp_str As String ’密碼串
- Dim username(50) As String ’用戶名
- dim pass_length as integer ’定義生成的密碼的長度
- dim start_asc as integer ’ 定義從哪個字符開始生成
- pass_length = 8
- start_asc = 48 ’ 0
- Rem start_asc = 65 ’ A
- rem 由于 unix 密碼支持大小寫,故,視所選擇的起始字母,決定隨機數(shù)的范圍,以確保
- rnd_base = 122 - start_asc
- ?
- rem 打開文件,用于輸出生成的改密碼的腳本
- Open "c:change_pass.txt" For Output As #1
- rem 同時,在工作表上記錄相應(yīng)的密碼,以便打印出來備作為記錄,此處為先寫標題
- Cells(1, 3) = "Username": Cells(1, 4) = "Password"
- row_num = 2
- rem 若第三列非空,則創(chuàng)建密碼,否則退出 Do While Cells(row_num, 3) <> ""
- temp_str = ""
- For bit_count = 1 To pass_length
- char_value = start_asc + Int(Rnd(1) * rnd_base)
- rem 91-94 為 [ ] ^ _ `
- rem 因不愿在unix 密碼串中包含該類字符,故,通過減少已增大的計數(shù)器以保證密碼的長度,同時,不將其計入密碼串中,以排除它們
- If (char_value >= 58 And char_value <= 64) Or (char_value >= 91 And char_value <= 96) Then
- bit_countbit_count = bit_count - 1
- Else
- temp_strtemp_str = temp_str + Chr$(char_value)
- End If
- Next bit_count
- Print #1, "user " + Cells(row_num, 1) + " : " + temp_str
- Cells(row_num, 4) = temp_str
- rem 獲取下一行
- row_numrow_num = row_num + 1
- Loop
- rem 所有用戶的密碼已生成,關(guān)閉文件
- Close #1
- End Sub
文章標題:修改Oracle用戶密碼的方法
標題來源:http://m.fisionsoft.com.cn/article/dhijppj.html


咨詢
建站咨詢
