Linux搭建Oracle数据库并进行远程连接
项目所需资源
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版本静默安装
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 9月 21 17:55 listener2109215下午5546.bak
-rw-r--r-- 1 oracle oinstall 553 10月 8 16:18 listener.ora//监听配置文件
drwxr-xr-x. 2 oracle oinstall 64 9月 21 17:47 samples
-rw-r--r--. 1 oracle oinstall 187 5月 7 2007 shrept.lst
-rw-r--r--. 1 oracle oinstall 219 9月 21 17:55 sqlnet2109215下午5546.bak
-rw-r--r--. 1 oracle oinstall 219 9月 21 17:55 sqlnet.ora
-rw-r----- 1 oracle oinstall 504 10月 8 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 10月 8 16:00 listener.ora
drwxr-xr-x. 2 oracle oinstall 64 10月 4 15:32 samples
-rw-r--r--. 1 oracle oinstall 187 5月 7 2007 shrept.lst
-rw-r--r--. 1 oracle oinstall 219 10月 4 17:01 sqlnet.ora
-rw-r----- 1 oracle oinstall 494 10月 8 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>
如上所示即为连接成功。
可能会遇到的问题
- 没有lsnrctl命令,以及没有sqlplus命令
可能原因:
~/.bash_profile文件未配置成功,需重新配置,
并且source ~/.bash_profile - ora-12154问题
可能原因:
(1)监听服务未启动,通过lsnrctl status命令查看监听服务有没启动
(2)连接的数据库实例没有在监听器中注册
(3)监听器的IP配置为localhost
(4)tnsnames.ora和listener.ora中实例名不一致
(5)客户端配置问题,检查客户端的tnsnames.ora文件