Oracle19c静默部署

Oracle19c静默部署本文档详细介绍了 Oracle19c 数据库的静默部署过程 包括系统基础配置 安装部署 数据库启动与关闭的各个步骤

大家好,欢迎来到IT知识分享网。

Oracle19c静默部署文档

下载地址 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_free

image-20240316092528444

一、系统基础配置

1、创建用户和用户组
# 创建oinstall和dba用户组 groupadd oinstall groupadd dba # 创建Oracle用户 useradd -g oinstall -G dba oracle # 设置Oracle用户密码 passwd oracle # 查看用户 id oracle 注意:这里查出来的uid必须是oracle,gid必须是oinstall,组必须是dba 

image-20240316094245505

2、修改系统配置文件
cat >>/etc/sysctl.conf<<'EOF' fs.aio-max-nr= fs.file-max= kernel.shmall= kernel.shmmax= kernel.sem=250 32000 100 128 kernel.shmmni=4096 kernel.panic_on_oops=1 net.core.rmem_default= net.core.rmem_max= net.core.wmem_default= net.core.wmem_max= net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.default.rp_filter=2 fs.aio-max-nr= 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 vim /etc/pam.d/login session required /lib64/security/pam_limits.so session required pam_limits.so vim /etc/profile if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi source /etc/profile 

image-20240316094403947

image-20240316094459116

image-20240316094638772

image-20240316094720746

3、 创建数据库目录
mkdir -p /data/server/oracle chown -R oracle:oinstall /data/server/oracle chmod -R 775 /data/server/oracle 

image-20240316094802883

4、配置Oracle用户
su oracle vim ~/.bash_profile export ORACLE_BASE=/data/server/oracle export ORACLE_SID=orcl source ~/.bash_profile 

image-20240316094926771

二、安装部署及配置

1、上传安装包
mkdir -p /data/file/oracle chown -R oracle:oinstall /data/file/oracle chmod -R 775 /data/file/oracle 上传安装包到 /data/file/oracle 目录下 

image-20240316095015682

2、解压文件
su - oracle cd /data/file/oracle/ unzip LINUX.X64__db_home.zip 

image-20240316095223720

3、编辑文件内容

切换到oracle用户

su - oracle 

打开编辑db_install.rsp

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 

Oracle19c静默部署

4、开始安装
# 安装依赖 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 

开始安装

image-20240316152948244

安装成功

image-20240316153040359

以root用户执行

/data/server/oracle/oraInventory/orainstRoot.sh /data/file/oracle/root.sh 

image-20240316153359344

5、配置oracle用户
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 

image-20240316154019002

6、配置监听
netca /silent /responsefile /data/file/oracle/assistants/netca/netca.rsp 

image-20240316154432783

7、启动监听
lsnrctl start 

image-20240316154513698

8、修改静默建库文件
cd /data/file/oracle/assistants/dbca/ cp dbca.rsp dbca.rsp.bak cat dbca.rsp 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 # 总内存为空 执行静默建库操作 dbca -silent -createDatabase -responseFile /data/file/oracle/assistants/dbca/dbca.rsp 

image-20240316155943023

image-20240316161420737

此时数据库已安装成功.

三、数据库启动与关闭

只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库。

在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库。

虽然数据库正常运行,但如果没有启动监听程序,客户端就不能连接到数据库。

su - oracle [oracle@oracle-1 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期六 316 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  bytes Fixed Size  bytes Variable Size  bytes Database Buffers  bytes Redo Buffers  bytes 数据库装载完毕。 数据库已经打开。 SQL> exit 从 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0 断开 [oracle@oracle-1 ~]$ 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))) 监听程序不支持服务 命令执行成功 

image-20240316204618100

image-20240316204635834

image-20240316204709671

1、启动

Oracle数据库的完整启动过程包含以下3个步骤:

简单地说,就是:启动实例–>加载数据库–>打开数据库.

具体说明:

1.创建并启动与数据库对应的实例

在启动实例时,将为实例创建一系列后台进程和服务进程,并且在内存中创建SGA区等内存结构。在实例启动的过程中只会使用到初始化参数文件,数据库是否存在对实例的启动没有影响。如果初化参数设置有误,实例将无法启动。

2.为实例加载数据库。

加载数据库时实例将打开数据库的控制文件,从控制文件中获取数据库名称、数据文件的位置和名称等有关数据库物理结构的信息,为打开数据库做好准备。如果控制文件损坏,则实例将无法加载数据库。在加载数据库阶段,实例并不会打开数据库的物理文件—-数据文件和重做日志文件。

3.将数据库设置为打开状态。

打开数据库时,实例将打开所有处于联机状态的数据文件和重做日志文件。控制文件中的任何一个数据文件或重做日志文件无法正常打开,数据库都将返回错误信息,这时需要进行数据库恢复。

各种模式详解:

1.NoMount 模式(启动实例不加载数据库)

命令:startup nomount
讲解:这种启动模式只会创建实例,并不加载数据库,Oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据文件。在NoMount模式下,只能访问那些与SGA区相关的数据字典视图,包括VP A R A M E T E R 、 V PARAMETER、VPARAMETER、VSGA、VP R O C E S S 和 V PROCESS 和 VPROCESS和VSESSION等,这些视图中的信息都是从SGA区中获取的,与数据库无关。非安装启动,这种方式启动下可执行:重建控制文件、重建数据库、读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
模式用途:
(1)创建新数据库;
(2)重建控制文件。



2.Mount模式(加载数据库但不打开数据库)

命令:startup mount
讲解:这种启动模式将为实例加载数据库,但保持数据库为关闭状态。因为加载数据库时需要打开数据库控制文件,但数据文件和重做日志文件都都无法进行读写,所以用户还无法对数据库进行操作。 在Mount模式下,只能访问那些与控制文件相关的数据字典视图,包括VT H R E A D 、 V THREAD、VTHREAD、VCONTROLFILE、VD A T A B A S E 、 V DATABASE、VDATABASE、VDATAFILE 和 V$LOGFILE等,这些视图都是从控制文件中获取的。
模式用途:
(1)重命名数据文件;
(2)添加、删除或重命名重做日志文件;
(3)执行数据库完全恢复操作;
(4)改变数据库的归档模式。





3.Open模式(正常打开数据库)

命令:startup [open]
讲解:正常按3个步骤启动数据库。
模式用途:平时不对数据库做什么维护,像只做应用开发,用这个模式就好了。

4.强制启动模式

命令:startup force
用途&讲解:在某些情况下,使用前面的各种模式都无法成功启动数据库时,可以尝试强制启动模式。

使用Alter Database语句,还可以在各启动模式间切换。并且,还可以对数据库设置不同的状态用于不同的操作,如受/非受限抽状态、只读。

使用Alter Database语句,在各启动模式间切换。

(1)从NoMount模式切换到Mount模式(没有从mount切换到nomount的):

命令:ALTER DATABASE MOUNT;

(2)当数据库状态为关闭时,切换到Open模式

命令:ALTER DATABASE OPEN;

(3)在Open模式下,还可以选择将数据库设置为非受限状态和受限状态。

命令:

在启动Open模式时,添加restrict关键字:startup restrict

设置或取消受限状态:alter system enable\disable restricted session;

讲解:

非受限状态,就是我们平时应用程序开发用到的状态。

受限状态,当打开的数据库被设置为受限状态时,只有Create Session 和 Restricted Session系统权限 或者 具有SYSDBA 和 SYSPORE 系统权限的用户才能连接到数据库。但进入受限状态后,系统中仍然可能会存在活动的普通用户会话。

受限状态用途:

(1)执行数据导入或导出操作;

(2)暂时拒绝普通用户访问数据库;

(3)进行数据库移植或升级操作。

(4) 只读状态

设置只读命令:alter database open read only;

取消只读命令:alter database open read write;

用途&讲解:当一个正常打开的数据库被设置为只读状态时,用户只能查询数据,但不能以任何方式对数据库对象进行修改。处于只读状态,可能保证数据文件和重做日志文件中的内容不被修改,但是并不限制那些不会写入数据文件与重做日志文件的操作。

2、关闭
# 关闭实例 [oracle@oracle-1 ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期六 316 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@oracle-1 ~]$ 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))) 命令执行成功 至此,Oracle停止成功。 

image-20240316204144397

image-20240316204327049

与数据库启动一样,关闭数据库与实例也分为3步:关闭数据库–>实例卸载数据库—>终止实例

详细步骤为:

(1)关闭数据库,oracle将重做日志高速缓存中的内容写入重做日志文件,并且将数据库高速缓存中被改动过的数据写入数据文件,然后再关闭所有的数据文件和重做日志文件,这时数据库的控制文件仍然处于打开状态,但是由于数据库处于关闭状态,所以用户无法访问数据库。

(2)卸载数据库,关闭数据库后,例程才能被卸载,控制文件再这个时候被关闭,但例程仍然存在 。

(3)终止例程,进程终止,分配给例程的内存sga区被回收。

1.Nomal(正常关闭方式)

命令:shutdown nomal

讲解:正常方式关闭数据时,Oracle执行如下操作:

(1)阻止任何用户建立新的连接。

(2)等待当前所有正在连接的用户主动断开连接(此方式下Oracle不会立即断掉当前用户的连接,这些用户仍然操作相关的操作)

(3)一旦所有的用户都断开连接,则立即关闭、卸载数据库,并终止实例。(所以,一般以正常方式关闭数据库时,应该通知所有在线的用户尽快断开连接)

2.Immediate(立即关闭方式)

命令:shutdown immediate

讲解:

(1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

(2)Oracle不等待在线用户主动断开连接,强制终止用户的当前事务,将任何未提交的事务回退。(如果存在太多未提交的事务,此方式将会耗费很长时间终止和回退事务)

(3)直接关闭、卸载数据库,并终止实例。

3.Transactional(事务关闭方式)

命令:shutdown transactional

讲解:这种方式介于正常关闭方式跟立即关闭方式之间,响应时间会比较快,处理也将比较得当。执行过程如下:

(1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

(2)等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。

(3)直接关闭、卸载数据库,并终止实例。

4.Abort(终止关闭方式)

命令:shutdown abort

讲解:这是比较粗暴的一种关闭方式,当前面3种方式都无法关闭时,可以尝试使用终止方式来关闭数据库。但是以这种方式关闭数据库将会丢失一部份数据信息,当重新启动实例并打开数据库时,后台进程SMON会执行实例恢复操作。一般情况下,应当尽量避免使用这种方式来关闭数据库。执行过程如下:

(1)阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。

(2)立即终止当前正在执行的SQL语句。

(3)任何未提交的事务均不被退名。

(4)直接断开所有用户的连接,关闭、卸载数据库,并终止实例。

四、sqlplus改进

在默认的sqlplus的使用过程中发现是比较难用的,最好的例子就是不能用退格键以及掉出历史命令的上下键,这里介绍退格键的改进。

切换至oracle用户

su - oracle # 在文件末尾加入 vim ~/.bash_profile stty erase ^h source .bash_profile 

此时再进入sqlplus测试发现,退格键已经能用了

image-20240316163836557

五、Navicat远程连接Oracle

密码和用户名都正确的情况下报错:

image-20240316205124156

修改高级-SYSDBA

image-20240316205241410

用sys用户登录

image-20240316205315896

连接成功

image-20240316205332075

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114133.html

(0)
上一篇 2025-12-10 17:15
下一篇 2025-12-10 17:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信