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程序设计(六)- ......
本系列文章导航
[Oracle]高效的PL/SQL程序设计(一)--伪列ROWNUM使用技巧
[Oracle]高效的PL/SQL程序设计(二)--标量子查询
[Oracle]高效的PL/SQL程序设计(三)--Package的优点
[Oracle]高效的PL/SQL程序设计(四)--批量处理
[Oracle]高效的PL/SQL程序设计(五)--调用存储过程返回结果集
[Oracle]高效的PL/SQL程序设计(六)- ......
MySQL Data Type
Oracle Data Type
BIGINT
NUMBER(19, 0)
BIT
RAW
BLOB
BLOB, RAW
CHAR
CHAR
DATE
DATE
DATETIME
DATE
DECIMAL
FLOAT (24)
DOUBLE
FLOAT (24)
DOUBLE PRECISION
FLOAT (24)
ENUM
VARCHAR2
FLOAT
FLOAT
INT
NUMBER(10, 0)
INTEGER
NUMBER(10, 0)
LONGBLOB
BLOB, RAW
LONGTEX ......
SQLServer和Oracle的常用函数对比
1.绝对值
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.001) valu ......
我在把oracle数据导入sqlserver中时,发现在oracle中字段定义为唯一索引时,不同记录的此字段如果为空不被认为是重复的,但在sqlserver中如果此字段为唯一索引字段,不允许有2个以上的空值。郁闷。所以只好将sqlserver中的唯一索引字段手工修改为几个非空的值,但这样程序肯定要进行修改了。需要在程序中为此字段设置不重复 ......