CentOS 7 rpm方式离线安装 Oracle 19c

1 环境配置

1.1 关闭selinux

1
2
3
vi /etc/selinux/config

SELINUX=disabled

1.2 oracle依赖

链接:https://www.aliyundrive.com/s/wRuPX22MdCY 提取码: n3x7 ,将libs文件夹下的所有安装包下载下来,上传到服务器上安装

离线安装全部依赖

1
rpm -Uvh *.rpm --nodeps --force

1.3 安装oracle-database-preinstall

分享链接里也有,官网下载地址:https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

上传到服务器 root 路径下,安装:

1
rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

安装完这个包之后,会自动创建oracle用户和相应的组,就不需要再去创建oracle用户和所需的组了,只需要设置oracle用户的密码即可。

另外,内核参数和limit也会自动设置,不需要再去配置了。

2 安装配置Oracle 19c

2.1 安装

分享链接里也有,官网下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle19c-linux-5462157.html

上传到root路径下,安装:

1
rpm -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm

image20201203194233864.png

2.2 初始化Oracle数据库

1
/etc/init.d/oracledb_ORCLCDB-19c configure

image20201203194413842.png

2.3 修改Oracle密码

非必须

1
passwd oracle

输入并确认密码。

2.4 修改配置文件

1
2
3
4
5
6
7
8
9
10
11
#打开配置文件
vi /etc/profile

#在最后追加
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$PATH:/opt/oracle/product/19c/dbhome_1/bin
export ORACLE_SID=ORCLCDB
export NLS_LANG="AMERICAN_AMERICA.UTF8"

#使环境变量生效
source /etc/profile

2.5 登录

切换到oracle用户执行数据库操作

1
2
3
su oracle

sqlplus / as sysdba

image20201203194906805.png

2.6 PDB

rpm方式安装自动会创建一个PDB数据库:ORCLPDB1,如不需要,可将其删除

1
2
3
ALTER PLUGGABLE DATABASE ORCLPDB1 CLOSE;

DROP PLUGGABLE DATABASE ORCLPDB1 including datafiles;

创建

可以使用GUI创建

1
2
3
4
5
6
CREATE PLUGGABLE DATABASE orcl ADMIN USER orcl IDENTIFIED BY oracle
STORAGE (MAXSIZE UNLIMITED)
DEFAULT TABLESPACE orcl
DATAFILE '/opt/oracle/oradata/ORCLCDB/orcl/orcl.dbf' SIZE 100M AUTOEXTEND ON
PATH_PREFIX = '/opt/oracle/oradata/ORCLCDB/orcl/'
FILE_NAME_CONVERT = ('/opt/oracle/oradata/ORCLCDB/pdbseed', '/opt/oracle/oradata/ORCLCDB/orcl');

启动

1
ALTER PLUGGABLE DATABASE ORCL OPEN;

自启动

创建触发器,实现Oracle启动后自动打开PDB

1
2
3
4
5
6
CREATE TRIGGER open_ORCL
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ORCL OPEN';
END open_ORCL;
/

注意,最后一个 / 必需

2.7 PDB用户创建

查看PDB

1
show pdbs;

切换到指定PDB

1
alter session set container=ORCL;

切换回CDB容器

1
alter session set container=CDB$ROOT;

创建临时表空间

1
CREATE TEMPORARY TABLESPACE TEST_TEMP TEMPFILE '/opt/oracle/oradata/ORCLCDB/test_temp.dbf' SIZE 100 M AUTOEXTEND ON NEXT 100 M MAXSIZE 20480 M EXTENT MANAGEMENT LOCAL;

创建表空间

1
CREATE TABLESPACE TEST_DATA LOGGING DATAFILE '/opt/oracle/oradata/ORCLCDB/test_data.dbf' SIZE 100 M AUTOEXTEND ON NEXT 100 M MAXSIZE 20480 M EXTENT MANAGEMENT LOCAL;

创建用户

1
2
3
4
5
# 使用自定义表空间
CREATE USER "TEST_USER" IDENTIFIED BY "123456" DEFAULT TABLESPACE "TEST_DATA" TEMPORARY TABLESPACE "TEST_TEMP";

# 使用默认表空间
CREATE USER "TEST_USER" IDENTIFIED BY "123456";

用户授权

1
GRANT "CONNECT", "DBA", "RESOURCE" TO "TEST_USER";

删除用户

1
drop user "TEST_USER" cascade;

2.8 只读账号

1
2
3
4
5
6
7
8
# 创建账号
CREATE USER "TEST_USER_READ" IDENTIFIED BY "TEST_USER_READ_PASSW0RD";

# 授权,连接 和 创建同义词,创建同义词,查询的时候可以不用加 数据库名.
GRANT "CONNECT" TO "TEST_USER_READ";
GRANT CREATE SYNONYM TO "TEST_USER_READ";
# 允许登录
GRANT CREATE SESSION TO "TEST_USER_READ";

把另一个用户的表查询权限全部赋予只读账号,所以需要所有表的grant select on table_name to 只读账号 语句,不可能一句一句去写,因此用select 吧所有的grant语句查出来直接执行,注意:数据库名 要大写,不然结果是空的

1
2
3
4
5
6
7
SELECT
'GRANT SELECT ON ' || owner || '.' || object_name || ' TO 只读账号;'
FROM
dba_objects
WHERE
owner IN ( '数据库名' )
AND object_type = 'TABLE';

将查到的全部语句,在 源数据库 中全部执行

源数据库 用户下所有表创建同义词

1
2
3
4
5
6
7
SELECT
'create or replace SYNONYM 只读账号. ' || object_name || ' FOR ' || owner || '.' || object_name || ';'
FROM
dba_objects
WHERE
owner IN ( '源数据库' )
AND object_type = 'TABLE';

将查到的全部语句,在 只读账号 中全部执行

1
2
# 查询
SELECT * FROM TABLE_NAME

2.9 放行端口

1
2
3
4
5
firewall-cmd --list-ports

firewall-cmd --zone=public --add-port=1521/tcp --permanent

firewall-cmd --reload

3 开机自启动

在root用户下,使用systemd 来进行 oracle数据库的启动和关闭操作. 使用的脚本为 lsnrctl和dbstart

3.1 修改启动配置

1
vi /etc/oratab

内容:

1
2
#将里面 最后一句话设置从N 修改为Y 允许启动
ORA19C:/opt/oracle/product/19c/dbhome_1:Y

3.2 设置数据库的启动命令

1
vi /usr/bin/oracle.sh

内容:

1
2
3
4
5
增加的内容为:
#! /bin/bash
# script For oracle19c.service
/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start
/opt/oracle/product/19c/dbhome_1/bin/dbstart /opt/oracle/product/19c/dbhome_1
1
chmod 777 /usr/bin/oracle.sh

3.3 设置 oracle19c.service

1
vi /etc/systemd/system/oracle19c.service

内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Oracle19c
After=syslog.target network.target

[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
Environment="ORACLE_HOME=/opt/oracle/product/19c/dbhome_1"
ExecStart=/usr/bin/oracle.sh

[Install]
WantedBy=multi-user.target

3.4 设置开机自动启动

1
systemctl enable oracle19c

3.5 重启生效

1
reboot

3.6 查看是否成功

1
2
3
4
5
#查看是否开机自启
systemctl list-unit-files | grep oracle19c

#查看Oracle状态
systemctl status oracle19c

4 参考

安装:

https://blog.csdn.net/ywd1992/article/details/92830401

https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/running-rpm-packages-to-install-oracle-database.html#GUID-BB7C11E3-D385-4A2F-9EAF-75F4F0AACF02

http://www.dbdream.com.cn/2019/05/%E5%9C%A8linux-6-5%E9%80%9A%E8%BF%87rpm%E6%96%B9%E5%BC%8F%E5%AE%89%E8%A3%85oracle-19c/

开机自启动:

https://my.oschina.net/u/4271149/blog/3552593

5 GUI配置界面

切换到oracle用户环境下操作

1
2
export DISPLAY=192.168.68.1:0.0
cd /opt/oracle/product/19c/dbhome_1/bin

打开netca

1
netca

打开dbca

1
dbca