数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle的操作系统身份认证


发布日期:2018年11月20日
 
Oracle的操作系统身份认证

Oracle的操作系统身份认证

oraclelogin数据库远程登录authenticationos

sqlnetauthentication_services=(NTS)在$ORACLE_HOME/network/admin/sqlnetora中

NTS特指的是windows系统或者设为all这两种情况都允许操作系统认证

如果在unix下如果没有设置sqlnetauthentication_services默认就是操作系统认证!或者设为all也允许操作系统认证

参数SQLNETAUTHENTICATION_SERVICES= (NONENTS)表明用户连接Oracle服务器时使用哪种验证方式

NONE表示Oracle数据库身份验证NTS表示操作系统身份验证两种方式可以并用

数据库用sysdba登录的验证有两种方式一种是通过os认证一种是通过密码文件验证;登录方式有两种一种是在数据库主机直接登录(用os认证的方式)一种是通过网络远程登录;需要设置的参数有两个一个是SQLNETAUTHENTICATION_SERVICES一个是REMOTE_LOGIN_PASSWORDFILE

os认证如果启用了os认证以sysdba登录那么我们只要用oracle软件的安装用户就能登录sqlplus / as sysdba如果我们要禁用os认证只利用密码文件登录我们首先要有一个密码文件

orapwd file=C:/oracle/product//db_/database/PWDoralocalora password=maximo entries=;

然后我们要把$ORACLE_HOME/network/admin/sqlnetora中设置

SQLNETAUTHENTICATION_SERVICES= none

注意一下密码文件只在数据库启动的时候加载进去一旦加载进去密码文件就脱离了oracle管理所以我们用orapwd新建密码文件后里面指定的密码要在数据重启后才能生效

至此我们已经实现不用os认证(sqlplus / as sysdba的方式登录不了)那么我们怎么限制网络方面利用sysdba远程登录呢?我们可以设置初始化文件中的REMOTE_LOGIN_PASSWORDFILE=none

注意当REMOTE_LOGIN_PASSWORDFILE=none时这个参数生效需要重启数据库并且一旦启用这个参数将使用操作系统认证不使用口令文件因此如果REMOTE_LOGIN_PASSWORDFILE=none且SQLNETAUTHENTICATION_SERVICES= none这个时候数据库是无法登录的

alter system set REMOTE_LOGIN_PASSWORDFILE=none scope=spfile;

()REMOTE_LOGIN_PASSWORDFILE=none且SQLNETAUTHENTICATION_SERVICES= none

oracle安装用户本地sqlplus / as sysdba无法登录

非oracle安装用户本机sqlplus sys/change_on_install as sysdba无法登录

非oracle安装用户远程sqlplus / as sysdba_on_install@sid as sysdba无法登录

()REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNETAUTHENTICATION_SERVICES= none

oracle安装用户本地sqlplus / as sysdba无法登录

非oracle安装用户本机sqlplus sys/change_on_install as sysdba能登录

非oracle安装用户远程sqlplus / as sysdba_on_install@sid as sysdba能登录

()REMOTE_LOGIN_PASSWORDFILE=none且SQLNETAUTHENTICATION_SERVICES= (NTS)

oracle安装用户本地sqlplus / as sysdba能登录

非oracle安装用户本机sqlplus sys/change_on_install as sysdba无法登录

非oracle安装用户远程sqlplus / as sysdba_on_install@sid as sysdba无法登录

()REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNETAUTHENTICATION_SERVICES= (NTS)

oracle安装用户本地sqlplus / as sysdba能登录

非oracle安装用户本机sqlplus sys/change_on_install as sysdba能登录

非oracle安装用户远程sqlplus / as sysdba_on_install@sid as sysdba能登录

Oracle REMOTE_LOGIN_PASSWORDFILE 参数

设置初始化参数 REMOTE_LOGIN_PASSWORDFILE

在 Oracle 数据库实例的初始化参数文件中此参数控制着密码文件的使用及其状态它可以有以下几个选项

NONE 指示 Oracle 系统不使用密码文件特权用户的登录通过操作系统进行身份验证;

EXCLUSIVE 指示只有一个数据库实例可以使用此密码文件只有在此设置下的密码文件可以包含有除 SYS 以外的用户信息即允许将系统权限 SYSOPER /SYSDBA 授予除 SYS 以外的其他用户此设置oracle i中为缺省值有朋友说是shared其实不然

SHARED 指示可有多个数据库实例可以使用此密码文件在此设置下只有 SYS 帐号能被密码文件识别即使文件中存有其他用户的信息也不允许他们以 SYSOPER /SYSDBA 的权限登录

在 REMOTE_LOGIN_PASSWORDFILE 参数设置为 EXCLUSIVE SHARED 情况下 Oracle 系统搜索密码文件的次序为在系统注册库中查找 ORA_SID_PWFILE 参数值(它为密码文件的全路径名);若未找到则查找 ORA_PWFILE 参数值;若仍未找到则使用缺省值 ORACLE_HOME/DATABASE/PWDSIDORA ;其中的 SID 代表相应的 Oracle 数据库系统标识符

总结

$ORACLE_HOME/network/admin/sqlnetora中的AUTHENTICATION_SERVICES参数

在windows下SQLNETAUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证

在linux下在SQLNETAUTHENTICATION_SERVICES的值设置为ALL或者不设置的情况下OS验证才能成功;设置为其他任何值都不能使用OS认证

spfile中的REMOTE_LOGIN_PASSWORDFILE参数

值为exclusive时远程能作为sysdba身份登录

值为none时以sysdba身份无法登录

oracle的sys用户密码怎么修改

忘记除SYSSYSTEM用户之外的用户的登录密码

用SYS (或SYSTEM)用户登录: CONN SYS/PASS_WORD AS SYSDBA;

使用如下语句修改用户的密码: ALTER USER user_name IDENTIFIED BY newpass;

注意密码不能全是数字并且不能是数字开头否则会出现ORA: 口令缺失或无效

忘记SYS用户或者是SYSTEM用户的密码

如果是忘记SYSTEM用户的密码可以用SYS用户登录然后用ALTER USER 命令修改密码

CONN SYS/PASS_WORD AS SYSDBA;

ALTER USER SYSTEM IDENTIFIED BY newpass;

如果是忘记SYS用户的密码可以用SYSTEM用户登录然后用ALTER USER 命令修改密码

CONN SYSTEM/PASS_WORD ;

ALTER USER SYSTEM IDENTIFIED BY newpass;

如果SYSSYSTEM用户的密码都忘记或是丢失

可以使用ORAPWDEXE 工具修改密码

开始菜单>运行>输入CMD打开命令提示符窗口输入如下命令

orapwd file=D:\oracleg\database\pwdctcsysora password=newpass

这个命令重新生成了数据库的密码文件密码文件的位置在ORACLE_HOME目录下的\database目录下

这个密码是修改sys用户的密码除sys其他用户的密码不会改变

不过Oracle提供了两种验证方式一种是OS验证另一种密码文件验证方式如果是第一种方式用以下方法修改密码

sqlplus /nolog;

connect / as sysdba

alter user sys identified by ;

alter user system identified by ;

如果是第二种方法就用上述方式修改也可以下方法修改密码

orapwd file=pwdxxxora password=你设定的新密码 entries=

设定完后重新启动服务再次登陆就可以了

oracle g

在本机安装完Oracle以后不记得sys用户的密码了采用如下方法可以修改密码

打开cmd输入sqlplus /nolog回车;输入conn / as sysdba;输入alter user sys identified by 新密码注意新密码最好以字母开头否则可能出现错误Ora有了这个方法后只要自己对oracle服务器有管理员权限不记得密码的时候就可以随意修改密码了

在命令行执行如下命令sqlplus /@服务名 as sysdba然后在sqlplus中alter user sys identified by 新密码;

alter user system identified by 新密码;

运行到C盘根目录

)输入SET ORACLE_SID = 你的SID名称

)输入sqlplus/nolog

)输入connect/as sysdba

)输入alert user sys identified by sys

)输入alert user system identified by system

)更改完成密码是Oracle数据库初始密码

首先在CMD下输入SQLPLUS/NOLOG然后再在出来的界面中打入CONN/AS SYSDBA这样就会以本地系统登录的用户为信任用户进入数据库的操作解决这个问题的方式有两种一个是ALTER USER (USERNAME) IDENTIFIED BY 密码;这个是可以改变USERNAME的密码当然这个USERNAME必须已经存在的

另一种是CREATE USER (USERNAME) IDENTIFIED BY 密码;改变用户权限的命令是GRANT ROLES TO (USERNAME);以上种方法都是针对ORACLE I的版本

用orapwdexe命令可以修改命令

orapwd file=/oracle/pwdsidora password=这个命令是修改sys用户的密码你把生成的文件覆盖原来的密码文件除sys其他用户的密码不会改变

su oracle

sqlplus /nolog

conn / as sysdba

startup (如果数据库不是处于启动状态则启动)

alter user sys identified by

然后就可以使用sys用户密码登陆了

操作系统认证方式

conn / as sysdba

alter user sys identified by xxx

上一篇:Oracle重做日志丢失的故障处理

下一篇:熟练Oracle的Sql语句必做18道