oracle password_veri oracle password
摘要:Oracle密码文件如何创建、使用和维护? Oracle关系数据库系统以其卓越的性能获得了广泛的应用,而保证数据库安全性是数据库管理工作的重要内容。本文在总结Oracle数据库安全管理工作的基础上,对...
发布日期:2020-10-16Oracle密码文件如何创建、使用和维护?
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:\ >ORAPWDFILE=PASSWORD = ENTRIES= 各命令参数的含义为: 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系统权限。
修改oracle 密码 登陆 试验次数
如果某用记登录密码输错,登录几次ORACLE数据库,则该用户可能被锁住。
出现错误提示:ORA-28000: the account is locked。
临时解决:手工对用户进行解锁。
SQL>alter user [username] account unlock;根本原因:数据库参数文件中设置了输错密码的次数,登录时当输错密码的次数超过所设置的次数时,则锁住该用户。
默认一般为10次。
输错密码锁住用户的设计原因:防止恶意的密码攻击。
根本解决方法:将允许尝试的次数改大或者设置成为无限次。
具体修改方法:1、修改FAILED_LOGIN_ATTEMPTS的值SQL>select * from dba_profiles where RESOURCE_NAME="FAILED_LOGIN_ATTEMPTS";PROFILE RESOURCE_NAME RESOURCE LIMIT-------------------- ------------------------------ -------- ----------DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10SQL>alter profile default limit failed_login_attempts 100;SQL>select * from dba_profiles where RESOURCE_NAME="FAILED_LOGIN_ATTEMPTS";PROFILE RESOURCE_NAME RESOURCE LIMIT-------------------- ------------------------------ -------- ----------DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 1002、修改为无限次尝试SQL>alter profile default limit failed_login_attempts unlimited;SQL>select * from dba_profiles where RESOURCE_NAME="FAILED_LOGIN_ATTEMPTS";PROFILE RESOURCE_NAME RESOURCE LIMIT-------------------- ------------------------------ -------- ----------DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
Oracle密码丢失解决方法有哪些呢?
在使用Oacle过各中经常会遇到密码丢失的时候,本文用两种试来解决这个问题。
一种方法: sqlplus " as sysda"SQLstatupSQLalte use system identified y oot123; 如果sqlplus " as sysda"不能进入,让输入密码,我输入原始密码和修改的密码后都不行的话,修改unix环境下: 1. $ORACLE_HOME\netwok\admin\SQLNET.ORA中为: SQLNET.AUTHENTICATION_SERVICES=(NTS) 重起数据库监听服务,就可以用操作系统认证sqlplus " as sysda"了,来进入你的数据库,从而轻而易举的搞定你的数据库了。
2.sqlplus nolog sqlconnect as sysda 第二种方法: 详细步骤如下: 一:查询视图V$PWFILE_USERS:select * fom V$PWFILE_USERS;记录下拥有 SYSOPER/SYSDBA系统权限的用户信息。
二:关闭数据库 shutdown immediate。
三:删除密码文件,文件路径一般为:ORACLE_HOME\DATABASE,文件名为PWD.ORA。
四:创建密码文件: ORAPWD FILE= PASSWORD = 五:向密码文件中增加用户: CONNECT SYS/intenal_use_passswod AS SYSDBA; 启动数据库实例并打开数据库; 创建相应用户帐号,对其授权授予 权限:GRANT SYSDBA TO use_name(如果先前数据库只有sys具有sysda权限,可不做这步)。
六:修改密码文件状态,默认密码文件的状态shaed,要将初始化参数里的REMOTE_LOGIN_PASSWORDFILE 设置成EXCLUSIVE。
破解Oracle密码忘记的具体方法是什么?
以下的文章主要介绍的是破解Oracle密码忘记的具体方法,其实对解决Oracle密码忘记是一件很容易的事情,本文主要是介绍了两种相关的解决方案,一种是ALTER USER (USERNAME) IDENTIFIED BY “密码”。
一种是CREATE USER (USERNAME) IDENTIFIED BY "密码";。
首先 在 CMD下 输入 SQLPLUS /NOLOG 然后再在出来的界面中打入 CONN /AS SYSDBA 这样就会以本地系统登录的用户 为信任用户进入数据库的操作 解决我这个问题的方式有两种 一个是: ALTER USER (USERNAME) IDENTIFIED BY “密码”; 这个是 可以改变USERNAME的密码 当然这个USERNAME 必须已经存在的 另一种是: CREATE USER (USERNAME) IDENTIFIED BY "密码"; 改变用户权限的命令是: GRANT ROLES TO (USERNAME);
ORACLE密码策略验证程序是什么?
ORACLE密码策略非常重要,下面就为您详细介绍ORACLE密码策略验证程序,如果您对ORACLE密码策略方面感兴趣的话,不妨一看。
密码字符串要求: -- Check if the passwod is same as the usename -- Check fo the minimum length of the passwod -- Check if the passwod contains at least one lette, one digit and one -- Check if the passwod diffes fom the pevious passwod y at least CREATE OR REPLACE FUNCTION SYS.veify_function (usename vacha2, passwod vacha2, old_passwod vacha2) RETURN oolean IS n oolean; m intege; diffe intege; isdigit oolean; ischaoolean; ispunct oolean; digitaay vacha2(20); punctaay vacha2(25); chaaay vacha2(52); BEGIN digitaay:= "0123456789"; chaaay:= "acdefghijklmnopqstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; punctaay:="!"#$%&()``*+,-:;?_"; -- Check if the passwod is same as the usename IF NLS_LOWER(passwod) = NLS_LOWER(usename) THEN aise_application_eo(-20001, "Passwod same as o simila to use"); END IF; -- Check fo the minimum length of the passwod IF length(passwod) 8 THEN aise_application_eo(-20002, "Passwod length less than 8"); END IF; -- Check if the passwod is too simple. A dictionay of wods may e -- maintained and a check may e made so as not to allow the wods -- that ae too simple fo the passwod. IF NLS_LOWER(passwod) IN ("welcome", "dataase", "account", "use", "passwod", "oacle", "compute", "acd") THEN aise_application_eo(-20002, "Passwod too simple"); END IF; -- Check if the passwod contains at least one lette, one digit and one -- punctuation mak. -- 1. Check fo the digit 1.isdigit:=FALSE; 2.m := length(passwod); 3.FOR i IN 1..10 LOOP 4.FOR j IN 1..m LOOP 5.IF sust(passwod,j,1) = sust(digitaay,i,1) THEN 6.isdigit:=TRUE; 7.GOTO findcha; 8.END IF; 9.END LOOP; 10.END LOOP; 11.IF isdigit = FALSE THEN
oracle初始密码是什么呀?
在 Oacle 数据库实例的初始化参数文件中,此参数控制着密码文件的使用及其状态。
它可以有以下几个选项: NONE :指示 Oacle 系统不使用密码文件,特权用户的登录通过操作系统进行身份验证; EXCLUSIVE :指示只有一个数据库实例可以使用此密码文件。
只有在此设置下的密码文件可以包含有除 INTERNAL / SYS 以外的用户信息,即允许将系统权限 SYSOPER / SYSDBA 授予除 INTERNAL / SYS 以外的其他用户。
SHARED :指示可有多个数据库实例可以使用此密码文件。
在此设置下只有 INTERNAL / SYS 帐号能被密码文件识别,即使文件中存有其他用户的信息,也不允许他们以 SYSOPER / SYSDBA 的权限登录。
此设置为缺省值。
在 REMOTE_LOGIN_PASSWORDFILE 参数设置为 EXCLUSIVE 、 SHARED 情况下, Oacle 系统搜索密码文件的次序为:在系统注册库中查找 ORA_SID_PWFILE 参数值(它为密码文件的全路径名);若未找到,则查找 ORA_PWFILE 参数值;若仍未找到,则使用缺省值 ORACLE_HOME \ DATABASE \ PWDSID.ORA ;其中的 SID 代表相应的 Oacle 数据库系统标识符。
oracle 查看所有用户及密码
SQL>select username from dba_users;USERNAME------------------------------------------------------------SYSSYSTEMANONYMOUSHRMDSYSOUTLNDIPTSMSYSFLOWS_FILESCTXSYSDBSNMPUSERNAME------------------------------------------------------------FLOWS_020100XDB13 rows selected. 密码理论上,是不能让你直接看到明文的。
如何应对被公开的Oracle口令加密算法
由于Oracle数据库被广泛应用,其口令加密算法也是备受关注。
最早在1993年comp.databases.oracle.server新闻组中有人披露了加密算法的大部分细节。
十年后,一本名为《Special Ops Host and Network Security for Microsoft, Unix and Oracle》的书中补全了算法最重要的一个环节——DES算法的KEY。
至此,口令加密算法已无秘密可言。
接踵而来的是互联网上出现多个了Oracle口令破解工具。
Oracle在2007年推出的最新版本11g中,使用了新的更安全的加密算法,但是新算法的细节很快又在互联网上被公开。
为提供兼容,11g版本保留了11g以前版本使用的加密口令,利用这一漏洞仍然可以对11g版本的加密口令进行破解。
到底怎样才能保证数据库口令的安全呢?本文首先介绍Oracle数据库各版本口令加密算法的内容,然后针对算法重点介绍加强数据库安全性的应对措施。
口令加密算法 从Oracle7到Oracle 10gR2,使用DES算法对口令进行加密。
对算法进行分析,可以得出如下结论:口令不区分大小写,任意大小写组合均可登录;由于只使用固定KEY,只要用户名和口令相同,在任一DB中存放的加密口令都相同;由于采用了用户名和口令串接的方式,所以用户aaa、口令bbbccc的加密值与用户aaabbb、口令ccc完全相同。
Oracle 11g版本的加密口令存放在SYS.USER$表中的SPARE4列中,而PASSWORD列中仍保留以前版本加密口令。
由于客户端计算加密口令需要用到SALT,在建立连接时,服务器端将SALT明文传送给客户端程序。
Oracle 11g中新的口令加密算法中区分大小写;由于加入了随机数SALT,两个不同用户的口令即便完全相同,计算得到的SHA1的散列值也不同;不同DB中相同用户相同口令,SHA1散列值也可能不同。
目前,大多数破解工具的工作方式是得到加密口令后,对每一个可能的口令进行加密计算,比较计算结果而确定是否正确。
由此,抵御口令破解可以从三个方面着手:防止加密口令外泄;在加密口令落入黑客手中后,口令也是不可破解的,或尽量增加破解的时间;即便是口令被破解,也是无用的,不能存取数据库。
防止加密口令泄露 1.应用“最少权限”原则,尽量限制可存取加密口令用户的人数 在数据库中检查具有存取SYS.USER$或DBA_USERS权限的用户,并从不需要的用户中收回权限。
但是操作并不简单,这也是数据库管理工作的特点。
每一厂商的软件中都实现了SQL标准之外的扩充,并且每一版本都有差异。
限于篇幅,不可能对所有本文中建议的措施进行详细的解释说明,仅以此处检查权限为例展示DBA工作的复杂性。
本文中如未说明,则默认版本为11g。
应用于11g以前版本时,请读者确认是否需要修改。
检查权限主要的工具是数据字典视图(也可以直接存取SYS用户的基表,但基表的定义没有公布,官方不提供技术支持)。
视图DBA_TAB_PRIVS存放了数据库中数据对象上的授权信息。
假定用户A1和A2可以存取SYS.USER$表,检查在SYS用户USER$上有存取权限的用户,可执行如下语句: SELECT GRANTEE FROM DBA_TAB_PRIVS WHERE TABLE_NAME="USER$"; 我们已经知道用户A1和A2,都可以存取SYS.USER$表,但为什么在上面查询结果中没有出现呢?这是因为在Oracle的权限管理中,对一个表的存取权限还可以通过系统权限或角色赋予,而DBA_TAB_PRIVS中仅列出了直接的对象权限的授予信息。
对于SYS.USER$表而言,系统权限SELECT ANY DICTIONARY和角色DBA都包含了这一表的存取权限。
所以完整列出所有可存取这一表的用户应增加下面两条查询语句的结果: SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE="SELECT ANY DICTIONARY"; SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE="DBA"; 通过上面的查询语句,还是会遗漏某些用户。
如果把DBA角色授权给另一角色Admin,然后又将Admin角色授权给另一用户NEWU,则此用户可存取SYS.USER$表,但在上述三个查询中并没有直接列出NEWU的名字(角色Admin会出现在第三个查询语句的结果中)。
显然,Oracle的授权构成了一棵树,完整的信息需要一段PL/SQL程序来完成。
(对于11g以前版本,还需要检查对DBA_USERS视图有存取权限的用户和角色。
SELECT_CATALOG_ROLE角色如被授权,则可以存取所有数据字典视图,但不能存取SYS的基表。
) 2.设定对加密口令存取的审计 如果当前系统中只有SYSDBA可以存取USER$,则一个变通办法是审计SYSDBA的所有操作,其中也包括对USER$的存取。
设置初始化参数audit_sys_operations =TRUE,重新启动数据库后激活对SYSDBA操作的审计。
审计文件的存放位置为: 11g版本中为:$ORACLE_BASE/admin/SID/ adump/ *.aud 11g以前版本为: $ORACLE_HOME/rdbms/audit/ *.aud。
严格限制和监视SYSDBA用户活动的最好办法是使用Oracle Database Vault组件。
3.在操作系统级限制对数据库数据文件的存取 SYSDBA用户的加密口令存放在$ORACLE_HOME/dbs下的口令文件orapw〈SID〉中。
SYS...
Oracle数据库SYS密码怎样找回?
有两种方法找回sys密码: 1.用windows验证(请确认OacleBaseDioa92netwokadminsqlnet.oa文件中 SQLNET.AUTHENTICATION_SERVICES= (NTS) 这行未被注释),然后敲入 sql connect sys随意密码 as sysda; sql alte use sys identified y "new_passwod"; 2.通过oapwd命令重新创建密码文件(每个DB有自己的密码文件) 先把OacleBaseDioa92dataasepwd+DBSID名.oa改成另外的文件名, 进入sqlplus, sql oapwd.exe file=OacleBaseDioa92dataase pwd myoacle.oa passwod=newpwd(enties=10); 将OacleBaseDioa92dataasemyoacle.oa文件名改为pwd+DBSID名.oa