修改Oracle用户密码的方法

如何修改Oracle用户密码呢?这是很多人都提到过的问题,下面就教您一个Oracle用户密码的方法,希望对您能有所帮助。

做为Unix 系统管理员,Oracle 数据库管理员,Oracle ERP 应用系统管理员,需要不定期地更改各系统中重要用户的密码,以保证系统及数据的安全。 

但是,由于所管理的小型机及数据库、应用系统较多,每月更改近百个用户的密码,不论是密码的生成,还是密码的更改,工作量均很大,尤其是密码的生成,为了加强安全性,密码不能太简单,***为字母与数字的随机组合。但大量的密码,若不借助自动生成,则其编排是Oracle ERP 系统中应用系统用户(指各子系统的用户,非指具体应用用户)同时也是Oracle 数据库用户(如应收模块,用户为 AR,AR既是数据库用户,又是应用用户),而且,只有 applsyspub(登录系统的公用用户),applsys(应用基础用户),apps(具体应用操作用户)为必须为应用系统中密码与数据库密码一致外,其它应用的Oracle用户密码可以与应用系统中密码中不一致,只需在对应用系统进行打 patch 工作时才需将其改为一致。因而,可在打 patch 前,在应用系统中将应用系统用户密码修改为与数据库一致即可,平时不用修改其密码,这样一则减少了工作量,二则加强了系统的安全性。 

更改数据库用户密码可通过在 sqlplus 执行 alter user identified by 密码 的命令而实现,因而,可以通过自动生成密码脚本的方式,高效地完成密码的更改工作。而 Unix 用密码则由于需由管理员负责更改密码的并不多,故可在自动生成后,手工进行修改。 
为了生成较为复杂的密码,同时提高工作效率,我用 Excel 自带的 VBA 编写了一个小脚本,运行该程序,则自动生成一个更改用户密码的脚本,同时,将用户密码记录在工作表上,以便于打印出来,保存在密码本中,做为记录。 首先,需在工作表中***列输入各个要修改密码的数据库用户的用户名,在第三列输入各然后,运行脚本 gen_pass_oracle ,则自动生成Oracle 用户的相应的密码;运行脚本 gen_pass_unix ,则自动生成unix 操作系统用户的相应的密码。生成的Oracle用户密码保存在 change_pass.sql 中,可在 sqlplus 中调用该脚生成的Unix 用户密码保存在 change_pass.txt 中,需手工逐个地更改密码。 

可通过在程序首部修改 pass_length 的值的方法,确定生成的密码的长度;可通过在程序首部修改 start_asc 的方法,确定密码的组成 0-9,A-Z还是仅 A-Z 其主要实现为:通过检查工作表中每一行第1列(或第3列)是否为空,判断是否结束密码生成工作。若非空,即有用户名,则进行循环,生成在程序头部定义的指定长度的密码串。密码串中的字符为通过起始字符的 ascii 值加上随机数产生的随机值得到的新的 ascii 值,再将其转换为字符型,并加入密码串中。当密码串的长度达到指定长度时,将其组合为一个 sql 语句写入文件中,同时,在该行的第2列(或第4列)中写入该密码串。 同时,考虑到在 Excel 中会将“=”开头的字符串当作公式对待,故,在生成密码串时,将等于”=”的ascii 值过滤。用类似方法,可使生成的密码串中不包含其它不想包含的字符。

通过使用这种方式,生成并修改密码的工作量得到大大减少,安全性得到提高。 
实际上,这种方法产生的密码不限于 unix 与 Oracle, 可用于各种操作系统中重要用户

  1. Sub gen_pass_app()    
  2. Dim bit_count as integer ’循环变量, 密码中位数计数器    
  3. dim row_num as integer ’需生成密码的用户名信息开始的行号    
  4. dim rnd_base As Integer ’随机数种子    
  5. Dim char_value As Integer ’密码中每个字符的 ascii 值    
  6. Dim temp_str As String ’密码串    
  7. Dim username(50) As String ’用户名    
  8. dim pass_length as integer ’定义生成的密码的长度    
  9. dim start_asc as integer ’ 定义从哪个字符开始生成    
  10. pass_length = 8 ’ 设定密码长度为 8 位    
  11. Rem start_asc = 48 ’ 设定密码从 0 开始    
  12. start_asc = 65 ’ 设定密码从 A 开始    
  13. rem 由于 Oracle 数据库用户密码不区分大小写,故,视所选择的起始字母,决定随机数   
  14. rnd_base = 90 - start_asc    
  15. ?    
  16. rem 打开文件,用于输出生成的改密码的脚本    
  17. Open "c:change_pass.sql" For Output As #1    
  18. rem 同时,在工作表上记录相应的密码,以便打印出来备作为记录,此处为先写标题    
  19. Cells(1, 1) = "Username": Cells(1, 2) = "Password"    
  20. Cells(1, 3) = "Username": Cells(1, 4) = "Password"    
  21. rem 先生成 apps 的密码,但脚本中加上注释,因 apps密码必须与应用程序一起改    
  22. rem 先初始化密码串为空白    
  23. temp_str = ""    
  24. For bit_count = 1 To pass_length    
  25. char_value = start_asc + Int(Rnd(1) * rnd_base)    
  26. rem 此处为为防=号引起 excel 误认为是公式,从而程序出错。    
  27. If char_value = 61 Then    
  28. char_value = 62    
  29. End If    
  30. rem 组合成密码    
  31. temp_strtemp_str = temp_str + Chr$(char_value)    
  32. Next bit_count    
  33. rem 将生成的 apps 密码输出到脚本文件    
  34. Print #1, "REM alter user apps" + " identified by " + temp_str + ";"    
  35. rem 同时,记录在工作表上    
  36. Cells(2, 3) = "APPS": Cells(2, 4) = temp_str    
  37. rem 需生成密码的用户名从 row_num 行开始    
  38. row_num = 2    
  39. rem 若***列非空,则创建密码,否则退出   Do While Cells(row_num, 1) <> ""    
  40. temp_str = ""    
  41. For bit_count = 1 To pass_length    
  42. char_value = start_asc + Int(Rnd(1) * rnd_base)    
  43. If char_value = 61 Then    
  44. char_value = 62    
  45. End If    
  46. temp_strtemp_str = temp_str + Chr$(char_value)    
  47. Next bit_count    
  48. Print #1, "alter user " + Cells(row_num, 1) + " identified by " + temp_str +    
  49. Cells(row_num, 2) = temp_str    
  50. rem 获取下一行    
  51. row_numrow_num = row_num + 1    
  52. Loop    
  53. rem 所有用户的密码已生成,关闭文件    
  54. Close #1    
  55. End Sub    
  56. ?    
  57. Sub gen_pass_unix()    
  58.   Dim bit_count as integer ’循环变量, 密码中位数计数器    
  59. dim row_num as integer ’需生成密码的用户名信息开始的行号    
  60. dim rnd_base As Integer ’随机数种子    
  61. Dim char_value As Integer ’密码中每个字符的 ascii 值    
  62. Dim temp_str As String ’密码串    
  63. Dim username(50) As String ’用户名    
  64. dim pass_length as integer ’定义生成的密码的长度    
  65. dim start_asc as integer ’ 定义从哪个字符开始生成    
  66. pass_length = 8    
  67. start_asc = 48 ’ 0    
  68. Rem start_asc = 65 ’ A    
  69. rem 由于 unix 密码支持大小写,故,视所选择的起始字母,决定随机数的范围,以确保   
  70. rnd_base = 122 - start_asc    
  71. ?    
  72. rem 打开文件,用于输出生成的改密码的脚本    
  73. Open "c:change_pass.txt" For Output As #1    
  74.   rem 同时,在工作表上记录相应的密码,以便打印出来备作为记录,此处为先写标题    
  75. Cells(1, 3) = "Username": Cells(1, 4) = "Password"    
  76. row_num = 2    
  77. rem 若第三列非空,则创建密码,否则退出   Do While Cells(row_num, 3) <> ""    
  78. temp_str = ""    
  79. For bit_count = 1 To pass_length    
  80. char_value = start_asc + Int(Rnd(1) * rnd_base)    
  81.   rem 91-94 为 [ ] ^ _ `    
  82. rem 因不愿在unix 密码串中包含该类字符,故,通过减少已增大的计数器以保证密码的长度,同时,不将其计入密码串中,以排除它们    
  83. If (char_value >= 58 And char_value <= 64) Or (char_value >= 91 And char_value <= 96) Then    
  84. bit_countbit_count = bit_count - 1    
  85. Else    
  86. temp_strtemp_str = temp_str + Chr$(char_value)    
  87. End If    
  88. Next bit_count    
  89. Print #1, "user " + Cells(row_num, 1) + " : " + temp_str    
  90. Cells(row_num, 4) = temp_str    
  91. rem 获取下一行    
  92. row_numrow_num = row_num + 1    
  93. Loop    
  94. rem 所有用户的密码已生成,关闭文件    
  95. Close #1    
  96. End Sub  

 

 

 

 

【编辑推荐】

oracle多列子查询的实现

Oracle内存结构–SGA

oracle connect角色权限的变化

ORACLE数据库设置编码

oracle多表查询实例

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/275172.html<

(0)
运维的头像运维
上一篇2025-05-10 01:59
下一篇 2025-05-10 02:00

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注