CentOS8安装Oracle19c
发布于2021-09-08 21:29:46,更新于2024-09-30 15:40:01,标签:devops oracle 文章会持续修订,转载请注明来源地址:https://meethigher.top/blog实在不想写这种无脑的教程,但是oracle的麻烦程度、官网文档的垃圾程度,真是让我这个小白上手太难了!
先展示一下官网的垃圾文档
本文参考文章
- CentOS 8安装最新Oracle19c数据库
- yum 安装时出现 Couldn t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
- CentOS 8 搭建 oracle19C (安装与配置)全过程
- 解决Oracle 19c服务端中文显示问号的方法-HTMer
- java.sql.SQLException: ORA-28040: 没有匹配的验证协议(odbc6.jar,数据库用的是orcal12)
- https://community.oracle.com/tech/developers/discussion/4288833/ora-65096-invalid-common-user-or-role-name
- Oracle-报错:ORA-12541:TNS:no listener_
- ORA-01109:数据库未打开(解决)_
- oracle 12C的新特性-CDB和PDB
- oracle12c的CDB与PDB
环境
服务器:CentOS8.4
数据库:oracle19c
下载
下载两个,一个preinstall,跟一个oracle
1 | # 下载preinstall |
下载Oracle19CDatabase Software Downloads | Oracle
密钥
GPG在Linux上的应用主要是实现官方发布的包的签名机制
GPG分为公钥及私钥
公钥:顾名思意,即可共享的密钥,主要用于验证私钥加密的数据及签名要发送给私钥方的数据
私钥:由本地保留的密钥,用于签名本地数据及验证用公钥签名的数据
实现原理(以Oralce签名为例):
Oralce在发布其官方的RPM包时(如本地RHEL光盘及FTP空间包),会提供一个GPG密钥文件,即所谓的公钥
用户下载安装这个RPM包时,引入Oralce官方的这个RPM GPG公钥,用来验证RPM包是不是Oralce官方签名的
下载密钥
1 | wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle |
如果没有密钥,会报错。
安装
安装oracle所需要的依赖和仓库
1 | cd /etc/yum.repos.d/ |
执行命令
1 | yum install oracle-database-ee-19c-1.0-1.x86_64.rpm |
会自动安装oracle需要的依赖。
初始化
创建自己的CDB初始化配置文件
复制一份Oracle样本配置,并打开
1 | sudo cp /etc/init.d/oracledb_ORCLCDB-19c /etc/init.d/oracledb_JRMCDB-19c |
主要是修改环境变量配置,如CDB,PDB等。
1 | export ORACLE_SID=JRMCDB |
复制配置文件
1 | sudo cp /etc/sysconfig/oracledb_ORCLCDB-19c.conf /etc/sysconfig/oracledb_JRMCDB-19c.conf |
因为只有一个Oracle SID实例,不会冲突,所以这里不改端口配置等。
配置并创建Oracle SID实例
配置oracle
1 | sudo /etc/init.d/oracledb_JRMCDB-19c configure |
如果看到以下这句话,就安装完成了。
连接
初次连接
安装成功oracle之后,会在主机上自动创建一个oracle账户。
修改oracle用户密码
1 | passwd oracle |
切换账户
1 | su - oracle |
加上-
表示打印出上次操作的记录。
exit退回到root用户,配置环境变量
1 | cd /etc/profile.d |
添加以下内容,至于NLS_LANG是为了避免控制台英文、中文输出?
号。
1 | export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 |
刷新环境变量
1 | source /etc/profile |
配置sqlnet.ora
1 | vi $ORACLE_HOME/network/admin/sqlnet.ora |
添加以下内容,这是表示允许8以上版本的连接工具,进行远程连接。
1 | SQLNET.ALLOWED_LOGON_VERSION=8 |
使用sysdba身份打开控制台
1 | sqlplus / as sysdba |
连接sysdba
1 | conn / as sysdba |
重启后启动数据库
重启后连接的操作跟上面一样,只不过要多两步
- 启动oracle监听
- 启动oracle
启动监听
1 | lsnrctl start |
启动数据库
1 | startup |
关闭数据库
1 | shutdown immediate |
添加用户
自从oracle12c开始,oracle引入了CDB和PDB的特性。
CDB叫Container Database,数据库容器;PDB叫Pluggable Database,可插拔数据库。CDB下面有多个PDB
添加CDB用户,也就是通用用户,需要在名称中加C##
1 | -- 创建名称C##test,密码test的用户。 |
授权
1 | GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE PROCEDURE,CREATE SEQUENCE to C##test; |
或者这种方式授权
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下,再创建用户。
1 | alter session set container=JRMPDB1; |