- 浏览: 74428 次
文章分类
今天看了sqlplus登录本地和远程oracle服务器,记录下供大家参考。
表面上oracle“本地登录”和“远程登录”的区别在于是否有“@”符号
SQL>conn username/password as sysdba 是本地登录
SQL>conn username/password@SID as sysdba 是远程登录
一、本地登录和远程登录的本质区别是:
1)本地登录不会调用tnsnames.ora,oracle服务器也无需启动监听器;本地登录是通过环境变量ORACLE_SID来定位数据库的,如果将其删掉,则本地登录会失败。
ORACLE_SID为安装oracle数据库时自动生成的。
(1)windows系统默认的ORACLE_SID值为最后所安装的实例,查看该变量值的操作如下:
开始---运行,输入regedit打开注册表
在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1中查看ORACLE_SID的键值,入下图
修改此键值则修改了默认登录的本地数据库实例,有资料说不修改注册表,只修改本次登录的实例可按照如下方法,本人未亲自试验,仅供参考: 在CMD窗口下,先修改ORACLE_SID的值(set ORACLE_SID=xxxx,该修改仅对当前CMD窗口有效),接着用同一CMD窗口访问数据库即可。
(2)linux可用echo $ORACLE_SID 查看ORACLE_SID的值。
(3)另外还可以登录数据库后,通过sql查看当前连接的实例
show parameter instance;
show parameter instance_name;
select * from v$instance;
2)远程登录必须要用到tnsnames.ora文件,且远程服务器上oracle的监听器必须是running,而与环境变量ORACLE_SID没有关系。
二、sqlplus登录命令
这里以远程登录为例,本地登录去掉@SID即可
开始---运行---cmd
方法一:首先sqlplus /nolog
然后connect username/password@SID
方法二:sqlplus username/password@SID
特殊情况,密码中包含@特殊符号的时候
首先sqlplus /nolog,然后connect username/"pass@word"@SID --成功登录
sqlplus username/"pass@word"@SID --登录失败
sqlplus ucmp/\"pass@word\"@opencms --登录成功
三、oracle的两种认证方式
问题:oracle 本地登录的方式登录oracle服务端:sqlplus "/as sysdba",不需要用户名密码即可登录,禁用此方式的方法:在文件sqlnet.ora中,增加一行即可:sqlnet.authentication_services=(none)
另外如果应用程序时不时地报错"ORA-03135连接失去联系",该问题可能与sqlnet.ora设置参数SQLNET.EXPIRE_TIME 有关,在文件sqlnet.ora中,增加一行,单位分钟:SQLNET.EXPIRE_TIME = 10
SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系统验证;
SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle验证;
SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。
下面详细说下oracle的认证方式(摘自http://www.cnblogs.com/junnor/archive/2013/03/07/2947273.html)。
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 /as sysdba
可以以sysdba身份登录成功,进行数据库方面的操作.
当以远程进行登录时,执行:
sqlplus /nolog
SQL>conn /as sysdba
则会显示:
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认证。
表面上oracle“本地登录”和“远程登录”的区别在于是否有“@”符号
SQL>conn username/password as sysdba 是本地登录
SQL>conn username/password@SID as sysdba 是远程登录
一、本地登录和远程登录的本质区别是:
1)本地登录不会调用tnsnames.ora,oracle服务器也无需启动监听器;本地登录是通过环境变量ORACLE_SID来定位数据库的,如果将其删掉,则本地登录会失败。
ORACLE_SID为安装oracle数据库时自动生成的。
(1)windows系统默认的ORACLE_SID值为最后所安装的实例,查看该变量值的操作如下:
开始---运行,输入regedit打开注册表
在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1中查看ORACLE_SID的键值,入下图
修改此键值则修改了默认登录的本地数据库实例,有资料说不修改注册表,只修改本次登录的实例可按照如下方法,本人未亲自试验,仅供参考: 在CMD窗口下,先修改ORACLE_SID的值(set ORACLE_SID=xxxx,该修改仅对当前CMD窗口有效),接着用同一CMD窗口访问数据库即可。
(2)linux可用echo $ORACLE_SID 查看ORACLE_SID的值。
(3)另外还可以登录数据库后,通过sql查看当前连接的实例
show parameter instance;
show parameter instance_name;
select * from v$instance;
2)远程登录必须要用到tnsnames.ora文件,且远程服务器上oracle的监听器必须是running,而与环境变量ORACLE_SID没有关系。
二、sqlplus登录命令
这里以远程登录为例,本地登录去掉@SID即可
开始---运行---cmd
方法一:首先sqlplus /nolog
然后connect username/password@SID
方法二:sqlplus username/password@SID
特殊情况,密码中包含@特殊符号的时候
首先sqlplus /nolog,然后connect username/"pass@word"@SID --成功登录
sqlplus username/"pass@word"@SID --登录失败
sqlplus ucmp/\"pass@word\"@opencms --登录成功
三、oracle的两种认证方式
问题:oracle 本地登录的方式登录oracle服务端:sqlplus "/as sysdba",不需要用户名密码即可登录,禁用此方式的方法:在文件sqlnet.ora中,增加一行即可:sqlnet.authentication_services=(none)
另外如果应用程序时不时地报错"ORA-03135连接失去联系",该问题可能与sqlnet.ora设置参数SQLNET.EXPIRE_TIME 有关,在文件sqlnet.ora中,增加一行,单位分钟:SQLNET.EXPIRE_TIME = 10
SQLNET.AUTHENTICATION_SERVICES= (NTS)是基于操作系统验证;
SQLNET.AUTHENTICATION_SERVICES= (NONE)是基于Oracle验证;
SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)是二者共存。
下面详细说下oracle的认证方式(摘自http://www.cnblogs.com/junnor/archive/2013/03/07/2947273.html)。
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 /as sysdba
可以以sysdba身份登录成功,进行数据库方面的操作.
当以远程进行登录时,执行:
sqlplus /nolog
SQL>conn /as sysdba
则会显示:
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认证。
发表评论
-
oracle之分析函数
2020-03-11 14:07 0row_number() over(partition by ... -
oracle之日期函数
2016-12-20 10:55 8991、sysdate:返回当前日期 2、add_months(d ... -
oracle之数据字典
2016-07-18 18:55 0Oracle字典视图包括 ... -
oracle之回滚和undo表空间
2016-07-12 16:19 0Oracle undo表空间爆满的解决 1. 启 ... -
oracle之dblink
2016-07-12 14:34 0有时候需要从另一 ... -
oracle之监听配置文件
2016-07-11 13:57 0listener.ora文件为配置在oracle服务器 ... -
oracle之异常学习
2016-07-05 18:22 798ORACLE异常包括预定义异常,非预定义异常,自定义异常。 1 ... -
oracle的regexp_like函数使用正则表达式
2016-07-08 10:17 8883一、正则表达式入门 1. ... -
oracle中on、where、having的区别
2016-05-27 11:49 0http://www.cnblogs.com/java-cla ... -
面试准备
2016-05-14 22:57 0web安全测试: http://blog.sina.com.c ... -
常用sql
2016-04-28 15:52 01、删除表中重复数据 方式一:rowid select * f ... -
oracle之高水位线
2016-03-24 18:25 0insert /*+append*/ into table1 ... -
oracle11g自动分区
2016-03-23 21:07 870最近工作中需要给数据库创建分区,简单学习了一下,做下笔 ... -
oracle中rowid与rownum学习
2016-03-21 16:00 0rowid与rownum 都被称为伪列,但它们的存在方 ... -
SST
2016-01-21 16:57 0会员系统通过MQ获取CDH月结账号数据代码 1、插入 插 ... -
oracle排查异常sql的一些方法
2015-11-19 15:27 945转自http://blog.itpub.net/2315585 ... -
oracle导入导出
2015-11-13 18:37 0Oracle数据导入导出imp/exp就相当于oracle数据 ... -
oracle索引学习
2015-11-12 16:45 0一、索引基础 1、索引 ... -
oracle中to_char函数转换后多出空格的问题
2015-11-06 14:50 1413今天编写往数据库中插入200万数据的存储过程,遇到to ... -
好的网站
2015-09-11 13:54 0plsql开发笔记和小结 http://www.blogjav ...
相关推荐
Sqlplus_登录数据库
sqlplus登录oracle的四种方法
SQLplus&数据库对象,SQLplus&数据库对象,SQLplus&数据库对象
sqlplusw 与 sqlplus登陆数据库的方法总结
通过sqlplus可以连接数据库根据用户权限进行数据或者设定操作,这篇文章介绍一下常用的连接方式。 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: https://www.jb51.net/article/153533.htm ...
之前用PL/SQL DEVELOPER和SQLPLUS 登录数据库都没有问题,就是应用程序通过JDBC连接Oracle时无法成功连接,出现ORA-12505错误listener does not currently know of SID given in connect descriptor
sqlplus 命令大全 oracle 数据库 命令查询,数据库学习,数据库查询命令。
instantclient-basic-windows.x64-11.2.0.4.0 instantclient-sqlplus-windows.x64-11.2.0.4.0 instantclient-sdk-windows.x64-11.2.0.4.0 三文件打包下载,包内有配置方法 为什么不能自己定积分,定1个积分就行了,...
oracle新建数据库,及创建用户,表空间,sqlplus导入导出数据库.docx
sqlplus工具、sqlplus命令、pl/sql及isqlplus登录oracle的四种方法
用sqlplus登录数据库后都 自动执行进行设置?写出操作过程 8. 编写脚本QueryJobHisByDept.sql,此脚本的执行结果是显示由用 户指定某部门中进行职位 变动的次数为用户指定次数的职员姓名 等相关信息。脚本的运行...
rac数据库升级sqlplus脚本.txt
Oracle数据库sqlplus常用命令
本人亲自整理,经过验证,确保真实有效。win7环境下sqlplus远程连接oracle数据库的方法
用于在dos命令里面,导出oracle数据库用户和表
先来看一个简单的利用python调用sqlplus来输出结果的例子: import os import sys from subprocess import Popen, PIPE sql = set linesize 400 col owner for a10 col object_name for a30 select owner, object_...
oracle 数据库缺失sqlplus instanclie包,oracle 数据库缺失sqlplus instanclie包。
Sqlplus常用的命令,数据库管理员的学习笔记。
oracle数据库sqlplus语句大全