设为首页 加入收藏

TOP

Oracle服务器连接(二)
2015-11-21 01:38:49 来源: 作者: 【 】 浏览:1
Tags:Oracle 服务器 连接
?
远程连接与本地连接的最大区别就是,必须启动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 总结
为清楚起见,总结本地连接和远程连接的特点为如下表格。
另一个需要注意的就是 SYS 这个特殊账户和 as sysdba这个特殊身份。只要是 as
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle数据库在线重做日志被删除.. 下一篇oracleocp知识点

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: