项目所需资源

  VMVare15资源链接:https://pan.baidu.com/s/1cVzeKjqu0Cmp4qMRDbFx8Q
提取码:tdn4
  CentOS7映像文件链接:https://pan.baidu.com/s/14QyfiXYYObdynswJlOoI1g
提取码:6cxp
  Oracle11Linux版本链接:https://pan.baidu.com/s/16hWmzGudLjUEpkRzHAOGZw
提取码:y34w
  MobaXterm链接:https://pan.baidu.com/s/1vvxW4tHXhtQxjRdcpwDbDA
提取码:kle7

Oracle11Linux版本静默安装

Linux环境安装地址
Oracle安装教程地址

Oracle服务器-客户端连接

配置环境

  根据前文所给出的Linux环境安装地址以及Oracle安装教程地址来安装两台虚拟机以及在两台虚拟机上搭建Oracle环境,并安装Oracle数据库。
  笔者建立的两台虚拟机ip和主机名分别为:
  192.168.233.107 oracle01
  192.168.233.108 oracle02

  笔者以oracle01作为服务器,oracle02作为客户端为例讲解。
  两台虚拟机设备安装vim:

[root@oracle01 ~]# yum install vim      //安装vim

  切换虚拟机:

[root@oracle02 ~]# yum install vim      //安装vim

  在远程连接虚拟机中,可以将XShell5换成MobaXterm(两者都可以进行远程连接,笔者用的为MobaXterm)。

修改hosts文件

[root@oracle01 ~]# vim /etc/hosts      //更改如下:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.233.107 oracle01
192.168.233.108 oracle02

  切换虚拟机:

[root@oracle02 ~]# vim /etc/hosts      //更改如下:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.233.107 oracle01
192.168.233.108 oracle02

查看监听是否打开

  若想建立两个数据库的连接,首先,要设置服务器的监听服务,也要设置客户端的服务请求。

[root@oracle01 ~]# su oracle      //更换至oracle用户
[oracle@oracle01 root]$ lsnrctl status           //查看监听是否启动
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 09-OCT-2021 01:02:03

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                08-OCT-2021 21:20:01
Uptime                    0 days 3 hr. 42 min. 2 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /opt/app/oracle/diag/tnslsnr/oracle01/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle01)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

  出现successfully,表示监听正常运行;(笔者所示代码为静态注册的监听状态,稍后会讲解如何将动态注册修改为静态注册)
  切换虚拟机,同样操作

动态注册与静态注册

  注册就是将数据库作为一个服务注册到监听程序。客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库。这个服务名可能与实例名一样,也有可能不一样。
  实例状态为UNKNOWN值时表明此服务是静态注册的设置。这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。
  动态注册的数据库通过状态信息中的状态READY或状态BLOCKED(对于一个备用数据库)来指明。不管何时关闭数据库,动态注册的数据库都会动态地从监听器注销,而与之相关的信息将从状态列表中消失。这样,不管数据库是在运行还是已经关闭,监听器总是知道它的状态。该信息将被用于连接请求的回退(fallback)和负载平衡。
具体讲解可见https://blog.csdn.net/xiaoxiong1212/article/details/6632521

将动态注册修改为静态注册

[oracle@oracle01 root]$ cd /opt/app/oracle/product/11.2.0/db_1/network/admin
[oracle@oracle01 admin]$ ll           //查看当前文件夹下的所有文件
总用量 24
-rw-r--r--. 1 oracle oinstall 369 921 17:55 listener2109215下午5546.bak
-rw-r--r--  1 oracle oinstall 553 108 16:18 listener.ora//监听配置文件
drwxr-xr-x. 2 oracle oinstall  64 921 17:47 samples
-rw-r--r--. 1 oracle oinstall 187 57 2007 shrept.lst
-rw-r--r--. 1 oracle oinstall 219 921 17:55 sqlnet2109215下午5546.bak
-rw-r--r--. 1 oracle oinstall 219 921 17:55 sqlnet.ora
-rw-r-----  1 oracle oinstall 504 108 16:24 tnsnames.ora//tns协议连接重要文件
[oracle@oracle01 admin]$ vim listener.ora    //修改配置如下所示
# listener.ora Network Configuration File: /opt/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = /opt/app/oracle/product/11.2.0/db_1)
      (GLOBAL_HOME = orcl)//对外展示的服务名
    )
  )
ADR_BASE_LISTENER = /opt/app/oracle

配置tnsnames.ora

  ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息。

//切换至oracle02虚拟机上的oracle用户
[oracle@oracle02 admin]$ cd /opt/app/oracle/product/11.2.0/db_1/network/admin/
[oracle@oracle02 admin]$ ll
总用量 16
-rw-r--r--  1 oracle oinstall 547 108 16:00 listener.ora
drwxr-xr-x. 2 oracle oinstall  64 104 15:32 samples
-rw-r--r--. 1 oracle oinstall 187 57 2007 shrept.lst
-rw-r--r--. 1 oracle oinstall 219 104 17:01 sqlnet.ora
-rw-r-----  1 oracle oinstall 494 108 16:24 tnsnames.ora
[oracle@oracle02 admin]$ vim tnsnames.ora   //修改配置如下:
# tnsnames.ora Network Configuration File: /opt/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle02)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
ORCL01 =
  (DESCREPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
)

重启虚拟机

  在配置好oracle01的listener.ora文件和oracle02的tnsnames.ora文件后,对两台虚拟机进行重启操作,使配置生效

新建用户

  由于连接需要用到用户名和密码,且oracle数据库自带的用户没有权限访问,因此,可以新建一个用户,并授权连接权限和资源权限,以此来作为测试连接的用户。

sqlplus /nolog
SQL> connect / as sysdba
SQL> create user user1 identified by 123456;//创建用户user1,密码为123456
SQL> grant connect, resource to user1;//将connect和resource权限授予user1

远程连接

  切换至oracle02虚拟机的oracle用户

//sqlplus 用户名/密码@虚拟机host:端口port/服务名
sqlplus user1/123456@oracle01:1521/orcl
SQL*Plus: Release 11.2.0.1.0 Production on Sat Oct 9 01:50:16 2021

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

  如上所示即为连接成功。

可能会遇到的问题

  1. 没有lsnrctl命令,以及没有sqlplus命令
    可能原因:
    ~/.bash_profile文件未配置成功,需重新配置,
    并且source ~/.bash_profile
  2. ora-12154问题
    可能原因:
    (1)监听服务未启动,通过lsnrctl status命令查看监听服务有没启动
    (2)连接的数据库实例没有在监听器中注册
    (3)监听器的IP配置为localhost
    (4)tnsnames.ora和listener.ora中实例名不一致
    (5)客户端配置问题,检查客户端的tnsnames.ora文件
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐