[转]Oracle 10g/11g 密码策略 用户口令 大小写敏感

一. Oracle 10g


1.1 说明


在Oracle 10g下,默认情况下,密码是不区分大小写的。这个是由于密码文件的默认参数有关。

C:\Users\Administrator.DavidDai>orapwd

Usage: orapwd file=<fname>entries=<users> force=<y/n>
ignorecase=<y/n>nosysdba=<y/n>

where

file - name of password file (required),

password - password for SYS will be prompted if not
specified at commandline,

entries - maximum number of distinct DBA (optional),

force - whether to overwrite existing file (optional),

ignorecase - passwords are case-insensitive (optional),

nosysdba - whether to shut out the SYSDBA logon (optional
Database Vaultonly).

There must be no spaces around the equal-to (=) character.

这个是口令文件创建命令的参数说明, 这里我们看一个参数:

ignorecase - passwords are case-insensitive (optional),

注意:

这个参数用来指定大小写是否敏感,而默认情况是insentive,
即不敏感,所以对于Oracle10g的数据库,默认情况下,密码是不区分大小写的。但是在Oracle
10g中,我们无法使用这个参数,在后续的测试用有说明。

虽然口令文件里只保存具有SYSDBA和OPER权限的用户,但是其他用户也会受影响。

1.2 示例


这里我们在Oracle 10g上做一个测试,为了避免OS认证的影响,我们这里可以禁用OS认证。

Oracle
OS认证 口令文件 密码丢失处理

http://blog.csdn.net/tianlesoftware/article/details/4698293

SQL> select * from v$version;

BANNER

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

Oracle Database 10g Enterprise EditionRelease 10.2.0.5.0 - 64bi

PL/SQL Release 10.2.0.5.0 - Production

CORE   10.2.0.5.0     Production

TNS for Linux: Version 10.2.0.5.0 -Production

NLSRTL Version 10.2.0.5.0 - Production

--创建2个测试用户:

SQL> create user dave1 identified byDavE;

User created.

SQL> create user dave2 identified byDavE;

User created.

SQL> grant connect,resource to dave1;

Grant succeeded.

SQL> grant connect,resource to dave2;

Grant succeeded.

SQL> grant sysdba,sysoper to dave1;

Grant succeeded.

SQL> select * from v$pwfile_users;

USERNAME            
   SYSDB SYSOP

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

SYS                    
       TRUE  TRUE

DAVE1              
       TRUE TRUE

SQL> conn dave1/dave;

Connected.

SQL> conn dave2/dave;

Connected.

SQL> conn
dave1/dAVe;

Connected.

SQL> conn dave1/dave1;

ERROR:

ORA-01017: invalid username/password; logondenied

Warning: You are no longer connected toORACLE.

从这里可以看出,在Oracle 10g下,密码是不分大小写。

--这里我们可以继续测试:

我们将sysdba 权限从dave1用户revoke,然后测试:

SQL> conn / as sysdba;

Connected.

SQL> revoke sysdba,sysoper from dave1;

Revoke succeeded.

SQL> select * from v$pwfile_users;

USERNAME            
       SYSDB SYSOP

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

SYS                    
       TRUE TRUE

我们继续使用dave1进行测试:

SQL> conn dave1/dave;

Connected.

SQL> conn dave1/dave1;

ERROR:

ORA-01017: invalid username/password; logondenied

Warning: You are no longer connected toORACLE.

从这里我们可以看出,只是简单的revoke 并不能解决问题,我们重建一个口令文件,然后测试一下看看:

rac2:/u02/app/oracle/product/10.2.0/db_1/dbs>orapwd file=orapwanqing
password=oracle force=y;

SQL> conn dave1/dave;

Connected.

--还是可以继续使用,不分大小写

把DB 重启一下看看:

SQL> shutdown immediate

ORA-01031: insufficient privileges

SQL> conn / as sysdba;

Connected.

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area  583008256 bytes

Fixed Size          
    2097984 bytes

Variable
Size             
  159386816 bytes

Database Buffers         415236096
bytes

Redo
Buffers            
    6287360 bytes

Database mounted.

Database opened.

SQL> conn dave1/dave;

Connected.

所以我们重建口令文件不能解决问题。所以在Oracle 10g中,密码是不区分大小写的,这种现状,在Oracle
11g里才得到真正的改善。

我们可以在Oracle 10g中验证一下:

rac2:/u02/app/oracle/product/10.2.0/db_1/dbs>orapwd file=orapwanqing
password=oracle force=y ignorecase=y

Usage: orapwdfile=<fname> entries=<users>
force=<y/n>ignorecase=<y/n> nosysdba=<y/n>

where

file - name of password file (required),

password - password for SYS will beprompted if not
specified at command line,

entries - maximum number of distinct DBA(optional),

force - whether to overwrite existing file(optional),

ignorecase - passwords are case-insensitive(optional),

nosysdba - whether to shut out the SYSDBAlogon (optional
Database Vault only).

There must be no spaces around the equal-to(=) character.

这里我们设置了ingroecase参数之后,orapwd命令无法正常运行。

因此,可以看出,ignorecase是oracle 11g中真正新增的功能,其在Oracle
11g中才可以使用。该参数用于设置sysdba或sysoper权限通过密码文件登陆时是否区分大小写。

二.Oracle 11g


2.1 说明


2.1.1
sec­_case_sensitive_logon 参数


在Oracle 11g中,Oracle开始区分密码大小写,这个由参数:SEC_CASE_SENSITIVE_LOGON决定,官网对这个参数的说明:

http://docs.oracle.com/cd/E11882_01/server.112/e25513/initparams221.htm






















Property

Description

Parameter type

Boolean

Default value

true

Modifiable

ALTER SYSTEM

Range of values

true | false

Basic

No

SEC_CASE_SENSITIVE_LOGON enables ordisables password case sensitivity in
the database.

Values:

(1)true

Database logonpasswords are case sensitive.

(2)false

Database logonpasswords are not case sensitive.

用户如果是从Oracle 10g导入的,那么PASSWORD_VERSIONS的值就是“10G”,维护区分大小写的密码不依赖于
SEC_CASE_SENSITIVE_LOGON参数设置。假设SEC_CASE_SENSITIVE_LOGON参数被设置为TRUE,密码立即变为大小写敏感。

SQL> select * from v$version whererownum=1;

BANNER

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

Oracle Database 11g Enterprise EditionRelease 11.2.0.1.0 - 64bit
Production

SQL> show parameter password_versions

SQL>

2.1.2 口令文件


C:\Users\Administrator.DavidDai>orapwd

Usage: orapwd file=<fname>entries=<users> force=<y/n>
ignorecase=<y/n>nosysdba=<y/n>

where

file - name of password file (required),

password - password for SYS will be prompted if not
specified at commandline,

entries - maximum number of distinct DBA (optional),

force - whether to overwrite existing file (optional),

ignorecase - passwords are case-insensitive (optional),

nosysdba - whether to shut out the SYSDBA logon (optional
Database Vaultonly).

There must be no spaces around the equal-to (=) character.

  orapwd工具的ignorecase参数允许你控制在密码文件中的密码是否大小写敏感,它的默认值是“n”,即默认大小写敏感。如果特权用户(SYSDBA和SYSOPER)是从之前的数据库版本中导入的,它们的密码也会包括在密码文件中,这些用户将会保留大小写敏感的密码,直到密码被修改。

  

如果指定ignorecase=y,则Oracle会忽略密码验证时密码的大小写。

2.2 示例一

SQL> show parameter sec_case_sensitive_logon

NAME                                TYPE       
VALUE
------------------------------------ -----------
------------------------------
sec_case_sensitive_logon            boolean    
TRUE

--创建测试用户:

SQL> create user dave identified byDavE;

User created.

SQL> grant connect,resource to dave;

Grant succeeded.

SQL> conn dave/dave;

ERROR:

ORA-01017: invalid username/password; logondenied

Warning: You are no longer connected toORACLE.

SQL> conn dave/DavE;

Connected.

--这里区分大小写

--修改参数:

SQL> conn / as sysdba;

Connected.

SQL> alter system set sec_case_sensitive_logon=false;

System altered.

SQL> show parametersec_case_sensitive_logon

NAME                   
TYPE        VALUE

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

sec_case_sensitive_logon    
boolean    FALSE

SQL> conn dave/dave;

Connected.

--禁用sec_case_sensitive_logon 就不区分大小写了。

2.3 示例二


在上面我们是通过sec_case_sensitive_logon
来设置的,这里我们通过口令文件参数来进行设置。

在Oracle 11g中,口令文件的ignorecase
参数用于设置sysdba或sysoper权限通过密码文件登陆时是否区分大小写。默认情况下,ignorecase 参数是区分大小写的。

注意这里的ingorecase
参数仅仅是在密码文件中创建大小写敏感的密码。

先禁用OS 认证,具体操作参考:

Oracle
OS认证 口令文件 密码丢失处理

http://blog.csdn.net/tianlesoftware/article/details/4698293

SQL>show parametersec_case_sensitive_logon

NAME                                
TYPE        VALUE

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

sec_case_sensitive_logon            
boolean     TRUE

C:\Users\Administrator.DavidDai>orapwdfile=D:\app\Administrator\product\11.2.0\dbhome_1\database\pwdDAVE.orapassword=OraclE
force=y ignorecase=y

--测试ignorecase参数对赋予sysdba 权限用户的影响:

C:\Users\Administrator.DavidDai>

SQL> conn / as sysdba

Connected.

SQL> create user dave1 identified byDavE;

User created.

SQL> grant connect,resource to dave1;

Grant succeeded.

SQL> conn dave1/dave;

ERROR:

ORA-01017: invalid username/password; logondenied

Warning: You are no longer connected toORACLE.

SQL> conn dave1/DavE;

Connected.

--这里也必须使用正确的密码,包括大小写。

SQL> conn / as sysdba;

Connected.

SQL> grant sysdba,sysoper to dave1;

Grant succeeded.

SQL> select * from v$pwfile_users;

USERNAME                      
SYSDB SYSOP SYSAS

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

SYS                           
TRUE  TRUE FALSE

DAVE1                         
TRUE  TRUE FALSE

SQL> conn dave1/DavE;

Connected.

SQL> conn dave1/dave;

ERROR:

ORA-01017: invalid username/password; logondenied

Warning: You are no longer connected to ORACLE.

--通过这个测试我们可以看出,在创建口令文件时对后来赋予sysdba 权限的用户来说,没有影响,不能指定其是否忽略大小写。

--测试SYS 用户:

我们创建口令文件时就是争对这个这个用户的。

SQL> conn sys/oracle as sysdba;

Connected.

SQL> conn sys/OraclE as sysdba;

Connected.

SQL> conn sys/dave as sysdba;

ERROR:

ORA-01017: invalid username/password; logondenied

Warning: You are no longer connected toORACLE.

--这里SYS 用户成功忽略了大小写问题。

小结:


通过以上的2个测试,可以得出结论:

(1)    sec_case_sensitive_logon参数可以指定用户的口令是否区分大小写。

(2)    口令文件中的ignorecase 参数仅仅争对创建时是否区分大小写,简言之,只能争对SYS用户。

三.  Oracle
10g,11g 与DBlink


通过前面的说明,可以看到Oracle
10g与11g中对密码出的验证策略不同,所以如果在不同版本库之间建DBLINK,那么密码也就会成为一个问题,可能出现密码不对的问题,具体的注意事项如下:

(1)11g连接到11g:

创建数据库连接时,密码必须与远程数据库用户的密码大小写一致。  

(2)11g连接到11g以前的数据库:

创建数据流连接时用的密码大小写随意,因为远程数据库会忽略大小写的。  

(3)11g以前的数据库连接到11g:

将远程用户的密码修改为大写,或者用引号括起来,只有这样才能通过11g以前的数据库验证。

http://blog.csdn.net/tianlesoftware/article/details/7383110

时间: 2024-10-11 20:01:19

[转]Oracle 10g/11g 密码策略 用户口令 大小写敏感的相关文章

在linux oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本

在linux.oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本 背景描写叙述: goldengate安装于/u01/ggs文件夹下 rhel5.5 oracle 10g/11g x64bit Oracle GoldenGate Command Interpreter for Oracle Version 11.1.1.0.0 Build 078 Linux, x64, 64bit (optimized), Oracle 11 on Jul 28

在linux oracle 10g/11g x64bit环境中,goldengate随os启动而自动启动的脚本

在linux,oracle 10g/11g x64bit环境中,goldengate随os启动而自动启动的脚本 背景描述: goldengate安装于/u01/ggs目录下 rhel5.5 oracle 10g/11g x64bit Oracle GoldenGate Command Interpreter for Oracle Version 11.1.1.0.0 Build 078 Linux, x64, 64bit (optimized), Oracle 11 on Jul 28 2010

oracle 10g/11g 命令对照,日志文件夹对照

 oracle 10g/11g  命令对照,日志文件夹对照 oracle 11g 中不再建议使用的命令 Deprecated Command Replacement Commands crs_stat crsctl check cluster -all crsctl stat res -t crs_register crsctl add resource crsctl add type crsctl modify resource crsctl modify type crs_unregis

oracle 10g/11g 命令对比,日志目录对比

 oracle 10g/11g  命令对比,日志目录对比 oracle 11g 中不再建议使用的命令 Deprecated Command Replacement Commands crs_stat crsctl check cluster -all crsctl stat res -t crs_register crsctl add resource crsctl add type crsctl modify resource crsctl modify type crs_unregist

oracle 10g/11g RAC 启停归档模式

 oracle 10g rac 启停归档模式  如果Oracle数据库运行在归档模式,当进行数据库维护时,可能需要暂停数据库的归档,在完成维护后,再重新启动归档模式. 通过以下步骤可以从归档模式转换为非归档模式: 以下步骤在一台机器上操作.节点二保持down.在所有的操作完成后在打开节点二的数据库. sql>connect SYS/PASSWORD sql>ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE; sql>shutdo

更改Oracle 10g/11g数据库为归档模式

一.oracle 10g/11g 在Oracle 11g,开启archive log模式时,默认归档目录为db_recovery_file_dest指定.此参数在pfile/spfile中可以指定: db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'; 1.sqlplus / as sysdba;登陆进去: 2.关闭数据库 SQL> shutdown immediate Database closed. Database dis

Windows环境下C#操作oracle 10g/11g心得

从8月份开始接到一个项目,业务逻辑不复杂,因为之前没有什么C#l连接oracle的经验,所以做起来磕磕绊绊的,到现在总算完成了.现在梳理下这一路走来的心得. 首先是oracle下载安装.开始直接从官网上下的11g,下载所需的之后要安装服务端和客户端.安装完成后首先要配置监听.dos下输入lsnrctl status查看当前监听状态.输入netca 进入 监听配置界面.注意一个服务端一般只要一个监听,2个监听会混乱的.配置监听的参数默认的就好.然后lsnrctl start命令启动监听.输入sql

忘记oracle(10g)数据库的sys用户密码解决方案

1.找到oracle存放sys用户密码的文件路径:C:\Oracle\database\PWDorcl.ora(pwdfile) 2.打开windows的命令提示符窗口 3.在窗口中输入orapwd file=<pwdfile> password=<newpassword> force=y 如此一来sys用户的密码就更改成<newpassword>了!

oracle 10g\11g用imp导入数据的时候报错:ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 错误解决

备份文件是从11g中通过exp命令导出的,在10g下使用imp导入出现了上述错误,以为是低版本的不支持高版本的备份,于是使用11g测试,还是上面的问题. 其实是表空间大小不够的问题,下面是网上的解答: 表空间不足 先查询MAXDATA表空间数据文件所在路径 select file_name from dba_data_files where tablespace_name = 'MAXDATA' 通过file_name 来得到你当前MAXDATA表空间对应数据文件的路径,然后增加新的数据文件.