本文针对Centos8安装Oracle 19c

一、更新yum源 (root用户下)

在安装之前,建议先更新yum源: yum update -y
或者dnf update

二、安装相关依赖(root用户下)

yum install -y binutils* compat-libstdc* elfutils-libelf* gcc* glibc* ksh* libaio* libgcc* libstdc* make* sysstat* libXp*  glibc-kernheaders ksh binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl sysstat libXp unixODBC unixODBC-devel

安装依赖报错时,就从下面网址手动下一个安装上去后重新执行上面语句
compat-libstdc+±33下载链接

三、安装Oracle准备环境(preinstall文件)(root用户下)

这一步作用是在rhel8上安装oracle的预装包,通过yum可以自动预装各个文件,并配置环境变量,省去很多手动操作

oracle-database-preinstall文件下载链接

①查看是否有oracle用户,正常返回如下图:

id oracle

在这里插入图片描述
②安装文件

① yum install oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
报错如下:
#Last metadata expiration check: 0:50:00 ago on Sat 27 Nov 2021 02:01:00 AM EST.
#Error: 
# Problem: conflicting requests
#  - nothing provides compat-libcap1 needed by oracle-database-preinstall-19c-1.0-1.el7.x86_64
#(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate #packages)

② yum install --skip-broken  oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
#用上面的语句执行完虽然complete但是并没有安装成功。可以通过id oracle来验证。

要用下面的语来执行才行:
③ sudo rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
#如提示如下报错,则先执行下面④的语句,然后再次执行这条语句
#warning: oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID #ec551f03: NOKEY
#error: Failed dependencies:
#        compat-libcap1 is needed by oracle-database-preinstall-19c-1.0-1.el7.x86_64curl -o compat-libcap1-1.10-7.el7.x86_64.rpm http://mirror.centos.org/centos/7/os/x86_64/Packages/compat-libcap1-1.10-7.el7.x86_64.rpm

安装成功效果,需用id oracle来验证如下图所示:
在这里插入图片描述

在这里插入图片描述

四、安装Oracle数据库服务(root用户下)

Oracle下载地址

yum install oracle-database-ee-19c-1.0-1.x86_64.rpm 
#这个过程大概十分钟左右

这一步没什么难度,效果如下:
在这里插入图片描述
然后验证是否真的安装成功,如下图:
在这里插入图片描述
修改oracle用户密码,利用下面语句,效果如下图:

passwd oracle

在这里插入图片描述

五、给Oracle用户配置环境变量

#注意:配置的是oracle用户的环境变量,因为以后所有操作都是在oracle用户下操作,并不是root用户
#所以下面修改的是oracle/.bash_profile
vim /home/oracle/.bash_profile

#添加如下内容:
export ORACLE_HOSTNAME=bogon      --- linux服务器主机名,就是你的主机名,可以利用hostname命令查看
export ORACLE_UNQNAME=ORCLCDB      --- 设置成数据库实例名(根据建立的数据库修改)
export ORACLE_SID=ORCLCDB      --- 数据库实例名(根据建立的数据库修改,建议就用这个)
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c/dbhome_1
export ORACLE_INVENTORY=$ORACLE_BASE/oraInventory
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8    --- sqlplus 操作需要用到的编码,要和数据库编码一致

# 下面三个是为了解决sqlplus下方向键和回退键不能使用的问题,必须安装 rlwrap 后面会提到
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias ggsci='rlwrap ggsci'

至此,安装完了数据库软件,没错,只是安装完了软件,并没有创建数据库。

六、创建数据库

安装数据库一般有两种方式:
1.图形界面安装(使用dbca)
2.静默安装

静默安装可以通过 /opt/oracle/product/19c/dbhome_1/assistants/dbca/dbca.rsp 配置安装,也可以用19c提供的 默认配置创建,下面介绍用默认配置的方式创建:

#在root用户下运行下面命令: 
/etc/init.d/oracledb_ORCLCDB-19c configure 
#这个过程比较久,而且报错较多,慢的话可能就一个小时吧

#如果报这个错,就执行下面命令①后,再次执行上面命令
#[root@bogon ~]# /etc/init.d/oracledb_ORCLCDB-19c configure 
#Configuring Oracle Database ORCLCDB.
#The java.library.path system variable is missing or invalid. Please set #java.library.path with a correct value and retry the operation.
#[FATAL] [INS-00001] Unknown irrecoverable error
#   CAUSE: No additional information available.
#   ACTION: Refer to the logs or contact Oracle Support Services
#   SUMMARY:
#       - [DBT-00006] The logging directory could not be created.
#       - [DBT-00006] The logging directory could not be created.
#
#Database configuration failed.

① yum install libnsl

运行如下图报错,解决办法见下文:
在这里插入图片描述
上面报错解决办法

#利用下面命令查看主机名#保证第五步给Oracle用户配置环境变量的 ORACLE_HOSTNAME的值和下面命令的值一致
hostname

#利用下面命令找到listener.ora文件位置
find / -name listener.ora

#修改listener.ora文件中HOST的值为你的主机名,如下
#LISTENER =
#  (ADDRESS_LIST=
#       (ADDRESS=(PROTOCOL=tcp)(HOST=bogon)(PORT=1521))
#       (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))

#---------------------------忽略这块------------------------------------
#利用下面命令增加hostname映射
vim /etc/hosts
#添加内容如下图
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.3.170 bogon #这行是我添加的  就是ipv4地址+空格+hostname 不加这行其他主机利用图形化界面连接ip时就连不到
#---------------------------忽略这块------------------------------------
#接着再次安装 就可以成功。

再次安装成功,如下:
在这里插入图片描述
验证安装成功,如下图:
在oracle用户下,执行lsnrctl status
然后执行dbstart启动数据库。

dbstart
#如果dbstart报如下错误,那就需要修改dbstart以及dbshut文件
#since ORACLE_HOME is not set,cannot auto-start Oracle Net Listener
#oracle权限下执行下面语句
vim $ORACLE_HOME/bin/dbstart
vim $ORACLE_HOME/bin/dbshut

#修改如下
ORACLE_HOME=$1  修改为 ORACLE_HOME=$ORACLE_HOME 
ORACLE_HOME_LISTNER=$1 修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME 

然后再次dbstart应该就会成功!

在这里插入图片描述
利用sqlplus命令以超级管理员身份(sysdba)登录数据库:

 sqlplus / as sysdba
 #接着会出现SQL>的一行,然后输入下面命令后按下回车键,如果出现非error数据即数据库安装成功。
 select username from dba_users;

七、设置开机自动启动数据库服务

oracle安装完毕后默认是不伴随开机启动的,需自行设置,下面是设置方法:

1.修改文件: 
vim /etc/oratab
#将ORCLCDB:/opt/oracle/product/19c/dbhome_1: N    改为:ORCLCDB:/opt/oracle/product/19c/dbhome_1: Y
#如果这一步没找到oratab文件,那我们就创建一个。
#找到安装路径
[root@bogon oracle]# find / -name listener.ora 
/opt/oracle/product/19c/dbhome_1/network/admin/samples/listener.ora
/opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
 #cd进去
[root@bogon oracle]# cd /opt/oracle/product/19c/dbhome_1 
#执行此命令,用来创建oratab文件
[root@bogon dbhome_1]# ./root.sh  
#接着编辑oratab文件,如果里面没有类似的话ORCLCDB:/opt/oracle/product/19c/dbhome_1: N
[root@bogon ~]# vim /etc/oratab
自己增加该语句,格式:数据SID+数据库安装路径+:+Y
如:ORCLCDB:/opt/oracle/product/19c/dbhome_1: Y

#一定要保证 dbstart管用,否则这一步就总不起作用。

2.修改centos系统启动脚本: 
vim /etc/rc.d/rc.local
在最后加入以下两行:
su oracle -lc "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start"  #启动监听
su oracle -lc /opt/oracle/product/19c/dbhome_1/bin/dbstart  #启动数据库

3.修改centos系统启动脚本权限: 
chmod +x /etc/rc.d/rc.local

4、重启服务器,验证是否成功,可以查看oracle进程,通过: 
ps -ef | grep ora_

在这里插入图片描述

八、centos8安装注意事项 (一定要开启防火墙端口)

1、命令窗口sqlplus输入方向键和回退键会变成乱码,需要安装 rlwrap-0.43-5.el8.x86_64.rpm

yum  install rlwrap-0.43-5.el8.x86_64.rpm

2、sql查询出来的数据中文时显示乱码
上面 第三步操作中配置文件 NLS_LANG 要根据数据库编码配置,可以通过语句查询:select userenv(‘language’) from dual;

3、数据库用户密码有效期默认是180天,建议改成无限期
– 查询数据库用户密码有效期,可以看到默认是180天

SELECT  * FROM dba_profiles s Where s.profile = 'DEFAULT' AND resource_name = 'PASSWORD_LIFE_TIME' ;

-- 修改为永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED ;

4、如果centos8开了防火墙,还需要关闭防火墙或添加监听端口,添加端口如下:

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

参考链接

九、创建用户问题

我们用上面的方法静默安装不知道为什么没有创建任何用户,只能用sqlplus登录数据库,利用客户端工具连接时总是报各种invalid user 等错误;可以用下面的方法创建用户,并利用datagrip等工具连接数据库:

CDB、PDB用户创建和用户权限的区别和总结参考链接

#利用语句创建用户总报如下错误:
SQL> create user tff identified by tff;
create user tff identified by tff
ERROR at line 1:
ORA-65096: invalid common user or role name

#原因:
#(详细参考上面CDB、PDB用户创建和用户权限的区别和总结参考链接)
#我们默认创建容器的是在CDB中,利用下面语句查看所在容器,查询结果一般都是CDB。
select sys_context ('USERENV', 'CON_NAME') from dual;

#创建用户时用户名必须以C##或c##开头,否则就会报错invalid common user or role name
#创建成功示例:
create user C##test1 identified by 123456;
col username format a20--设置列username显示20个字符
select username,created from dba_users where created>sysdate-1;--查看最新增加的用户
grant dba to C##test1;--赋予用户C##test1 dba权限
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐