Oracle Linux 8.10安装Oracle19c(19.3.0)完整教程

安装前请仔细将文档通读一遍,安装过程中根据安装命令仔细核对,特别留意一些字体加粗或标红的字样,遇到问题请及时咨询博主

1、基础环境

1.1、操作系统

cat /etc/redhat-release

1.2、主机名

医院默认分配的主机名可能跟其他主机会有重复,所以分配给智慧护理的数据库服务器建议强制改下名。

1.2.1、查询主机名

hostnamectl

1.2.2、修改主机名

vi /etc/hostname

修改主机名为:ZHHL-DB

1.2.3、重启

主机名修改后需要重启才能生效,执行reboot命令后,正常启动,可以看到命令左侧的主机名已变更:

1.2.4、主机名与IP绑定

输入ifconfig查询当前服务器的IP地址,IP地址较为敏感,大家自行获取,获取到IP后编辑系统主机代理文件:

vi /etc/hosts

2、环境准备

2.1、创建Oracle用户和用户组

以下命令在root用户下执行:

bash 复制代码
groupadd oinstall

groupadd dba

groupadd oper

useradd -g oinstall -G dba,oper oracle

修改oracle用户的密码:

passwd oracle

修改oracle用户的密码为:12345678

连续两次输入重复密码确认即可(忽略中间密码规则复杂度校验的提示)

2.2、创建文件夹并赋予权限

以下命令在root用户下执行:

bash 复制代码
mkdir -p /home/oracle/product/19.3.0/dbhome_1

mkdir -p /home/oracle/oraInventory

mkdir -p /home/oracle/oradata

mkdir -p /home/oracle/oradatabak

chown -R oracle:oinstall /home/oracle/* chmod -R 775 /home/oracle/*

2.3、安装Oracle依赖包

2.3.1、下载依赖包和Oracle安装包

2.3.2、安装依赖包

以下命令在root用户下执行:

bash 复制代码
unzip oracle-preinstall-oraclelinux8.zip

cd oracle-preinstall-oraclelinux8/

rpm -Uvh ./* --nodeps --force

2.3.3、放置安装包

将oracle19C安装包拷贝到/home/oracle/product/19.3.0/dbhome_1目录下面,然后分配用户组,授权。以下命令在oracle用户下执行:

bash 复制代码
su - oracle

cd /home/oracle/product/19.3.0/dbhome_1/

unzip Oracle_19c_LINUX.X64_193000_db_home.zip

2.3.4、配置操作系统limits限制参数

在2.3.2步骤中,只要正确执行了安装依赖包的步骤,在Oracle Linux8.10操作系统中,安装这些依赖会默认修改操作系统的部分参数配置,包括以下操作系统Limits限制参数,相应修改的配置文件在:/etc/security/limits.d/oracle-database-preinstall-19c.conf 中,可作为参考。

以下命令在root用户下执行:

bash 复制代码
vi /etc/security/limits.conf

* soft nproc 16384

* hard nproc 16384

* soft nofile 65535

* hard nofile 65535

* soft memlock 3145728

* hard memlock 3145728

调整操作系统层面硬限制:

bash 复制代码
vi /etc/systemd/system.conf

DefaultLimitNOFILE=65535

2.3.5、配置登录PAM验证

以下命令在root用户下执行:

bash 复制代码
vi /etc/pam.d/login

session required pam_limits.so

2.3.6、修改操作系统内核参数

如果确定已执行2.3.2提前已安装oracle-preinstall依赖包,则在安装依赖包时会自动设置操作系统内核参数。不过最好核验下,防止安装依赖时未自动设置的情况

bash 复制代码
vi /etc/sysctl.conf

# 以下内容时编辑sysctl.conf配置文件的内容

fs.file-max = 6815744

kernel.sem = 250 32000 100 128

# kernel.shmmax是共享内存,用内存 * 1024 * 1024 * 1024 * 0.9 算出结果,详细的对照表参考下方表格

kernel.shmmax = 123695058124

# kernel.shmall=kernel.shmmax / 4KB 算出来

kernel.shmall = 30923764531

kernel.shmmni = 4096

kernel.panic_on_oops = 1

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

修改完系统内核参数后,执行"sysctl -p"使之生效。

以下是根据部分服务器内存可参考的配置快查表:

|-------|---------------|---------------|
| 内存 | kernel.shmall | kernel.shmmax |
| 4GB | 1932735283 | 7730941132 |
| 16GB | 3865470566 | 15461882265 |
| 32GB | 7730941132 | 30923764531 |
| 64GB | 15461882265 | 61847529062 |
| 128GB | 30923764531 | 123695058124 |

2.3.7、扩展虚拟内存(可选)

如是内存小于4G,才需要执行此步骤,否则后面会报内存不足的问题,有些虚拟机会报,购买的云服务器若是小于4G,则必须执行此步骤,若是大于4G,则跳过此步直接执行下一步。

以下命令在root用户下执行:

bash 复制代码
# 使用dd命令创建名为swapfile 的swap交换文件,count指定扩展4G虚拟内存

dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304

# 对交换文件格式化并转换为swap分区

mkswap /var/swapfile

# 挂载并且激活分区

swapon /var/swapfile

# 查看新swap分区是否激活

free -h

# 修改 fstab 配置,设置开机自动挂载该分区,添加如下代码

vim /etc/fstab

/var/swapfile swap swap defaults 0 0

2.3.8、设置Oracle用户环境变量

以下命令在oracle用户下执行:

bash 复制代码
vi /home/oracle/.bash_profile

# 以下内容可直接粘贴至这个配置文件中

export CV_ASSUME_DISTID=OL7

export PATH

export TMP=/tmp

export LANG=en_US

export TMPDIR=$TMP

export ORACLE_UNQNAME=orcl

export ORACLE_SID=orcl

export ORACLE_BASE=/home/oracle

export ORACLE_HOME=/home/oracle/product/19.3.0/dbhome_1

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS" PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin

# 配置文件中粘贴内容截止到此

source /home/oracle/.bash_profile

需要注意的是,每次登录oracle都需要应用一次环境变量,若是想让他永久生效,则需要把上面的内容同步添加到 /home/oracle/.bashrc 这个配置文件中

3、部署安装

3.1、安装数据库软件

以下命令在oracle用户下执行:

bash 复制代码
cd /home/oracle/product/19.3.0/dbhome_1/install/response/

cp db_install.rsp db_install.rsp.bak

vi db_install.rsp

# 以下在db_install.rsp配置文件中修改编辑

oracle.install.option=INSTALL_DB_SWONLY

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/home/oracle/oraInventory

ORACLE_HOME=/home/oracle/product/19.3.0/dbhome_1

ORACLE_BASE=/home/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.OSDBA_GROUP=dba

oracle.install.db.OSOPER_GROUP=dba

oracle.install.db.OSBACKUPDBA_GROUP=dba

oracle.install.db.OSDGDBA_GROUP=dba

oracle.install.db.OSKMDBA_GROUP=dba

oracle.install.db.OSRACDBA_GROUP=dba

oracle.install.db.rootconfig.executeRootScript=false

# 以上db_install.rsp配置文件截止编辑

# 以下命令开始执行安装

$ORACLE_HOME/runInstaller -silent -responseFile $ORACLE_HOME/install/response/db_install.rsp

重新开一个xshell窗口,登录root账号,以root用户执行下面2个脚本,第一个脚本是对目录和用户组权限的一些修改,第二个是检查日志是否有错误。

/home/oracle/oraInventory/orainstRoot.sh

/home/oracle/product/19.3.0/dbhome_1/root.sh

3.1.1 异常情况处理

若出现如下错误,

CAUSE: Some of the mandatory prerequisites are not met. See logs for details. /u01/app/oraInventory/logs/InstallActions2021-08-20_11-08-55PM/installActions20 21-08-20_11-08-55PM.log

需要忽略报错,再执行两个脚本(没有报错忽略此操作)

bash 复制代码
$ORACLE_HOME/runInstaller -ignorePrereq -silent -responseFile $ORACLE_HOME/install/response/db_install.rsp

注意:在这里会有有一个问题,若是只生成了root.sh,没有orainstroot.sh脚本,说明你之前装过oracle,且卸载的时候没有删除/etc/oraInst.loc文件,此时就只会生成root.sh一个脚本, 只执行者一个即可。

3.2、启动监听

以下命令在oracle用户下执行:

bash 复制代码
lsnrctl status

# 若是遇到"bash: lsnrctl: command not found..."的问题,需要使用"source /home/oracle/.bash_profile"重新应用环境变量

# 打开监听 lsnrctl start

3.3、创建监听(可选)

如果3.2启动监听时发现没有找到监听,使用以下命令创建监听,使用oracle用户执行以下命令:

bash 复制代码
# 执行创建监听命令

netca /silent /responseFile $ORACLE_HOME/assistants/netca/netca.rsp

# 查看监听

lsnrctl status

# 打开监听

lsnrctl start

3.4、创建数据库

以下命令在oracle用户下执行:

bash 复制代码
cd /home/oracle/product/19.3.0/dbhome_1/assistants/dbca/

cp dbca.rsp dbca.rsp.bak

# 修改dbca.rsp配置文件

vi dbca.rsp

# 以下是配置文件中的需要调整的配置项

gdbName=orcl

sid=orcl

databaseConfigType=SI

templateName=General_Purpose.dbc

# 数据库默认管理员密码DBA123456

sysPassword=ZHHL1234

systemPassword=ZHHL1234

datafileDestination={ORACLE_BASE}/oradata

characterSet=AL32UTF8

nationalCharacterSet=UTF8

listeners=LISTENER

# 原则上是sga_target占物理内存的75%,pga_aggregate_target占物理内存的25%。以下是依据128GB内存设置

# 可以自行根据实际内存设定换取更好的性能 initParams=processes=3000,sga_target=98304MB,pga_aggregate_target=32768MB

执行以下命令开始安装数据库:

bash 复制代码
dbca -silent -createDatabase -responseFile /home/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp

开始安装数据库,安装数据库持续时间较长。

3.4.1、异常情况一

出现此错误,则在oracle用户下执行:

lsnrctl start

3.4.2、异常情况二

若出现以下报错:

[FATAL] [DBT-50000] Unable to check for available memory. [FATAL] [DBT-50001] Unable to check the value of kernel parameter {0}

则执行安装脚本添加一个参数,去掉内存检查:

bash 复制代码
dbca -silent -createDatabase -J-Doracle.assistants.dbca.validate.ConfigurationParams=false -responseFile /home/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp

到此数据库安装就已经完成了,下面开始进行测试和调优设置。

若数据库未自动启动,以下命令在oracle用户下执行:

bash 复制代码
sqlplus / as sysdba

startup

使用plsql连接数据库后,执行select * from v$instance查看实例状态:

3.5、数据库调优

3.5.1、配置开机自启动

通过各步骤已完成数据库的安装,但存在数据库实例不会开机自启动的问题,即服务器重新启动后,数据库服务自动启动,但数据库实例不会自动,需要单独配置才能开机自启动。

dbca建库时都会自动创建/etc/oratab文件

以下命令在root用户下执行:

bash 复制代码
vi /etc/oratab

# 以下是oratab配置文件中的需要修改的内容

# 将"orcl:/home/oracle/product/19.3.0/dbhome_1:N",改为"orcl:/home/oracle/product/19.3.0/dbhome_1:Y"

# orcl为实例名;/home/oracle/product/19.3.0/dbhome1为oracle安装目录;会因安装的情况不同而有所不同

orcl:/home/oracle/product/19.3.0/dbhome_1:Y

编辑/etc/rc.d/rc.local启动文件,添加数据库启动脚本dbstart

bash 复制代码
vi /etc/rc.d/rc.local

# 以下是rc.local配置文件中的内容

# 末尾添加:

su - oracle -lc "/home/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start"

su - oracle -lc /home/oracle/product/19.3.0/dbhome_1/bin/dbstart

# 如果实例名SID不是orcl,则可以添加以下命令,替换实例名ORCL部分

su - oracle -lc"/home/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start ORCL"

su - oracle -lc /home/oracle/product/19.3.0/dbhome_1/bin/dbstart

# 以上配置文件截止,命令中-c代表执行脚本,脚本dbstart中指定启动的实例,脚本lsnrctl中启动配置的监听

为使得rc.local配置文件生效,记得执行以下命令使这个配置文件生效:

chmod +x /etc/rc.d/rc.local

最后使用"reboot"命令验证下数据库服务和监听是否自动启动(上线前务必要验证至少一遍)。

3.5.2、初始化表空间

以下脚本需要用SYSTEM用户登录PL/SQL_Developer的SQL窗口执行。

创建表空间,用于存放业务用户相关对象,包括表、视图、存储过程等数据库对象及业务数据,创建原则为:硬盘满足医院病历业务数据库存储需求,包括空间大小,读写速度,安全性等,服务器挂有硬盘柜且原设计用于数据存储的,要把数据存储目录创建到盘符上。

创建DBF文件前,先检查下当前服务器的"数据盘"(也就是容量最大)的盘符在哪个目录下,切记务必在盘符最大的目录下创建,不要在系统盘里创建数据文件,很容易上线没多久就磁盘被占满,引发线上事故。

这里,假设以"/home"路径就是当前服务器的数据库挂载路径为例进行创建:

sql 复制代码
# 以下以创建DEMO(DEMO)关联的数据文件为例:

CREATE TABLESPACE DEMO_DATA DATAFILE '/home/oracle/oradata/DEMO_DATA01.DBF' SIZE 30G AUTOEXTEND ON NEXT 200M;

增加表空间数据文件,每个数据文件最大为32G容量,不同规模医院配置的数据文件数量不同,可在部署部署服务器时,一次性增加完成,也可后期增加,一般是在部署服务器数据库时一次增加满足未来1~2年的使用,增加时数据文件命名安照名称+序号的命名方式,具体大小参考值:二级医院200G以上,需要7个数据文件,即32G*7=224G,三级医院300G以上,需要10个数据文件,即32G*10=320G。

增加第二个数据文件脚本:

sql 复制代码
ALTER TABLESPACE HLBL_DATA ADD DATAFILE '/home/oracle/oradata/HLBL_DATA02.DBF' SIZE 30G AUTOEXTEND ON NEXT 200M;

依次类推,逐步增加到自己需要的数据文件数量。

3.5.3、初始化用户

以下脚本需要用SYSTEM用户登录PL/SQL_Developer的SQL窗口执行。

创建用户脚本 :

sql 复制代码
CREATE USER DEMO IDENTIFIED BY USER1234 DEFAULT TABLESPACE DEMO_DATA

# 用户名称:DEMO

# 用户赋值权限:

GRANT CONNECT,RESOURCE,DBA TO DEMO;

3.5.4、参数调优

以下脚本需要用SYSTEM用户登录PL/SQL_Developer的SQL窗口执行。

sql 复制代码
# 修改用户密码默认有效期不限制

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

# 修改账户密码错误次数限制

alter PROFILE default limit failed_login_attempts unlimited;

# 关闭审计

alter system set audit_trail=none scope=spfile;

# 关闭延迟段创建

alter system set deferred_segment_creation=FALSE;

# 禁用基数反馈和LGWR日志自适应切换

alter system set "_optimizer_use_feedback"=FALSE scope=spfile sid='*';

alter system set "_use_adaptive_log_file_sync"=false scope=spfile sid='*';

alter system set "_optimizer_adaptive_cursor_sharing"=FALSE scope=spfile;

alter system set "_optimizer_extended_cursor_sharing"=NONE scope=spfile;

alter system set "_optimizer_extended_cursor_sharing_rel"=NONE scope=spfile;

alter system set "_undo_autotune"=FALSE scope=spfile;

alter system set "_optimizer_null_aware_antijoin"=FALSE scope=spfile;

alter system set "_partition_large_extents"=FALSE scope=spfile;

alter system set "_memory_imm_mode_without_autosga"=false sid='*' scope=spfile;

alter system set "_b_tree_bitmap_plans"=false sid='*' scope=spfile;

alter system set "_optimizer_reduce_groupby_key"=off scope=spfile sid='*';

alter system set "_PX_use_large_pool"=TRUE scope=spfile;

# 修改数据库允许最大连接数

alter system set processes = 3000 scope = spfile;

# 以上设置项需要重启数据库服务才能生效:

shutdown immediate;

startup;

由于系统数据库一部分数据使用CLOB数据类型存储,在导出备份时用时较长,数据库系统在导出查询数据时,超出UNDO_RETENTION设置的长时,容易造成读取数据不一致,造成导出数据时包含CLOB数据类型的表无法正常导出,备份文件缺少个别表的问题。

修改数据库系统级undo_retention参数值脚本:

sql 复制代码
ALTER SYSTEM SET UNDO_RETENTION=1800;

# 查询出所有clob数据类型的字段及所属表,并拼接成修改retention属性值的字符串

select 'ALTER TABLE ' ||TABLE_NAME||' MODIFY LOB ('||column_name||')(RETENTION);' from user_TAB_columns where data_type='CLOB' ORDER BY TABLE_NAME;

执行修改各个表参数脚本:

sql 复制代码
ALTER TABLE BB_AGI_CON MODIFY LOB (MR_TYPE_SET)(RETENTION);

ALTER TABLE BB_AGI_EVE MODIFY LOB (EVENT_SQL_XML)(RETENTION);

ALTER TABLE BB_BAS_KB MODIFY LOB (BLOB_CONT)(RETENTION);

ALTER TABLE BB_CERT_INFO MODIFY LOB (CERT_PIC)(RETENTION);

ALTER TABLE BB_CON_ELEM MODIFY LOB (MON_ELEM)(RETENTION);

ALTER TABLE BB_CON_RELA MODIFY LOB (CON_UNIT)(RETENTION);

ALTER TABLE BB_CON_XOR MODIFY LOB (KEY_WORD)(RETENTION);

ALTER TABLE BB_CON_XOR MODIFY LOB (REJE_ELEM)(RETENTION);

ALTER TABLE BB_MR_MARK MODIFY LOB (QC_EMPH)(RETENTION); ......
相关推荐
朝九晚五ฺ1 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream1 小时前
Linux的桌面
linux
xiaozhiwise2 小时前
Makefile 之 自动化变量
linux
LKID体4 小时前
Python操作neo4j库py2neo使用(一)
python·oracle·neo4j
意疏4 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
BLEACH-heiqiyihu4 小时前
RedHat7—Linux中kickstart自动安装脚本制作
linux·运维·服务器
一只爱撸猫的程序猿4 小时前
一个简单的Linux 服务器性能优化案例
linux·mysql·nginx
斗-匕5 小时前
Spring事务管理
数据库·spring·oracle
一行玩python5 小时前
SQLAlchemy,ORM的Python标杆!
开发语言·数据库·python·oracle