• 本地登录和远程登陆总结[oracle ,资料收集于网络]


    Oracle数据库"本地登录"和"远程登录"的表面区别就在于是否有"@"符号

    例如:SQL>conn username/password as sysdba就是"本地登录";

    SQL>conn username/password@sid as sysdba就是"远程登录"。

    这两种方式的本质区别是:

    "本地登录"不会调用tnsnames.ora,也无须监听器。"本地登录"是通过环境变量ORACLE_SID来定位数据库的,如果将其删掉,则"本地登录"将会失败。

    "远程登录"则必须要用到tnsnames.ora文件,并且服务器上的监听器必须是running,而与环境变量ORACLE_SID没关系。

    在本地上登录Oracle数据库可以使用两种方式中任何一种,但通过网络远程登录数据库则只能使用"远程登录"。

    注:"本地登录"和"远程登录"只是为了说明问题方便而用的名词

    为了说明上述结论,本人作了如下实验:

    当用"本地登录"方式时,将环境变量ORACLE_SID删除,结果登录失败;

    而将tnsnames.ora文件删除并且不启动监听器,"本地登录"仍然登录正常。

    相反,当用"远程登录"方式时,将环境变量ORACLE_SID删除,并不影响其正常登录,而如果删除tnsnames.ora文件或关闭监听器,"远程登录"则会失败

     

    系统32位还是64位?

    出于性能上的考虑,安装oracle都会添加如下的行到/etc/pam.d/login 文件:

    session required /lib/security/pam_limits.so 加入以上内容后,会出现控制台下(本地)无法登陆的问题。

    解决方法是如果安装的是64位的操作系统,在/etc/pam.d/login 文件中,添加:session required /lib64/security/pam_limits.so

    禁止oracle本地登录 及 解决 ORA-03135连接失去联系

    oracle 本地登录的方式登录oracle服务端:sqlplus "/as sysdba",不需要用户名密码即可登录。
    禁用方法:

    1.linux下

    转到目录$ORACLE_HOME/network/admin下,

    cd $ORACLE_HOME/network/admin

    vi sqlnet.ora

    在文件sqlnet.ora中,增加一行即可:

    sqlnet.authentication_services=(none)

    如果应用程序时不时地报错"ORA-03135连接失去联系"该问题可能与sqlnet.ora设置参数SQLNET.EXPIRE_TIME 有关

    在文件sqlnet.ora中,增加一行,单位分钟:

    SQLNET.EXPIRE_TIME = 10

    2.windows下

    SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系统验证;

    SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle验证;

    SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。

     

     

    oracle两种认证方式总结

    ORACLE数据库通过sqlnet.ora文件中的参数sqlnet.authentication_services,参数文件中的remote_login_passwordfile和口令文件pwdsid.ora三者协同作用实现身份认证.

    Sqlnet.authentication_services=(NTS)|(NONE)
    NTS:
    操作系统认证方式,不使用口令文件;
    NONE:
    口令文件认证方式

    Remote_login_passwordfile=(NONE)|(EXCLUSIVE)|(SHARED)
    NONE:
    不使用口令文件,操作系统认证;
    EXCLUSIVE:
    口令文件认证方式,但只有一个数据库实例可以使用此文件;
    SHARED:
    口令文件认证方式,可以有多个数据库实例可以使用此文件,但此设置下只有SYS帐号能被识别,即使文件中存在其他用户的信息,也不允许他们以SYSOPER/SYSDBA登录.

    (1).sqlnet.authentication_services=(NTS)
    同时Remote_login_passwordfile=(NONE),此时为操作系统认证方式.

    当以oracle_dba组下的用户登录进入本地的操作系统后,进行以下操作:
    sqlplus /nolog
    SQL>conn /assysdba
    可以以
    sysdba身份登录成功,进行数据库方面的操作.

    当以远程进行登录时,执行:
    sqlplus /nolog
    SQL>conn /assysdba
    则会显示:
    ERROR:ORA-01031:insufficient privileges
    即不允许以
    sysdba身份远程登录系统,这也是OS认证这所以称为本地认证方式的原因.

    (2).Sqlnet.authentication_services=(NONE),
    同时
    Remote_login_passwordfile=(EXCLUSIVE)|(SHARED),
    配合口令文件PWDsid.ora,此时为口令文件认证方式:

    当在本地以oracle_dba组下的用户登录进入系统时,进行以下操作:
    sqlplus /nolog
    SQL>conn /assysdba
    则会显示:
    ERROR:ORA-01031:insufficient privileges

    在本地或远程进行下边的操作:
    sqlplus /nolog
    SQL>conn sys/
    密码@服务名
    assysdba
    可以进入系统
    ,也就是说口令文件认证方式允许用户从本地或远程以sysdba身份登录,但必须提供口令字.


    (3).Sqlnet.authentication_services=(NTS),
    同时
    Remote_login_passwordfile=(EXCLUSIVE)|(SHARED),
    配合口令文件PWDsid.ora,此时为操作系统认证和口令文件认证同时起作用:

    当在本地以oracle_dba组下的用户登录进入操作系统后,进行下边的操作:
    sqlplus /nolog
    SQL>conn /assysdba
    可以进入系统.即操作系统认证方式登录成功.

    当在远程执行:
    sqlplus /nolog
    SQL>conn sys/
    密码@服务名
    assysdba
    同时可正常登录到数据库系统
    ,即口令文件认证方式登录成功.

    附:

    要知道以下几种登陆方式不是一种概念
    sqlplus /nolog
    1: conn /assysdba
    本机登陆,使用操作系统认证,有无监听都可以
    2: conn sys/password assysdba
    本机登陆,使用密码文件认证,有无监听都可以
    3: conn sys/password@dbanote assysdba
    可以本机可以远程,使用密码文件认证,必须有监听,必须有tnsnames.ora,remote_login_passwordfile必须是
    EXCLUSIVE

    说明:

    oracle的解释可以知道,SQLNET.AUTHENTICATION_SERVICES=(NTS)WINDOWS系统专用的,对linux/UNIX是不适用的。

    最后做一个简单的总结:
    1
    、在windows下,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证;不设置或者设置为其他任何值都不能使用OS认证。
    2
    、在linux下,在SQLNET.AUTHENTICATION_SERVICES的值设置为ALL,或者不设置的情况下,OS验证才能成功;设置为其他任何值都不能使用OS认证。

     

     

    遇到问题总结【20130306】

    今天在客户那里遇到本地无法登陆数据库的问题:

    1. 使用orapwd修改密码文件过程:

      ----第一部分---

      备份密码文件

      Orapwd file=filename password=sys entries=8

      Sqlplus /nolog

      Conn sys/sys as sysdba

      报错:没有权限

      Conn sys/sys@10.1.012.33 as sysdba

      报错:没有权限

      Conn sys/sys@evnsid as sysdba

      报错:没有权限

       

      将备份密码文件复制回去

      Conn sys/sys as sysdba

      报错:没有权限

      Conn sys/sys@10.1.12.33 as sysdba

      可以连接

      Conn sys/sys@evnsid as sysdba

      可以连接

       

      ---第二部分---

    1,关闭数据库,shutdown immediate;

    2,删除/重命名以前的password文件,e.g: rm $ORACLE_HOME/dbs/pwdxxx;

    3,重建password文件。e.g: orapwd file=$ORACLE_HOME/dbs/orapwSID password=password entries=(*这里要注意:密码文件名是:orapwSID, entries:是同时使用该帐户的最多用户数*)

    4,修改initSID.ora, 添加一句:REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE,即授权允许远程以dba身份登录;

    5,启动数据库:startup

    Conn sys/sys as sysdba

    报错:没有权限

    Conn sys/sys@10.1.12.33 as sysdba

    报错:没有权限

    Conn sys/sys@evnsid as sysdba

    报错:没有权限

     

        ---第三部分—

        检查参数:

        Conn sys/sys@10.1.12.33 as sysdba

        Show parameter REMOTE_LOGIN_ ---- EXCLUSIVE

        Select * from v$pwfile_users;

        Sys记录存在。

        说明 密码文件生效,但是本地登陆方式依然不行。

    1. 分析原因

      根据网络资料:

        "本地登录"不会调用tnsnames.ora,也无须监听器。"本地登录"是通过环境变量ORACLE_SID来定位数据库的,如果将其删掉,则"本地登录"将会失败。

    "远程登录"则必须要用到tnsnames.ora文件,并且服务器上的监听器必须是running,而与环境变量ORACLE_SID没关系。

     

    重新 export ORACLE_SID=envtest

    Sqlplu /nolog

    Conn sys/sys as sysdba

    成功。

     

    虽然找到问题的症结所在,但是在oracle的.profile文件中重新添加 export ORACLE_SID=envtest之后,该情况依然如此。不知道是何解???

  • 相关阅读:
    JAVA RMI调用实战学习
    linux下关于压缩、解压相关的操作
    关于hessian接口类方法顺序及对象序列化的实战研究
    Java对象引用传递探索
    mysql 语句or效率问题
    树莓派做下载服务器 aria2 篇
    免费 cdn
    搞定迅雷固件在TP-LINK WR720N,127.0.0.1 9000 获取不到激活码
    Mware vCenter Server 识别固态硬盘为(非SSD)是什么原因?
    XXX esx.problem.syslog.nonpersistent.formatOnHost not found XXX
  • 原文地址:https://www.cnblogs.com/junnor/p/2947273.html
Copyright © 2020-2023  润新知