!!!服务器最好使用Redhat/Centos,如果一定要用Ubuntu的话,可能会有很多缺少库的问题需要处理,相当棘手!!!

需要使用到的安装包:

—19c安装包:LINUX.X64_193000_db_home.zip —opatch更新包:p6880880_190000_Linux-x86-64.zip —19.12补丁集:p32904851_190000_Linux-x86-64.zip

一、系统基础配置

1、创建用户和用户组

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建oinstall和dba用户组
groupadd oinstall
groupadd dba

# 创建Oracle用户
useradd -g oinstall -G dba oracle

# 设置Oracle用户密码
passwd oracle

# 查看用户
id oracle

注意:这里查出来的uid必须是oracle,gid必须是oinstall,组必须是dba

2、修改系统配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
cat >>/etc/sysctl.conf<<'EOF'
fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=524288
kernel.shmmax=2147483647
kernel.sem=250 32000 100 128
kernel.shmmni=4096
kernel.panic_on_oops=1
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
net.ipv4.conf.all.rp_filter=2
net.ipv4.conf.default.rp_filter=2
fs.aio-max-nr=1048576
net.ipv4.ip_local_port_range=9000 65500
EOF

sysctl -p



cat >>/etc/security/limits.conf<<'EOF'
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240
EOF


cat >>/etc/pam.d/login<<'EOF'
session    required     /lib64/security/pam_limits.so
session    required     pam_limits.so
EOF



cat >>/etc/profile<<'EOF'
if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384 ulimit -n 65536
    else
        ulimit -u 16384 -n 65536
    fi
fi
EOF


source /etc/profile

3、 创建数据库目录

1
2
3
mkdir -p /data/server/oracle
chown -R oracle:oinstall /data/server/oracle
chmod -R 775 /data/server/oracle

4、配置Oracle用户

1
2
3
4
5
6
su - oracle
vim ~/.bash_profile
export ORACLE_BASE=/data/server/oracle
export ORACLE_SID=orcl

source ~/.bash_profile

二、安装部署及配置

1、上传安装包

1
2
3
4
5
mkdir -p /data/file/oracle
chown -R oracle:oinstall /data/file/oracle
chmod -R 775 /data/file/oracle

上传安装包到 /data/file/oracle 目录下

2、解压文件

1
2
3
su - oracle
cd /data/file/oracle/
unzip LINUX.X64_193000_db_home.zip

3、编辑文件内容

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# 切换oracle用户
su - oracle
cd /data/file/oracle/install/response/
mv db_install.rsp  db_install.rsp.bak

cat>db_install.rsp<<'EOF'
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
# 响应文件版本号

oracle.install.option=INSTALL_DB_SWONLY
# 安装选项为仅安装数据库软件

UNIX_GROUP_NAME=oinstall
# UNIX 组名为 oinstall

INVENTORY_LOCATION=/data/server/oracle/oraInventory
# Oracle 软件 Inventory(库存)位置

ORACLE_HOME=/data/file/oracle
# Oracle 软件安装目录

ORACLE_BASE=/data/server/oracle
# Oracle 软件基础目录

oracle.install.db.InstallEdition=EE
# 安装的 Oracle 版本为 Enterprise Edition

oracle.install.db.OSDBA_GROUP=dba
# OSDBA 组名为 dba

oracle.install.db.OSOPER_GROUP=oinstall
# OSOPER 组名为 oinstall

oracle.install.db.OSBACKUPDBA_GROUP=oinstall
# OSBACKUPDBA 组名为 oinstall

oracle.install.db.OSDGDBA_GROUP=oinstall
# OSDGDBA 组名为 oinstall

oracle.install.db.OSKMDBA_GROUP=oinstall
# OSKMDBA 组名为 oinstall

oracle.install.db.OSRACDBA_GROUP=oinstall
# OSRACDBA 组名为 oinstall

oracle.install.db.rootconfig.executeRootScript=false
# 执行 root 脚本为 false

oracle.install.db.rootconfig.configMethod=
# 配置方法为空

oracle.install.db.rootconfig.sudoPath=
# sudo 路径为空

oracle.install.db.rootconfig.sudoUserName=
# sudo 用户名为空

oracle.install.db.CLUSTER_NODES=
# 集群节点为空

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
# Starter 数据库类型为 GENERAL_PURPOSE

oracle.install.db.config.starterdb.globalDBName=ocrl
# Starter 数据库全局名称为 ocrl

oracle.install.db.config.starterdb.SID=ocrl
# Starter 数据库 SID 为 ocrl

oracle.install.db.ConfigureAsContainerDB=
# 配置为 Container Database 为空

oracle.install.db.config.PDBName=
# PDB 名称为空

oracle.install.db.config.starterdb.characterSet=
# 字符集为空

oracle.install.db.config.starterdb.memoryOption=
# 内存选项为空

oracle.install.db.config.starterdb.memoryLimit=81920
# 内存限制为81920

oracle.install.db.config.starterdb.installExampleSchemas=
# 安装示例模式为空

oracle.install.db.config.starterdb.password.ALL=oracle
# 所有密码为oracle

oracle.install.db.config.starterdb.password.SYS=
# SYS 密码为空

oracle.install.db.config.starterdb.password.SYSTEM=
# SYSTEM 密码为空

oracle.install.db.config.starterdb.password.DBSNMP=
# DBSNMP 密码为空

oracle.install.db.config.starterdb.password.PDBADMIN=
# PDBADMIN 密码为空

oracle.install.db.config.starterdb.managementOption=
# 管理选项为空

oracle.install.db.config.starterdb.omsHost=
# omsHost 为空

oracle.install.db.config.starterdb.omsPort=
# omsPort 为空

oracle.install.db.config.starterdb.emAdminUser=
# emAdminUser 为空

oracle.install.db.config.starterdb.emAdminPassword=
# emAdminPassword 为空

oracle.install.db.config.starterdb.enableRecovery=
# 启用恢复为空

oracle.install.db.config.starterdb.storageType=
# 存储类型为空

oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
# 文件系统存储数据位置为空

oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
# 文件系统存储恢复位置为空

oracle.install.db.config.asm.diskGroup=
# ASM 磁盘组为空

oracle.install.db.config.asm.ASMSNMPPassword=
# ASM SNMP 密码为空
EOF

4、开始安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 安装依赖
yum install libnsl

# 伪装为Redhat系统,Oracle默认不支持centos和kylin
export CV_ASSUME_DISTID=RHEL7.6

执行db_install.rsp文件

cd /data/file/oracle
./runInstaller -silent -responseFile  /data/file/oracle/install/response/db_install.rsp

安装成功截图:

1
2
3
#切换到root用户执行
/data/server/oracle/oraInventory/orainstRoot.sh
/data/file/oracle/root.sh

执行成功截图:

5、配置oracle用户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
su - oracle

vim .bash_profile
export ORACLE_HOME=/data/file/oracle
export ORACLE_BASE=/data/server/oracle
export ORACLE_SID=orcl
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export PATH=$PATH:$ORACLE_HOME/bin
export LANG="zh_CN.UTF-8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'

source .bash_profile

6、配置监听

1
netca /silent /responsefile  /data/file/oracle/assistants/netca/netca.rsp

7、启动监听

1
lsnrctl start

8、修改静默建库文件

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
cd  /data/file/oracle/assistants/dbca/

cp dbca.rsp  dbca.rsp.bak

cat >dbca.rsp<<'EOF'
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
# 响应文件版本号
gdbName=orcl
# 数据库全局名称为空
sid=orcl
# 数据库 SID 为orcl
databaseConfigType=SI
# 数据库配置类型为空
RACOneNodeServiceName=
# RAC One Node 服务名称为空
policyManaged=
# 策略管理为空
createServerPool=
# 创建服务器池为空
serverPoolName=
# 服务器池名称为空
cardinality=
# 配置数量为空
force=
# 强制为空
pqPoolName=
# pqPoolName 为空
pqCardinality=
# pqCardinality 为空
createAsContainerDatabase=true
# 创建为 Container Database 为空
numberOfPDBs=1
# PDB 数量为空
pdbName=orclpdb
# PDB 名称为空
useLocalUndoForPDBs=
# 为 PDB 使用本地撤消为空
pdbAdminPassword=
# PDB 管理员密码为空
nodelist=
# 节点列表为空
templateName=/data/file/oracle/assistants/dbca/templates/General_Purpose.dbc
# 模板名称为空
sysPassword=
# SYS 密码为空
systemPassword=
# SYSTEM 密码为空
oracleHomeUserPassword=
# Oracle Home 用户密码为空
emConfiguration=
# EM 配置为空
emExpressPort=5500
# EM Express 端口为 5500
runCVUChecks=
# 运行 CVU 检查为空
dbsnmpPassword=
# DBSNMP 密码为空
omsHost=
# omsHost 为空
omsPort=0
# omsPort 为空
emUser=
# EM 用户为空
emPassword=
# EM 密码为空
dvConfiguration=
# DV 配置为空
dvUserName=
# DV 用户名为空
dvUserPassword=
# DV 用户密码为空
dvAccountManagerName=
# DV 账户管理员名称为空
dvAccountManagerPassword=
# DV 账户管理员密码为空
olsConfiguration=
# OLS 配置为空
datafileJarLocation=
# 数据文件 JAR 位置为空
datafileDestination=
# 数据文件目标位置为空
recoveryAreaDestination=
# 恢复区域目标位置为空
storageType=
# 存储类型为空
diskGroupName=
# 磁盘组名称为空
asmsnmpPassword=
# ASMSNMP 密码为空
recoveryGroupName=
# 恢复组名称为空
characterSet=AL32UTF8
# 字符集为空
nationalCharacterSet=
# 国家字符集为空
registerWithDirService=
# 注册到目录服务为空
dirServiceUserName=
# 目录服务用户名为空
dirServicePassword=
# 目录服务密码为空
walletPassword=
# 钱包密码为空
listeners=LISTENER
# 监听器为空
variablesFile=
# 变量文件为空
variables=
# 变量为空
initParams=
# 初始化参数为空
sampleSchema=
# 示例模式为空
memoryPercentage=40
# 内存百分比为空
databaseType=
# 数据库类型为空
automaticMemoryManagement=false
# 自动内存管理为空
totalMemory=0
# 总内存为空
EOF



执行静默建库操作
dbca -silent -createDatabase  -responseFile  /data/file/oracle/assistants/dbca/dbca.rsp

9、数据库启停及监听启停命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# 启动数据库实例
su - oracle
[oracle@centos ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 星期六 3月 16 20:44:57 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  905968496 bytes
Fixed Size            9141104 bytes
Variable Size          239075328 bytes
Database Buffers      650117120 bytes
Redo Buffers            7634944 bytes
数据库装载完毕。
数据库已经打开。
SQL> exit
从 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0 断开

# 启动数据库监听
[oracle@centos ~]$ lsnrctl  start

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 16-3月 -2024 20:45:38

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

启动/data/file/oracle/bin/tnslsnr: 请稍候...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
系统参数文件为/data/file/oracle/network/admin/listener.ora
写入/data/server/oracle/diag/tnslsnr/oracle-1/listener/alert/log.xml的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.50)(PORT=1521)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.50)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for Linux: Version 19.0.0.0.0 - Production
启动日期                  16-3月 -2024 20:45:38
正常运行时间              00 小时 00跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          /data/file/oracle/network/admin/listener.ora
监听程序日志文件          /data/server/oracle/diag/tnslsnr/oracle-1/listener/alert/log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.50)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
监听程序不支持服务
命令执行成功

# 关闭实例
[oracle@centos ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 星期六 3月 16 20:40:11 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


连接到: 
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

# 关闭监听
[oracle@centos ~]$ lsnrctl stop

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 16-3月 -2024 20:42:28

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.50)(PORT=1521)))
命令执行成功

三、补丁库升级

1、升级检查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 确认数据库版本号及列出已应用补丁
[oracle@centos ~]$ sqlplus -v

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

[oracle@centos ~]$ cd $ORACLE_HOME
[oracle@centos oracle]$ cd OPatch/
[oracle@centos OPatch]$ ./opatch lspatches

29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
29517242;Database Release Update : 19.3.0.0.190416 (29517242)

# 确认Opatch版本
[oracle@centos ~]$ $ORACLE_HOME/OPatch/opatch version

OPatch Version: 12.2.0.1.17
OPatch succeeded.

2、升级Opatch

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 上传opatch更新包到/opt下
[root@centos ~]# cd /opt
[root@centos opt]# chown oracle:oinstall p6880880_190000_Linux-x86-64.zip
[root@centos opt]# chmod 755 p6880880_190000_Linux-x86-64.zip
[root@centos opt]# su - oralce
[oracle@centos ~]$ cd $ORACLE_HOME
[oracle@centos oracle]$ mv OPatch/ OPatchbak
[oracle@centos oracle]$ unzip /opt/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME
[oracle@centos oracle]$ $ORACLE_HOME/OPatch/opatch version

OPatch Version: 12.2.0.1.36
OPatch succeeded.

# 验证Oracle Inventory
[oracle@centos ~]$ $ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

3、检查补丁冲突

1
2
3
4
5
6
7
8
# 上传19.12补丁集到/opt下
[root@centos ~]# cd /opt
[root@centos opt]# unzip p32904851_190000_Linux-x86-64.zip
[root@centos opt]# chown -R oracle:oinstall 32904851
[root@centos opt]# chmod -R 755 32904851
[root@centos ~]# su - oracle
[oracle@centos ~]$ cd /opt/32904851/
[oracle@centos 32904851]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./

4、自动补丁安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 关闭数据库监听
[oracle@centos ~]$ lsnrctl stop
# 关闭数据库
[oracle@centos ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 星期六 3月 16 20:40:11 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


连接到: 
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
[oracle@centos ~]$ cd /opt/32904851/
[oracle@centos 32904851]$ $ORACLE_HOME/OPatch/opatch apply

5、检查补丁

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 检查输出是否正确
[oracle@centos ~]$ $ORACLE_HOME/OPatch/opatch lspatches

32904851;Database Release Update : 19.12.0.0.210720 (32904851)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
OPatch succeeded.

[oracle@centos ~]$ sqlplus -version

SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.12.0.0.0