1.环境准备

1.1 安装包 

安装文件:LINUX.X64_193000_db_home.zip 

大小:2.8GB左右

下载地址:Database Software Downloads | Oracle 中国

centos7连接到mysql centos7连接oracle数据库_oracle

 

1.2 vm虚拟机

4vcpu, 4GB内存,25G硬盘

核心数不是重点,内存建议2GB以上,硬盘20GB+,否则不够用

centos7连接到mysql centos7连接oracle数据库_数据库_02

我这里是家庭网络,路由器192.168.1.1 ,可以直接配置静态IP访问路由和网关局域网

 虚拟机桥接模式,安装好后配置static静态IP,

这里就不整NAT配置,比较繁琐

2.修改配置项

2.1 修改网络配置项:

vi /etc/sysconfig/network-scripts/ifcfg-ens33
## 修改
BOOTPROTO=static

## 末尾新增
IPADDR=192.168.1.160
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
DNS2=8.8.8.8

2.2 修改主机名hostname 和 hosts 

vi /etc/hostname
#自定义主机名
node2

vi /etc/hosts
#新增 固定ip
192.168.1.160    node2

2.3 关闭Firewalld防火墙服务 关闭SElinux保护程序

systemctl status firewalld.server 
# 查看防火墙状态
systemctl stop firewalld.server 
# 关闭防火墙
systemctl disable firewalld.server 
# 禁用防火墙

vi /etc/selinux/config

# 修改SELINUX配置 
SELINUX=disabled

2.4 oracle 依赖的C++库,yum安装

yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

安装好后可以清理yum 安装包缓存 ,缓存大概占用800M存储空间

yum clean all

2.5 创建oracle用户,安装用户,系统用户、用户组oinstall

创建用户组:

groupadd -g 2001 dba

groupadd -g 2002 asmdba

groupadd -g 2003 backupdba

groupadd -g 2004 dgdba

groupadd -g 2005 kmdba

groupadd -g 2006 racdba

groupadd -g 2007 oper

groupadd -g 2008 oinstall

创建oracle用户:

useradd -u 2100 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
#  添加用户oracle
# -u指定用户id 2100
# -g指定所属group为 oinstall 
# -G指定所属附加群组 dba,asmdba,backupdba,dgdba,kmdba,racdba,oper

创建安装文件夹:

# 创建组件清单和oracle修复组件目录
mkdir -p /u01/app/oraInventory
# 创建oracle_home目录
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

# 为什么要用 /u01/app 作为上级目录名呢? 有些是用的/XXX/oracle/product/19.3.0/db
# 因为oracle安装前需要运行 root.sh 
# root.sh中文件路径为 /u01/app/oracle/product/19.0.0/dbhome_1/XXX/XXX.sh
# 不清楚不一致是否会有异常,所以这样配置。
# 简化的路径配置个人理解应该也没事。

目录指定 user:group  授权读写:

chown -R oracle:oinstall /u01/app

chmod -R 775 /u01/app

修改oracle用户密码

passwd oracle
# enter password:******

2.6  修改内核参数 

vi /etc/sysctl.conf
# 新增如下
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 8329226240
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586

2.7 修改oracle用户的用户限制 

vi /etc/security/limits.conf
# 末尾新增如下
oracle soft nproc 65536
oracle hard nproc 65536
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 65536
oracle hard stack 65536

2.8 配置环境变量 

2.8.1 oracle用户环境变量添加

vi /home/oracle/.bash_profile
# 末尾添加
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl19c
export ORACLE_TERM=xterm
export ORACLE_OWNER=oracle
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export SHLIB_PATH==$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib
# Set shell search paths:
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH:/usr/local/bin
# CLASSPATH must include the following JRE locations:
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
# system character set 
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

2.8.2 系统环境变量

vi /etc/profile
# 末尾添加 限制资源占用数

if [ $USER = "oracle" ]; then 
   if [ $SHELL = "/bin/ksh" ]; then 
       ulimit -u 16384 
       ulimit -n 65536 
   else 
       ulimit -u 16384 -n 65536 
   fi 
fi

2.9 oracle安装文件解压

上传文件到本虚拟机,centos7桌面不支持文件拖拽、复制,可以修改重装vm-tools

也可以上传到其它虚拟机再SCP复制

直接unzip解压到指定目录:

unzip ~/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1

# unzip 解压到指定目录ORACLE_HOME
# 刷新一下文件权限 
chown -R oracle:oinstall /u01/app/

注销登录 / 重启,使用oracle用户登录

3. oracle安装

3.1 执行root.sh脚本

# 开启命令行 执行
su root
# 以root用户执行 
cd /u01/app/oracle/product/19.0.0/dbhome_1

./root.sh

3.2 启动 runInstaller 安装程序

su oracle 
# 切回oracle用户 以oracle用户执行
cd /u01/app/oracle/product/19.0.0/dbhome_1

./runInstaller

3.2 配置安装程序

centos7连接到mysql centos7连接oracle数据库_centos7连接到mysql_03

个人建议初始化安装直接选1 ,安装时间1-2小时

注意:如果需要PLSQL或者其它DB-connector以TNS连接的话,实例名称尽量自定义,否则连接会报错

其它按步骤默认配置,见机行事。

遇到弹窗提示需要切换root用户执行2个脚本 ,

新开命令窗口,切换用户,复制脚本路径,执行命令。按确定。

下一步,完成。

3.3 netca 启动监听程序管理

oracle用户下,命令行输入

netca 
# 启动监听管理程序

centos7连接到mysql centos7连接oracle数据库_数据库_04

傻瓜式操作

可以删除监听配置,修改监听配置,重新创建监听及端口

3.4 dbca 启动db创建程序

# oracle用户下 命令行输入
dbca
# 启动监听管理程序

*********
# 报错处理
# oracle数据库创建过程中提示 
# DBT-50000 无法检查可用内存。(bug)
# 重新运行dbca 添加如下参数再启动(可能需要删除原有数据库及文件)
dbca -J-Doracle.assistants.dbca.validate.ConfigurationParams=false
*********

centos7连接到mysql centos7连接oracle数据库_oracle_05

 可以创建数据库实例,删除数据库,重新配置数据库等。

netca、 dbca、 sqlplus、 lsnrctl 等程序在 $ORACLE_HOME/bin  目录下  

若配置不正确,无法输入,直接启动配置命令

可以cd 到 $ORACLE_HOME/bin 并且启动

3.5 配置listener.ora 、tnsnames.ora文件

文件目录在 $ORACLE_HOME/network/admin/

安装DB完成后,默认会启动oracle 实例,sqlplus连接数据库关闭数据库实例

[oracle@node2 admin]$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Sep 18 03:40:00 2022
Version 19.3.0.0.0

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

SQL> conn / as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl19c

先关闭数据库实例

# shutdown immediate 强制关闭数据库实例
shutdown 
#关闭数据库实例
 
# startup  启动数据库实例
# mount  挂载数据库实例
exit
# 退出sql窗口

修改监听配置项 localhost => 本机IP

cd   $ORACLE_HOME/network/admin
vi ./listener.ora
# 修改 HOST= localhost 为 本机IP
HOST = XXX.XXX.X.X

vi ./tnsnames.ora
# 修改 HOST= localhost 为 本机IP
HOST = XXX.XXX.X.X

3.6 重启数据库实例

linux关机注销重启重开 

先启动监听程序 在启动实例

# oracle 用户下 
lsnrctl status 
# 查看oracle监听状态
lsnrctl start 
# 启动监听服务
sqlplus /nolog
# 启动sql窗口
conn / as sysdba
# 以SYS用户登录
startup 
# 启动数据库实例
exit
# 退出数据库sql窗口

[oracle@node2 admin]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2022 08:49:44

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.160)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                18-SEP-2022 03:12:16
Uptime                    0 days 5 hr. 37 min. 27 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/node2/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.160)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=node2)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/orcl19c/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "e8eb1e91f3053b8ce055000000000001" has 1 instance(s).
  Instance "orcl19c", status READY, has 1 handler(s) for this service...
Service "e8ec713017f0344de055000000000001" has 1 instance(s).
  Instance "orcl19c", status READY, has 1 handler(s) for this service...
Service "orcl19c" has 1 instance(s).
  Instance "orcl19c", status READY, has 1 handler(s) for this service...
Service "orcl19cXDB" has 1 instance(s).
  Instance "orcl19c", status READY, has 1 handler(s) for this service...
Service "pdb" has 1 instance(s).
  Instance "orcl19c", status READY, has 1 handler(s) for this service...
The command completed successfully
 

oracle实例启动监听成功

3.7 DB-connector 连接oracle数据库

3.7.1 下载oracle连接驱动

下载地址:Instant Client for Microsoft Windows (x64) 64-bit

centos7连接到mysql centos7连接oracle数据库_数据库_06

 将数据库$ORACLE_HOME/network/admin/tnsnames.ora 文件或者内容复制到WINDOWS “D:\instantclient_21_3\network\admin” 、命名为 tnsnames.ora 

centos7连接到mysql centos7连接oracle数据库_centos7连接到mysql_07

3.7.2 Navicat 配置环境 

打开Navicat 菜单=>工具=>选项=>环境=>OCI环境

选择oracle instant 安装路径下的oci.dll文件

重启Navicat

centos7连接到mysql centos7连接oracle数据库_bc_08

 配置访问oracle

centos7连接到mysql centos7连接oracle数据库_centos7连接到mysql_09

3.7.3 PLSQL配置环境

PLSQL首选项=>连接

输入库目录和主目录

centos7连接到mysql centos7连接oracle数据库_数据库_10

确定保存关闭,选项配置正确会显示绿色,退出PLSQL工具

下次登录即可正常连接

其它连接工具,如DBeaver以JDBC驱动连接

4.Oracle19c 建表空间和用户

oracle数据库初始化创建临时表表空间,用户管理表表空间,创建用户,授权,登录 

4.1 创建临时表表空间

create temporary tablespace xxx_tablespace1_temp 
tempfile '/u01/app/oracle/oradata/ORCL19C/xxx_tablespace1_temp.dbf' 
size 32m autoextend on 
next 32m maxsize 2048m 
extent management local;

4.2 创建用户管理表表空间

create tablespace xxx_tablespace1 logging 
datafile '/u01/app/oracle/oradata/ORCL19C/xxx_tablespace1.dbf' 
size 32m autoextend on 
next 32m maxsize 2048m 
extent management local;

4.3 创建用户,密码,为用户指定表空间,临时表空间

create user c##xxx identified by xxx123 
default tablespace xxx_tablespace1 
temporary tablespace xxx_tablespace1_temp;

---注意:与11g不同的是,oracle12以上版本采用容器可插拔架构
---CDB , Container Database, 数据库容器  
---PDB,  Pluggable Database, 可插拔数据库
---用户创建:
---COMMOM USERS , 普通用户,一般建立在CDB层, 用户名需要以 C#或C##开头;
---LOCAL USERS , 本地用户, 仅建立在PBD层,建立的时候需要指定容器  
--- alter pluggable database PDB open;  启用XXXX容器数据库
--- alter session set container=PDB;        设置当前会话在XXXX容器数据库中 ,再运行建表

4.4 用户授权 

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。

grant connect, resource, dba to c##XXX;
# 授予用户c##XXX 连接,资源,dba权限
grant create any table to c##xxx;
grant drop any table to c##xxx;
grant create any procedure to c##xxx;
grant create any sequence to c##xxx;
grant execute any procedure to c##xxx;
grant alter any sequence to c##xxx;

4.5 新用户登录 

新用户登录,存储过程建表,测试

centos7连接到mysql centos7连接oracle数据库_centos7连接到mysql_11

 调用执行:

centos7连接到mysql centos7连接oracle数据库_centos7连接到mysql_12

 输出:

centos7连接到mysql centos7连接oracle数据库_centos7连接到mysql_13

 安装测试完成。