本文针对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_64
④ curl -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.local4、重启服务器,验证是否成功,可以查看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权限