zoukankan      html  css  js  c++  java
  • 本地登录和远程登陆总结[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之后,该情况依然如此。不知道是何解???

  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/junnor/p/2947273.html
Copyright © 2011-2022 走看看