Oracle数据库的三种验证机制
在windows操作系统中安装下载版的oracle数据库,只要有操作系统的登陆权限就可以用任意的用户名,密码以sysdba的身份登陆。我想拒绝别人访问,应该怎么解决这个问题?
%oracle_home%\NETWORK\ADMIN
sqlnet.ora中修改
SQLNET.AUTHENTICATION_SERVICES= (NTS)
-->
SQLNET.AUTHENTICATION_SERVICES= (NONE)
Oracle数据库的三种验证机制。 <1>操作系统验证 <2>密码文件验证 <3>数据库验证。你的本机通过了第一种验证机制。
系统安全一直是各个系统关注的首要问题,而用户验证是其中很重要的一环。一般应用程序习惯性地将用户验证放在数据库中,通过比对用户的输入与数据库记录来验证用户,但数据库自身如何来验证呢?ORACLE用户可以分为SYS用户和普通用户,他们的验证方式有所区别
一、SYS用户验证
SYS用户拥有数据库的完全控制权,对其验证显得至关重要。由于进行验证时数据库还不可用,ORACLE采用两种方式来验证SYSDBA用户:操作系统验证和口令文件验证。
1. 操作系统验证
对于在安装Oracle的本机上使用Oracle的情况,Oracle可以将用户验证交给操作系统,只要登录操作系统的用户在DBA组里,就有SYS用户的权限,可以修改 $ORACLE_HOME/dbs/sqlnet.ora,加入如下行:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
操作系统验证具有最高优先级,当设置为他时,口令文件验证不起作用
2. 口令文件验证
要使用口令文件验证,首先得禁用操作系统验证,修改 $ORACLE_HOME/network/admin/sqlnet.ora,加入如下行(这里将$ORACLE_HOME转化为绝对路径):
SQLNET.AUTHENTICATION_SERVICES= (NONE)
其次是设置口令验证配置参数:remote_login_passwordfile,他可以有几个值,其含义如下
-- none 不使用口令验证
-- exclusive 仅允许一个实例使用该口令文件
--shared 多个实例可以共用一个口令文件
这里将参数设置为独占:
alter system set remote_login_passwordfile=exclusive scope=spfile;
shutdown immediate
相关文档:
本系列文章导航
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
[Oracle]高效的PL/SQL程序设计(四)--批量处理
[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
[Oracle]高效的PL/SQL程序设计(六)- ......
update :单表的更新不用说了,两者一样,主要说说多表的更新
Oracle> Oracle的多表更新要求比较严格,所以有的时候不是很好写,我们可以试试Oracle的游标
&n ......
由于以前都是在sqlserver 2005处理,现在客户要求oracle数据库服务器,
最初的代码为:
allRecordSize = (Integer) rs1.getObject(1); //Integer allRecordSize=0;
当执行的时候报:BigDecimal无法转化为Integer类型
为了兼容两者修改后的代码为:
Object o = rs1.getObject(1);
&nbs ......
只是sqlserver 提供的远程数据访问函数; 在本地sqlserver 中取外部数据源数据时候可用;
对连接本地 oracle 操作远程 oracle 不能使用; 测试: pl/sql 中使用:
select * from openrowset(................); 无效!!!!!!!!!!!!!!
在oracle 中需要访问远程数据,需要建立一连接远程oracle 的 dblink ;
再用如下方 ......