知识大全 一个生成Oracle用户密码的通用小程序

Posted 密码

篇首语:苦心人天不负,卧薪尝胆,三千越甲可吞吴。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 一个生成Oracle用户密码的通用小程序相关的知识,希望对你有一定的参考价值。

一个生成Oracle用户密码的通用小程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  做为Unix 系统管理员 Oracle 数据库管理员 Oracle ERP 应用系统管理员 需要不定期地更改各系统中重要用户的密码 以保证系统及数据的安全   但是 由于所管理的小型机及数据库 应用系统较多 每月更改近百个用户的密码 不论是密码的生成 还是密码的更改 工作量均很大 尤其是密码的生成 为了加强安全性 密码不能太简单 最好为字母与数字的随机组合 但大量的密码 若不借助自动生成 则其编排是十分困难的   Oracle ERP 系统中应用系统用户(指各子系统的用户 非指具体应用用户)同时也是Oracle 数据库用户(如应收模块 用户为 AR AR既是数据库用户 又是应用用户) 而且 只有 applsyspub(登录系统的公用用户) applsys(应用基础用户) apps(具体应用操作用户)为必须为应用系统中密码与数据库密码一致外 其它应用的数据库用户密码可以与应用系统中密码中不一致 只需在对应用系统进行打 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 的方法 确定密码的组成 A Z还是仅 A Z   其主要实现为 通过检查工作表中每一行第 列(或第 列)是否为空 判断是否结束密码生成工作 若非空 即有用户名 则进行循环 生成在程序头部定义的指定长度的密码串 密码串中的字符为通过起始字符的 ascii 值加上随机数产生的随机值得到的新的 ascii 值 再将其转换为字符型 并加入密码串中 当密码串的长度达到指定长度时 将其组合为一个 sql 语句写入文件中 同时 在该行的第 列(或第 列)中写入该密码串   同时 考虑到在 Excel 中会将 = 开头的字符串当作公式对待 故 在生成密码串时 将等于 = 的ascii 值过滤 用类似方法 可使生成的密码串中不包含其它不想包含的字符   通过使用这种方式 生成并修改密码的工作量得到大大减少 安全性得到提高   实际上 这种方法产生的密码不限于 unix 与 Oracle 可用于各种操作系统中重要用户的密码的生成及各种数据库 应用系统的用户密码生成   Sub gen_pass_app()   Dim bit_count as integer 循环变量 密码中位数计数器   dim row_num as integer 需生成密码的用户名信息开始的行号   dim rnd_base As Integer 随机数种子   Dim char_value As Integer 密码中每个字符的 ascii 值   Dim temp_str As String 密码串   Dim username( ) As String 用户名   dim pass_length as integer 定义生成的密码的长度   dim start_asc as integer 定义从哪个字符开始生成   pass_length = 设定密码长度为 位   Rem start_asc = 设定密码从 开始   start_asc = 设定密码从 A 开始   rem 由于 Oracle 数据库用户密码不区分大小写 故 视所选择的起始字母 决定随机数的范围 以确保至 Z 结束   rnd_base = start_asc      rem 打开文件 用于输出生成的改密码的脚本   Open c:\\change_pass sql For Output As #   rem 同时 在工作表上记录相应的密码 以便打印出来备作为记录 此处为先写标题   Cells( ) = Username : Cells( ) = Password   Cells( ) = Username : Cells( ) = Password   rem 先生成 apps 的密码 但脚本中加上注释 因 apps密码必须与应用程序一起改   rem 先初始化密码串为空白   temp_str =   For bit_count = To pass_length   char_value = start_asc + Int(Rnd( ) * rnd_base)   rem 此处为为防=号引起 excel 误认为是公式 从而程序出错   If char_value = Then   char_value =   End If   rem 组合成密码   temp_str = temp_str + Chr$(char_value)   Next bit_count   rem 将生成的 apps 密码输出到脚本文件   Print # REM alter user apps + identified by + temp_str + ;   rem 同时 记录在工作表上   Cells( ) = APPS : Cells( ) = temp_str   rem 需生成密码的用户名从 row_num 行开始   row_num =   rem 若第一列非空 则创建密码 否则退出   Do While Cells(row_num ) <>   temp_str =   For bit_count = To pass_length   char_value = start_asc + Int(Rnd( ) * rnd_base)   If char_value = Then   char_value =   End If   temp_str = temp_str + Chr$(char_value)   Next bit_count   Print # alter user + Cells(row_num ) + identified by + temp_str + ;   Cells(row_num ) = temp_str   rem 获取下一行   row_num = row_num +   Loop   rem 所有用户的密码已生成 关闭文件   Close #   End Sub      Sub gen_pass_unix()   Dim bit_count as integer 循环变量 密码中位数计数器   dim row_num as integer 需生成密码的用户名信息开始的行号   dim rnd_base As Integer 随机数种子   Dim char_value As Integer 密码中每个字符的 ascii 值   Dim temp_str As String 密码串   Dim username( ) As String 用户名   dim pass_length as integer 定义生成的密码的长度   dim start_asc as integer 定义从哪个字符开始生成   pass_length =   start_asc =   Rem start_asc = A   rem 由于 unix 密码支持大小写 故 视所选择的起始字母 决定随机数的范围 以确保至 z 结束   rnd_base = start_asc      rem 打开文件 用于输出生成的改密码的脚本   Open c:\\change_pass txt For Output As #   rem 同时 在工作表上记录相应的密码 以便打印出来备作为记录 此处为先写标题   Cells( ) = Username : Cells( ) = Password   row_num =   rem 若第三列非空 则创建密码 否则退出   Do While Cells(row_num ) <>   temp_str =   For bit_count = To pass_length   char_value = start_asc + Int(Rnd( ) * rnd_base)   rem 为 : ; < = > ? @   rem 为 [ \\ ] ^ _ `   rem 因不愿在unix 密码串中包含该类字符 故 通过减少已增大的计数器以保证密码的长度 同时 不将其计入密码串中 以排除它们   If (char_value >= And char_value <= ) Or (char_value >= And char_value <= ) Then   bit_count = bit_count   Else   temp_str = temp_str + Chr$(char_value)   End If   Next bit_count   Print # user + Cells(row_num ) + : + temp_str   Cells(row_num ) = temp_str   rem 获取下一行   row_num = row_num +   Loop   rem 所有用户的密码已生成 关闭文件   Close #   End Sub cha138/Article/program/Oracle/201311/18021

相关参考

知识大全 修改Oracle用户密码

修改Oracle用户密码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  有时候我们可能不知道一个

知识大全 oracle修改用户登录密码

  使用oracle用户登录连接数据库  [oracle@wuzj~]$sqlplus/nolog  SQL*Plus:ReleaseProductiononThuFeb::  Copyright(c

知识大全 用 SQL Server从应用程序生成用户友好的报表

用SQLServer从应用程序生成用户友好的报表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 oracle数据库生成随机数的函数

  在Oracle中的DBMS_RANDOM程序包中封装了一些生成随机数和随机字符串的函数其中常用的有以下两个  DBMS_RANDOMVALUE函数  该函数用来产生一个随机数有两种用法  产生一个

知识大全 管理好密码文件对执行数据库管理的重要性[1]

  在Oracle系统中用户使用特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle有两种身份验证方法  使用与操作系统集成的身份验证  使用Oracle数据库的密码文件进行

知识大全 支持中文的验证码生成程序.

  一个验证图形生成程序支持中文的验证码生成程序写的时候没有仔细看可能有小问题但是运行没有任何问题  使用方法:   <tr><td>&n

知识大全 asp用户注册实例程序

  asp教程用户注册实例程序  建立access数据库教程dbmdb在其中建立数据表user字段分别为u_uid(自动)u_user(用户名文本型)u_pass(密码文本型)四建立接收registe

知识大全 第一个delphi for php的小程序

  今天化了一个小时写了一个小程序我的delphiphp的第一个程序功能是在浏览器上显示一道简单的加法题用户可以输入答案电脑会告诉你正确或者错误然后可以再来一题功能很简单主要为了熟悉delphifor

知识大全 入侵oracle数据库时常用的操作命令整理

  最近遇到一个使用了Oracle数据库的服务器在狂学Oracle+请教高手后终于搞到了网站后台管理界面的所有用户密码我发现Oracle操作起来真是太麻烦为了兄弟们以后少走些弯路我把入侵当中必需的命令

知识大全 一个相当独立的通用分页控件c#源码

  通用ASPNET数据分页控件  对于几乎所有的数据表现Web应用来说组织好数据的显示方式避免给用户带来混乱的感觉就是最主要的目标之一每个页面显示条记录当然是可以接受的但每页显示条记录就很容易给用户