Oracle19c on 银河麒麟的安装与升级

发布时间 2023-12-31 11:32:54作者: 济南小老虎

Oracle19c on 银河麒麟的安装与升级


下载内容

preinstall  CentOS8 
https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el8.x86_64.rpm

preinstall  CentOS7
https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

下载Oracle安装软件:
https://download.oracle.com/otn/linux/oracle19c/190000/oracle-database-ee-19c-1.0-1.x86_64.rpm
注意数据库的安装软件需要登录权限才可以. 

下载补丁集合
需要注意 2023.12.29 已经到了 oracle 19.21.0.0 
下载需要MOS账号, 自己注册的账号无法下载这样的补丁集合 

需要说明的第二点是:
Oracle会将过往的12个月之前的补丁集合设置为密码保护, 不允许下载
如果下载需要提交 SR 但是提交SR 必须关联 MOS账号对应的购买序列号和服务的产品信息
所以基本上很难处理好. 

还需要注意, 需要升级 opatch的补丁包 下载路径是:
https://updates.oracle.com/download/6880880.html


系统初始化

之前总结过 这次直接拿来用
cat > /etc/redhat-release <<EOF
CentOS Linux release 8.0
EOF

然后执行: 
rpm -ivh oracle-database-preinstall-19c-1.0-1.el8.x86_64.rpm --nodeps --force

安装必备的一些软件:
yum install ksh* libnsl* -y

安装软件

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

注意这个安装比较耗时, 我这边的时间为 接近 6min. 

初始化数据库

vim /etc/init.d/oracledb_ORCLCDB-19c
# 修改部分内容如下: 
export ORACLE_VERSION=19C
export ORACLE_SID=ORA19C
export TEMPLATE_NAME=General_Purpose.dbc
export CHARSET=ZHS16GBK
export PDB_NAME=ORA19CPDB
export LISTENER_NAME=LISTENER
export NUMBER_OF_PDBS=1
export CREATE_AS_CDB=true

cd /etc/sysconfig/
scp oracledb_ORCLCDB-19c.conf oracledb_ORA19C-19C.conf

创建部分目录

chown  -R   oracle:oinstall   /opt/oracle
mkdir  -p  /opt/oracle/product/19c/dbhome_1
mkdir  -p  /opt/app/oracle/oradata/
mkdir  /opt/oracle/oraInventory   
touch  /etc/oratab
chown  oracle:oinstall  /etc/oratab

初始化数据库

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

修改环境变量

cat >/etc/profile.d/oracle.sh <<EOF
export ORACLE_SID=ORA19C
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$PATH:/opt/oracle/product/19c/dbhome_1/bin
export NLS_LANG="AMERICAN_AMERICA.UTF8"
EOF

部分设置

alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited ;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

CREATE TRIGGER open_all_pdbs
   AFTER STARTUP ON DATABASE
BEGIN
   EXECUTE IMMEDIATE 'alter pluggable database all open';
END open_all_pdbs;
/

升级最新版本的补丁包

需要使用 oracle 的MOS账号 上Oracle官网下载最新补丁包
2023.12.31时最新的补丁包是 
p35643107_190000_Linux-x86-64.zip
他的版本号是 19.21.0.0

需要现将文件上传上去. 
并且执行解压缩

升级步骤-第一步关闭数据库

1. 关闭数据库软件
su - oracle 
sqlplus / as sysdba  <<EOS
shutdown immediate 
EOS

lsnrctl stop 

升级步骤-第二步备份应用

su - oracle
echo $ORACLE_HOME
exit
mkdir /opt/oracle19.3rpmonly
chown oracle:oinstall /opt/oracle19.3rpmonly
su - oracle
cd /opt

time tar -czvf oracle19.3rpmonly/oraclebackup.tar.gz  oracle

升级步骤-第三步替换opatch目录并验证

# root用户
scp -r  35643107/* /opt/oracle/product/19c/dbhome_1/OPatch/
cd /opt/oracle/product/19c/dbhome_1
chown oracle:oinstall OPatch -R 
su - oracle 
cd /opt/oracle/product/19c/dbhome_1/OPatch/
./opatch lsinventory -detail -oh $ORACLE_HOME

提示: --------------------------------------------------------------------------------

OPatch succeeded.

基本上就可以了, 注意磁盘空间尽量保持20G以上. 

需要注意 还需要升级 opatch的版本

可以理解为  补丁包是升级Oracle的 opatch的包是升级打补丁工具的. 
下载地址就是第一部分里面讲解的:https://updates.oracle.com/download/6880880.html
需要注意这个路径很固定, 需要选择不同的版本和安装包进行使用. 

升级步骤-第四步执行升级

第一部分: 
应用升级
su - oracle 
cd /opt/oracle/product/19c/dbhome_1/OPatch/
./opatch apply 
注意升级时间可能会比较长, 需要等待. 
中间会有两次要求输入选项的的步骤, 选择 y 后继续下一步的操作. 

正在将临时补丁程序 '35643107' 应用于 OH '/opt/oracle/product/19c/dbhome_1'
中间会提示很多组件的信息. 

注意如果是Oracle19.3 的rpm包安装的版本, 不升级OPatch的话 会报错为:
The OPatch being used has version 12.2.0.1.17 while the following patch(es) require higher versions:
Patch 35643107 requires OPatch version 12.2.0.1.37.

我这边大概耗时 7min 完成. 

第二部分: 
升级数据库
lsnrctl start 打开监听
sqlplus / as sysdba 链接数据库
已经可以看到数据库版本发生了变化:

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 31 11:01:41 2023
Version 19.21.0.0.0

startup 数据库 查看 show pdbs 都是正常状态
然后执行升级数据库的脚本
time ./datapatch -verbose

注意需要先打开数据库 再升级. 
注意我这边没有任何自己创建的数据库实例, 数据14min完成升级. 

升级成功后:
需要编译一下无效对象
cd $ORACLE_HOME/rdbms/admin/
sqlplus / as sysdba <<EOS
@utlrp.sql
EOS

查看一下数据库的版本升级情况:
select patch_id, action,status,action_time,description  from dba_registry_sqlpatch;

29-DEC-23 06.24.48.466705 PM    Database Release Update : 19.3.0.0.190416 (29517242)

31-DEC-23 11.16.38.351972 AM   Database Release Update : 19.21.0.0.231017 (35643107)

可以看到我数据库的安装时间和 数据库的版本时间. 

可以看到 oracle19c 其实是四年半之前的版本了  20190416
生产环境还时很建议要升级一下版本的. 

最后

建议重启一下应用和数据库, 保证产品正常. 
su - oracle 

sqlplus / as sysdba  <<EOS
shutdown immediate 
EOS
lsnrctl stop
sqlplus / as sysdba <<EOS
startup
EOS
lsnrctl start
sqlplus / as sysdba <<EOS
alter system register ;
EOS
lsnrctl status