设为首页 收藏本站
查看: 715|回复: 0

[经验分享] Oracle服务器连接

[复制链接]

尚未签到

发表于 2018-9-9 08:36:06 | 显示全部楼层 |阅读模式
转载  远程连接与本地连接的最大区别就是,必须启动tnslsnr这个侦听器程序,而且此时的专用服务器进程也是有这个侦听器负责产生了。再一个区别就是如何找到指定实例,本地连接确定实例的依据是$ORACLE_SID,而远程连接时则是靠侦听器公布的服务名(tnslsnr内部负责服务名与实例SID的对应)。另外,由于是远程连接,所以不存在操作系统安装用户免验证了,所有登录必须验证用户名和密码。
  下面给出几个例子。
3.1 实例已经启动时
  为了明显起见,这次从一台Windows机器上运行sqlplus.
C:\>sqlplus system/systempassword@172.16.2.192/orcl12c.xy.com  

  
SQL*Plus: Release 12.1.0.2.0 Production on 星期五 12月 5 13:51:39 2014
  

  
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
  

  
上次成功登录时间: 星期五 12月 05 2014 03:37:41 +08:00
  

  
连接到:
  
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
  
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing opt
  
ions
  

  
SQL>
3.2 实例尚未启动时
  实例尚未启动时,密码验证还是要通过密码文件,这个与本地连接相同。
C:\>sqlplus sys/syspassword@172.16.2.192/orcl12c.xy.com as sysdba;  

  
SQL*Plus: Release 12.1.0.2.0 Production on 星期五 12月 5 13:57:16 2014
  

  
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
  

  
ERROR:
  
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
  

  

  
请输入用户名:
  这次登录失败了,原因就是tnslsnr侦听器并没有公开orcl12c.xy.com这个服务。这是因为这个服务是实例启动后自动向侦听器动态注册的,现在实例还没有启动,当然也就没有注册这个服务。解决办法就是提前静态注册,具体做法是修改$ORACLE_HOME/network/admin/listener.ora这个文件,添加静态服务项,如下:
# listener.ora Network Configuration File: /opt/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora  
# Generated by Oracle configuration tools.
  

  
LISTENER =
  
  (DESCRIPTION_LIST =
  
    (DESCRIPTION =
  
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  
    )
  
  )
  

  
SID_LIST_LISTENER =
  
   (SID_LIST =
  
     (SID_DESC =
  
       (ORACLE_HOME = /opt/app/oracle/product/12.1.0/dbhome_1)
  
       (SID_NAME = orcl12c)
  
     )
  
    )
  如此一来,侦听器已启动就会自动想外公布这个名为orcl12c的服务,并对应到orcl12c这个SID的实例上。通过lsnrctl stop; lsnrctl start;重新启动tnslsnr之后,就会通过lsnrctl status看到这个服务了。如下图:
[oracle@centos192 ~]$ lsnrctl status  

  
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 05-DEC-2014 04:47:25
  

  
Copyright (c) 1991, 2014, Oracle.  All rights reserved.
  

  
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
  
STATUS of the LISTENER
  
------------------------
  
Alias                     LISTENER
  
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
  
Start Date                04-DEC-2014 14:23:19
  
Uptime                    0 days 14 hr. 24 min. 6 sec
  
Trace Level               off
  
Security                  ON: Local OS Authentication
  
SNMP                      OFF
  
Listener Parameter File   /opt/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
  
Listener Log File         /opt/app/oracle/diag/tnslsnr/centos192/listener/alert/log.xml
  
Listening Endpoints Summary...
  
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
  
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  
Services Summary...
  
Service "orcl12c" has 1 instance(s).
  
  Instance "orcl12c", status UNKNOWN, has 1 handler(s) for this service...
  
[oracle@centos192 ~]$
  尽管SID为orcl12c的实例并没有启动,但是侦听器已经把它提供的服务对外发布了。此时就可以通过远程连接它了,尽管还是一个空实例。
C:\>sqlplus sys/syspassword@172.16.2.192/orcl12c as sysdba;  

  
SQL*Plus: Release 12.1.0.2.0 Production on 星期五 12月 5 14:07:53 2014
  

  
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
  

  
已连接到空闲例程。
  

  
SQL>
4 总结
  为清楚起见,总结本地连接和远程连接的特点为如下表格。
连接方式谁负责产生专用服务器进程如何确定要连接的实例如何验证登录用户本地连接sqlplus$ORACLE_HOME和$ORACLE_SID环境变量1 运行sqlplus的操作系统账户是否是安装oracle软件拥有者 2 密码文件 3 数据库自身远程连接tnslsnr侦听进程客户端提供的服务名1 密码文件 2 数据库自身  另一个需要注意的就是 SYS 这个特殊账户和 as sysdba这个特殊身份。只要是 as sysdba身份,必须是SYS这个账户名,反过来这不成立,因为SYS还可以以其他身份登入系统。
  登录验证流程图:

  2014年12月6日更正:
  按照Oracle文档说明,使用具有管理权限的身份登录时(as sysdba, as sysoper, as syskm, as sysbackup, as sysdg),根本不会去数据库字典验证,只能通过密码文件、操作系统等外部验证手段。下面是官网给出的认证流程图。

  这些特殊管理权限身份特殊,使用它们连接时,会话用户和当前schema都是特定的。
  然而通过实际实验,我发现如果实例已经启动,那么远程连接的话,认证首先是数据库字典而不是密码文件。我做的简单实验就是sqlplus sysbackup/systembackuppassword@172.16.2.192/orcl12c as sysbackup; 如果实例是启动的,那么这个连接将会失败,因为sysbackup账户是被锁定的,而如果实例尚未启动,这个连接将会成功。所以官方的文档也许有不正确的地方,还希望大家继续探讨。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-568457-1-1.html 上篇帖子: Oracle 学习之数据仓库(一)导入Oracle 11g Global samples schema 下篇帖子: Oracle Goldengate 介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表