摘要

实在不想写这种无脑的教程,但是oracle的麻烦程度、官网文档的垃圾程度,真是让我这个小白上手太难了!

正文

实在不想写这种无脑的教程,但是oracle的麻烦程度、官网文档的垃圾程度,真是让我这个小白上手太难了!

先展示一下官网的垃圾文档

本文参考文章

环境

服务器:CentOS8.4

数据库:oracle19c

下载

下载两个,一个preinstall,跟一个oracle

sh
1
2
# 下载preinstall
wget http://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

1.png

下载Oracle19CDatabase Software Downloads | Oracle

密钥

GPG在Linux上的应用主要是实现官方发布的包的签名机制

GPG分为公钥及私钥

公钥:顾名思意,即可共享的密钥,主要用于验证私钥加密的数据及签名要发送给私钥方的数据

私钥:由本地保留的密钥,用于签名本地数据及验证用公钥签名的数据

实现原理(以Oralce签名为例):

  1. Oralce在发布其官方的RPM包时(如本地RHEL光盘及FTP空间包),会提供一个GPG密钥文件,即所谓的公钥

  2. 用户下载安装这个RPM包时,引入Oralce官方的这个RPM GPG公钥,用来验证RPM包是不是Oralce官方签名的

下载密钥

text
1
wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle

如果没有密钥,会报错。

2.png

安装

安装oracle所需要的依赖和仓库

shell
1
2
3
4
cd /etc/yum.repos.d/
sudo curl -O http://yum.oracle.com/public-yum-ol7.repo
sudo dnf -y install oracle-database-preinstall-19c.x86_64
sudo dnf -y install libnsl

执行命令

text
1
yum install oracle-database-ee-19c-1.0-1.x86_64.rpm

会自动安装oracle需要的依赖。

3.png

初始化

创建自己的CDB初始化配置文件

复制一份Oracle样本配置,并打开

shell
1
2
sudo cp /etc/init.d/oracledb_ORCLCDB-19c /etc/init.d/oracledb_JRMCDB-19c
sudo vi /etc/init.d/oracledb_JRMCDB-19c

主要是修改环境变量配置,如CDB,PDB等。

shell
1
2
export ORACLE_SID=JRMCDB
export PDB_NAME=JRMPDB1

复制配置文件

shell
1
2
sudo cp /etc/sysconfig/oracledb_ORCLCDB-19c.conf /etc/sysconfig/oracledb_JRMCDB-19c.conf
sudo vi /etc/sysconfig/oracledb_JRMCDB-19c.conf

因为只有一个Oracle SID实例,不会冲突,所以这里不改端口配置等。

配置并创建Oracle SID实例

配置oracle

shell
1
sudo /etc/init.d/oracledb_JRMCDB-19c configure

如果看到以下这句话,就安装完成了。

4.png

连接

初次连接

安装成功oracle之后,会在主机上自动创建一个oracle账户。

修改oracle用户密码

shell
1
passwd oracle

切换账户

text
1
su - oracle

加上-表示打印出上次操作的记录。

exit退回到root用户,配置环境变量

shell
1
2
cd /etc/profile.d
vi oracle.sh

添加以下内容,至于NLS_LANG是为了避免控制台英文、中文输出?号。

shell
1
2
3
4
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=JRMCDB
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

刷新环境变量

text
1
source /etc/profile

配置sqlnet.ora

shell
1
vi $ORACLE_HOME/network/admin/sqlnet.ora

添加以下内容,这是表示允许8以上版本的连接工具,进行远程连接。

text
1
2
3
SQLNET.ALLOWED_LOGON_VERSION=8
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

使用sysdba身份打开控制台

text
1
sqlplus / as sysdba

连接sysdba

text
1
conn / as sysdba

重启后启动数据库

重启后连接的操作跟上面一样,只不过要多两步

  1. 启动oracle监听
  2. 启动oracle

启动监听

shell
1
lsnrctl start

5.png

启动数据库

text
1
startup

6.png

关闭数据库

text
1
shutdown immediate

添加用户

自从oracle12c开始,oracle引入了CDB和PDB的特性。

CDB叫Container Database,数据库容器;PDB叫Pluggable Database,可插拔数据库。CDB下面有多个PDB

添加CDB用户,也就是通用用户,需要在名称中加C##

sql
1
2
-- 创建名称C##test,密码test的用户。
create user C##test identified by test;

授权

sql
1
GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE PROCEDURE,CREATE SEQUENCE to C##test;

或者这种方式授权

sql
1
grant connect,resource,dba to C##test;

Connect 角色,是授予最终用户的典型权利,最基本的权利,能够连接到ORACLE数据库中,并在对其他用户的表有访问权限时,做SELECT、UPDATE、INSERTT等操作。

  • Alter session--修改会话;

  • Create cluster--建立聚簇;

  • Create database link--建立数据库连接;

  • Create sequence--建立序列;

  • Create session--建立会话;

  • Create synonym--建立同义词;

  • Create view--建立视图。

Resource 角色,是授予开发人员的,能在自己的方案中创建表、序列、视图等。

  • Create cluster--建立聚簇;

  • Create procedure--建立过程;

  • Create sequence—建立序列;

  • Create table--建表;

  • Create trigger--建立促发器;

  • Create type--建立类型。

DBA角色,是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有所有的系统权限。

创建PDB用户,需要先切换到PDB下,再创建用户。

sql
1
2
3
alter session set container=JRMPDB1;
create user test identified by test;
GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE PROCEDURE,CREATE SEQUENCE to test;

7.png