1 Oracle服务器的两类连接方式Oracle数据库连接有多种方式,按照客户端和服务器端是否同机运行可分成两大类,一是本地连接,二是通过网络连接。本地连接。顾名思义,就是客户端程序和服务器程序运行在同一台机器上。安装Oracle时,客户端程序sqlplus自动伴随安装在了服务器机器上,所以这种方式总是可用。远程连接。客户端程序和服务器端程序运行于不同的机器上。另外,Oracle在连接方面还有一个独特的特点,那就是Oracle实例尚未运行时,仍然可以通过客户端连接。其中的原因在于,服务器端负责侦听的并不是Oracle实例本身,而是另一个独立的侦听器程序tnslsnr。2 本地连接本地连接不需要侦听器工作。本地连接可以连接到已经运行的实例,也可以连接到空实例(实例尚未运行)。本地连接时,sqlplus首先根据$ORACLE_HOME找到oracle可执行文件,然后启动一个专用服务器进程,并运行这个程序。然后依据$ORACLE_HOME和$ORACLE_SID这两个环境变量来确定要连接的实例,所以连接之前必须要设定号它们.2.1 连接到已经运行的实例目前一个SID为orcl12c的实例正在运行,此时sqlplus以ORACLE安装用户oracle运行,此用户属于OSDBA组,所以oracle不需要验证用户名密码。而 "as sysdba" 则会强制以SYS用户登录。[oracle@centos192 ~]$ env | grep ORACLE

ORACLE_SID=orcl12c

ORACLE_HOME=/opt/app/oracle/product/12.1.0/dbhome_1

[oracle@centos192 ~]$ sqlplus / as sysdba;

SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 5 01:55:33 2014

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

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>

当以sysdba身份连接时,ORACLE根本不理会命令行上提供的用户名和密码,而是直接以SYS账户登录。而此时又是oracle这个操作系统账户执行sqlplus,导致不需要验证密码,所以可以正常登录。如下所示:[oracle@centos192 ~]$ sqlplus randomusername/randompassword as sysdba;

SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 5 02:28:03 2014

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

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>

如果使用了 as sysdba,而又不是oracle这个操作系统账户运行sqlplus,那么就必须提供正确的SYS账户密码了,否则登录不上。[root@centos192 ~]# sqlplus sys/wrongpassword as sysdba;

SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 5 03:49:36 2014

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

ERROR:

ORA-01017: invalid username/password; logon denied

Enter user-name:

如下是不使用as sysdba的连接。使用system用户连接。[oracle@centos192 ~]$ sqlplus system/systempassword;

SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 5 02:22:48 2014

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

Connected to:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL>

2.2 实例尚未启动时的连接这种情况其实是比较特殊的,无论是tnslsnr侦听器还是instance都没有启动,也就是说目前oracle相关的软件完全没有运行。这样建立服务器连接的任务就完全落在了sqlplus身上。其实实例是否运行与sqlplus本地连接关系不大,sqlplus照样还是首先启动一个专用服务器进程,只是这个进程无法与实例通信(实例还没有运行)。[oracle@centos192 ~]$ sqlplus / as sysdba;

SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 5 03:59:24 2014

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

Connected to an idle instance.

SQL>

如果此时不是以oracle用户运行,那么就必须提供正确的用户名和密码了,问题是数据库实例尚未启动,当然无法自身验证此用户密码。解决办法就是服务器进程会根据密码文件来验证用户。默认安装后的密码文件位于$ORACLE_HOME/dbs/目录中,里只有SYS这一个用户,所以只有SYS才能登陆。[root@centos192 ~]# sqlplus sys/syspassword as sysdba;

SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 5 04:19:04 2014

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

Connected to an idle instance.

SQL>

3 远程连接远程连接与本地连接的最大区别就是,必须启动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还可以以其他身份登入系统。

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

oracle杀连接服务器,玩转Oracle服务器连接相关推荐

  1. 玩转Oracle服务器连接

    1 Oracle服务器的两类连接方式 Oracle数据库连接有多种方式,按照客户端和服务器端是否同机运行可分成两大类,一是本地连接,二是通过网络连接. 本地连接.顾名思义,就是客户端程序和服务器程序运 ...

  2. ftp无法与服务器建立连接_建立与Oracle数据库服务器连接的两种连接模式

    建立与Oracle数据库服务器连接的两种连接模式(专用服务器与共享服务器) 在建立Oracle数据库的时候,应该会在数据库建立助手向导上面看到这么一个选项,就是数据库的连接模式采用什么方式.在Orac ...

  3. 连接远程服务器CredSSP加密Oracle修正报错解决办法

    连接远程服务器CredSSP加密Oracle修正报错解决办法: 打开注册表,快捷输入 "regedit"(类似找命令提示符 输入 cmd 一样)找文件夹 路径:HKLM(缩写)\S ...

  4. 两台Oracle服务器,使用udl测试连接

    1.有一台服务器A,安装有Oracle服务器端 2.有一台服务器B,安装有Oralce服务器端及Oracle客户端 在服务器B用udl文件连接Oracle,需要将客户端.服务器端同时配置一下Net C ...

  5. plsql无法连接linux下的oracle服务器,提示:ora-12541:TNS 无监听程序

    1 windows上安装Oracle的客户端. 2 确保linux服务器上的1521端口开放. 3 看你的window机器是够能够ping同linux服务器的ip地址 4 在windows中的Orac ...

  6. Linux ora12541无监听程序,plsql无法连接linux下的oracle服务器,提示:ora-12541:TNS 无监听程序...

    1 windows上安装Oracle的客户端. 2 确保linux服务器上的1521端口开放. 3 看你的window机器是够能够ping同linux服务器的ip地址 4 在windows中的Orac ...

  7. 远程连接服务器上的oracle数据库几种方法

    第一种情况: 若oracle服务器装在本机上,那就不多说了,连接只是用户名和密码的问题了.不过要注意环境变量%ORACLE_HOME%/network/admin/是否设置. 第二种情况: 本机未安装 ...

  8. 导出Windows服务器下的Oracle数据库并导入到Linux服务器下的Oracle数据库中

    2019独角兽企业重金招聘Python工程师标准>>> 说明: 1.Windows Oracle数据库 操作系统:Windows Server 2008 R2 IP地址:192.16 ...

  9. 无需安装Oracle,用PL/SQL直接连接Oracle服务器

    用PL/SQL连接Oracle的时候,没有必要安装Oracle服务器,只要安装一个Oracle客户端,然后使用绿色版PL/SQL连接就可以了.具体操作如下: 1.下载Oracle客户端 http:// ...

最新文章

  1. android gridview 停止滚动
  2. 微信小程序 - 更改radio和checkbox选中样式
  3. QT中的模态对话框及非模态对话框
  4. git.exe 启动 慢_四川成都surface电脑启动到一半黑屏维修服务地址电话
  5. python 循环加速_CPU靠边站!使用cuDF在GPU加速Pandas
  6. vijos 1071 01背包+输出路径
  7. python编程(json数据输入)
  8. windows10资讯和兴趣怎么关闭?
  9. android获取inflater
  10. WINDOWS10的任务管理器不能自动刷新?
  11. Atitit.异步编程 java .net php python js 的比较
  12. visio画图(保存为pdf,不留空白)
  13. OpenCore启动项中无Install macOS Big Sur 的解决办法
  14. 番茄工作法 计划表格式
  15. kali Linux 上编译并使用RFID核弹——proxmark3
  16. mysql大于等于、小于等于的写法
  17. 用C语言编写的商品库存管理系统
  18. ubuntu 22.04 网易云
  19. GVM-11 centos8 源码安装指南(OpenVas)
  20. git切换分支:The following untracked working tree files would be overwritten by checkout:

热门文章

  1. spark-env.sh配置——Spark学习日记
  2. Stlink更新ST-Link is not in the dfu mode Please restart it
  3. 【iOS开发-ARC实现-源码略读】
  4. java 8 Collectors.toMap 重复key 值处理、value为null处理
  5. 伊水缘显隐身显IP1225圣诞抢先体验版
  6. 计算机科学导论挂了,山东高校曝民间版挂科率排行榜 高等代数挂的人最多
  7. Linux内存管理(四):paging_init分析
  8. PowerPoint 中插入 Latex 公式
  9. [股市]散户高手的炒股心得(收藏)
  10. 什么是Docker, 为什么这么火