1 环境配置

1.1 关闭selinux

vi /etc/selinux/config

SELINUX=disabled

1.2 oracle依赖

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

离线安装全部依赖

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 路径下,安装:

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路径下,安装:

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

image20201203194233864.png

2.2 初始化Oracle数据库

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

image20201203194413842.png

2.3 修改Oracle密码

非必须

passwd oracle

输入并确认密码。

2.4 修改配置文件

#打开配置文件
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用户执行数据库操作

su oracle

sqlplus / as sysdba

image20201203194906805.png

2.6 PDB

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

ALTER PLUGGABLE DATABASE ORCLPDB1 CLOSE;

DROP PLUGGABLE DATABASE ORCLPDB1 including datafiles;

创建

可以使用GUI创建

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');

启动

ALTER PLUGGABLE DATABASE ORCL OPEN;

自启动

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

CREATE TRIGGER open_ORCL
AFTER STARTUP ON DATABASE
BEGIN
   EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ORCL OPEN';
END open_ORCL;
/

注意,最后一个 / 必需

2.7 PDB用户创建

查看PDB

show pdbs;

切换到指定PDB

alter session set container=ORCL;

切换回CDB容器

alter session set container=CDB$ROOT;

创建临时表空间

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;

创建表空间

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;

创建用户

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

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

用户授权

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

删除用户

drop user "TEST_USER" cascade;

2.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语句查出来直接执行,注意:数据库名 要大写,不然结果是空的

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

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

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

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

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

# 查询
SELECT * FROM TABLE_NAME

2.9 放行端口

firewall-cmd --list-ports

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

firewall-cmd --reload

3 开机自启动

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

3.1 修改启动配置

vi /etc/oratab

内容:

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

3.2 设置数据库的启动命令

vi /usr/bin/oracle.sh

内容:

增加的内容为:
#! /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
chmod 777 /usr/bin/oracle.sh

3.3 设置 oracle19c.service

vi /etc/systemd/system/oracle19c.service

内容:

[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 设置开机自动启动

systemctl enable oracle19c

3.5 重启生效

reboot

3.6 查看是否成功

#查看是否开机自启
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用户环境下操作

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

打开netca

netca

打开dbca

dbca
下一篇