设为首页 加入收藏

TOP

Oracle服务器连接(一)
2015-11-21 01:38:49 来源: 作者: 【 】 浏览:2
Tags:Oracle 服务器 连接
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 远程连接
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle数据库在线重做日志被删除.. 下一篇oracleocp知识点

评论

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