Oracle 19c Centos7 静默安装记录整理

大家好,我是明哥!

最近自己在某台 Centos7上安装了 Oracle 19c, 特地整理记录了下过程,跟大家分享下。(卷一下,搞大数据的,怎么能不懂 RDBMS的扛把子 Oracle 的方方面面呢,哈哈)

01 Oracle 安装方式概述

Oracle的安装,一般使用官方提供的Oracle Universal Installations (OUI) 来进行安装,OUI支持图形化的安装和非图形化的静默安装两种方式。

图形化的安装方式是向导式的比较直观,但需要在服务器上安装图形组件比如Gnome,且需要配置运行级别runLevel为多用户图形级别,此时对服务器资源消耗较大,所以在服务器没有安装图形组件时,或者在大规模批量安装部署数据库时,一般都选用静默安装。

本文重点讲述静默安装。

02 Oracle OUI 静默安装要点概述

Oracle OUI 静默安装,即 Oracle OUI Silent Installations,之所以能实现静默,是因为底层通过三个 response files 指定了一些必需的配置项的具体设置,管理员可以通过修改这三个 response file,针对自己的情况进行定制配置,从而实现静默安装。

这三个 response files,说明如下:

  • $ORACLE_HOME/install/response/db_install.rsp: 静默式安装或升级 oracle 二进制包时使用;

  • $ORACLE_HOME/assistants/dbca/dbca.rsp: 静默式安装、配置、删除数据库实例时使用;

  • $ORACLE_HOME/assistants/netca/netca.rsp: 静默式配置 oracle 数据库的网络监听时使用;

在执行静默安装前,最好备份这三个文件。

03 Oracle 正式安装前软硬件配置检查和资源下载

该步骤是正式安装前的准备工作,主要涉及一些软硬件配置检查(硬件资源的检查和一些软件配置项的更改),以及 oracle 安装包的下载。

  1. 检查硬件配置:

  • 内存至少8G: grep MemTotal /proc/meminfo

  • SWAP分区至少8G: grep SwapTotal /proc/meminfo

  • 磁盘空间至少10g,其中/tmp目录下空间至少2g: df -h

  1. 配置 /etc/hosts 和 /etc/hostname;

  2. 配置 selinux 为permissive或disabled:涉及文件/etc/selinux/config 和命令 setenforce Permissive

  3. 关闭防火墙:systemctl stop/disalbe firewalld

  4. 确认操作系统版本,并下载对应版本的 preinstall rpm包(该rpm 包可以用来在正式安装前执行一些必要的配置);

187f37b068277f8d91e60cfe4ea981b5.png
image
  1. 下载 oracle19c 的二进制zip安装包;

8e6be4967e6463927779034a9ce54b7b.png
image

说明:

  • preinstall rpm 包下载链接如下:https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

  • zip 安装包的下载链接如下:https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html

04 Oracle正式安装前的准备工作

该步骤是正式安装前的准备工作,主要涉及一些依赖包的安装,Oracle运行时必需目录的创建和赋权,oracle系统用户的创建和环境变量的配置,以及一些辅助脚本的创建及赋权。

  1. 执行安装前自动配置:yum localinstall ./oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm020ff4e30e9b205979aeda88b3fe8b07.png注意:该步骤自动在操作系统上创建了oracle系统用户;6e6ae3ce82d74a3ac1b38ceeddc8da08.png

  2. 创建oracle运行时必需的目录并赋权;

mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p /u02/oradata
mkdir /u02/flash_recovery_area
chown -R oracle:oinstall /u01 /u02
chmod -R 775 /u01 /u02
  1. 创建配置环境变量的辅助脚本,和数据库启停的辅助脚本,并赋权:

mkdir /home/oracle/scripts
touch /home/oracle/scripts/setEnv.sh
touch /home/oracle/scripts/start_all.sh 
touch /home/oracle/scripts/stop_all.sh 
chown -R oracle:oinstall /home/oracle/scripts
chmod u+x /home/oracle/scripts/*.sh

上述脚本具体内容如下:
cat > /home/oracle/scripts/setEnv.sh <<EOF
# Oracle Settings
export TMP=/tmp
export TMPDIR=\$TMP
export ORACLE_HOSTNAME=uf30-2
export ORACLE_UNQNAME=cdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/19.0.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=ORA19C
export PDB_NAME=pdb1
export DATA_DIR=/u02/oradata
export PATH=/usr/sbin:/usr/local/bin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOF

cat > /home/oracle/scripts/start_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbstart \$ORACLE_HOME
EOF

cat > /home/oracle/scripts/stop_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
dbshut \$ORACLE_HOME
EOF
  1. 配置环境变量 /home/oracle/.bash_profile,引用上述环境变量配置辅助脚本:

echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile
  1. 配置完成后,相关脚本内容截图如下:

bba94740c09c5e43b8ef74cf1fa43845.png
环境变量辅助脚本
1d5caefe7f0e1fa55f23dc9e334accdb.png
环境变量
18439c6f423ea18284585fd2fbdbfb15.png
启停辅助脚本

注意:

  • 上述环境变量辅助脚本 setEnv 中的配置项 ORACLE_SID=ORA19C 和 PDB_NAME=PORA19C1,跟后文 dbca 配置文件$oracle_home/assistants/dbca/dbca.rsp 中的配置项sid=ORA19C 和pdbName=PORA19C1 是一一呼应的。

05 使用 runInstaller 安装 Oracle 二进制软件包

说明:

  • 以下操作,需要切换为 oracle 系统用户再进行操作;

  • Oracle 系统用户,是前一个步骤安装 preinstall rpm 包时自动创建的

  • Oracle 系统用户的密码,管理员可以手动通过命令进行设置 (passwd oracle)

以下是详细安装步骤。

  1. 解压下载的oracle19c的二进制zip包到 $ORACLE_HOME目录下;

9e9d39890fe0494ca3c66cb41d0a645a.png
image
  1. 配置静默安装配置文件 db_install.rsp,更改前最好备份,重点修改项如下:

oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=oinstall
oracle.install.db.OSOPER_GROUP=oinstall
oracle.install.db.OSBACKUPDBA_GROUP=oinstall
oracle.install.db.OSDGDBA_GROUP=oinstall
oracle.install.db.OSKMDBA_GROUP=oinstall
oracle.install.db.OSRACDBA_GROUP=oinstall
oracle.install.db.rootconfig.executeRootScript=false
  1. 执行静默安装前,可以执行以下命令,检查各种配置项是否配置正确:/u01/app/oracle/product/19.0.0/dbhome_1/runInstaller -executePrereqs -silent -responseFile /u01/app/oracle/product/19.0.0/db_1/install/response/db_install.rsp

c5b4801cd6abe6be0bc7ad2a865c86cd.png
image
  1. 执行静默安装

  • 可以使用以下命令安装,此时其实就是传统的互动式的GUI界面安装方式:./runInstaller

  • 静默安装命令:/u01/app/oracle/product/19.0.0/dbhome_1/runInstaller -silent -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp

  • 也可以不更改配置文件 db_install.rsp 或只更改该配置文件中部分配置项,然后在执行runInstaller命令时在命令行指定配置项,比如:

/u01/app/oracle/product/19.0.0/dbhome_1/runInstaller -ignorePrereq -waitforcompletion -silent             
    -responseFile ${ORACLE_HOME}/install/response/db_install.rsp              
    oracle.install.option=INSTALL_DB_SWONLY                                   
    ORACLE_HOSTNAME=${ORACLE_HOSTNAME}                                        
    UNIX_GROUP_NAME=oinstall                                                  
    INVENTORY_LOCATION=${ORA_INVENTORY}                                       
    SELECTED_LANGUAGES=en,en_GB                                               
    ORACLE_HOME=${ORACLE_HOME}                                                
    ORACLE_BASE=${ORACLE_BASE}                                                
    oracle.install.db.InstallEdition=EE                                       
    oracle.install.db.OSDBA_GROUP=oinstall                                          
    oracle.install.db.OSBACKUPDBA_GROUP=oinstall                                    
    oracle.install.db.OSDGDBA_GROUP=oinstall                                        
    oracle.install.db.OSKMDBA_GROUP=oinstall                                        
    oracle.install.db.OSRACDBA_GROUP=oinstall                                       
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false                                
    DECLINE_SECURITY_UPDATES=true
dbb454efd0c0bf43936e138082aae6b9.png
image
  1. 根据runInstaller安装时的提示,切换使用root执行提示中的两个脚本文件

1986f29127d11892248fa53a3742738a.png
image
  • 从执行结果的提示可以看出,root.sh执行时创建了配置文件 /etc/oratab,

  • 配置文件/etc/oratab,是 oracle 运行时的一个比较重要的配置文件,后续的 dbca 命令会更新该配置文件。

  1. 使用 sqlplus 验证软件包安装结果 上述步骤完成后,oracle所有的二进制文件都已经安装完毕,可以通过sqlplus命令验证下安装结果:

f3bffcb8ccd7151183395e2106e9956d.png
image

06 使用NetCA配置 oracle监听服务

  • NetCA,即Net Configuration Assistant,可以配置oracle监听服务;

  • 同runInstaller一样,NetCA即支持 GUI 互动模式的配置,也支持SILENT静默模式的配置,静默模式下需要使用配置文件$oracle_home/assistants/netca/netca.rsp;

  • 由于监听服务比较简单,笔者在这里使用了默认配置,未做该配置文件做任何修改;

  • 可以使用以下命令安装,此时其实是非静默安装方式:./netca

以下是详细配置过程。

  1. 通过 netca 静默式配置监听服务:netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp

7f066c4e70c35979420b566050cea041.png
image
  1. 使用命令 lsnrctl status 检查监听状态

f5df0cc5caeb006baf2a03e8703c5cd9.png
image

可以对比下,没有通过 netca 配置监听服务前,lsnrctl status的输出:98bc94f86e7dc347b844471f6c50e1e4.png

07 使用 DBCA 创建 Oracle 数据库实例

  • DBCA ,即Database Configuration Assistant ,可以用来创建 Oracle 数据库实例;

  • DBCA 即支持 GUI 互动模式,也支持SILENT静默模式;

  • 静默模式下需要更改配置文件 $oracle_home/assistants/dbca/dbca.rsp;

以下是详细创建过程。

  1. 配置静默安装配置文件 $oracle_home/assistants/dbca/dbca.rsp,改动前最好备份,重点修改项如下:

gdbName=ORA19C.dbaora.com
sid=ORA19C
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=PORA19C1
pdbAdminPassword=hundsun
templateName=General_Purpose.dbc
sysPassword=hundsun
systemPassword=
dbsnmpPassword=hundsun
datafileDestination=/u02/oradata
recoveryAreaDestination=/u02/flash_recovery_area
characterSet=AL32UTF8
nationalCharacterSet=AL16UTF16
listeners=LISTENER
sampleSchema=true
databaseType=OLTP
  1. 通过dbca命令静默式创建数据库:dbca -silent -createDatabase -responseFile $ORACLE_HOME/assistants/dbca/dbca.rsp

47d17e37b6bc756cbd53d1c0b4431bfe.png
image
  1. 安装完成的提示如下:fdbf17bbbfd4244d97c40c707130c505.png

重点说明:

  • Oracle12c 引进了multitenant database architecture, 在该多租户机制下,一个 Container Databases (CDB) 可以包含多个Pluggable Databases (PDB);

  • oracle 将CDB看成一个容器,用来存放数据库,在CDB中可以有多个PDB,其中存在一个root根容器(PDB$ROOT)、一个种子容器(PDB$SEED)和多个PDBS;

  • 可以在dbca配置文件dbca.rsp 中通过配置项 createAsContainerDatabase=true,numberOfPDBs=1,pdbName=PORA19C1 来指定创建PDB,创建的PDB的个数,及PDB的名字;(当然也可以指定不创建PDB);

  • dbca 配置文件 dbca.rsp 中的配置项 sid=ORA19C 和 pdbName=PORA19C1,和上文环境变量辅助脚本 setEnv 中的配置项 ORACLE_SID=ORA19C 和 PDB_NAME=PORA19C1,是一一呼应的;

  • 创建数据库实例时,也可以使用以下命令,此时其实是非静默安装方式:./dbca;

  • Dbca也可以用来删除数据库,实例命令如下:dbca -silent -deleteDatabase -sourceDB cdb2 -sysDBAUserName sys -sysDBAPassword OraPasswd1

  • 创建数据库实例时,也可以不更改配置文件 dbca.rsp 或只更改该配置文件中部分配置项,然后在执行dbca命令时在命令行指定配置项,实例如下;

dbca -silent -createDatabase                       
     -templateName General_Purpose.dbc               
     -gdbname ${ORACLE_SID} -sid  ${ORACLE_SID} -responseFile NO_VALUE         
     -characterSet AL32UTF8  
     -sysPassword SysPassword1    
     -systemPassword SysPassword1   
     -createAsContainerDatabase true      
     -numberOfPDBs 1        
     -pdbName ${PDB_NAME}              
     -pdbAdminPassword PdbPassword1     
     -databaseType MULTIPURPOSE
     -memoryMgmtType auto_sga              
     -totalMemory 2000                
     -storageType FS          
     -datafileDestination "${DATA_DIR}"           
     -redoLogFileSize 50       
     -emConfiguration NONE                  
     -ignorePreReqs
  1. 数据库创建完成后,使用lsnrctl status验证下监听状态:

0a298c3db27d746450b911d1b28aa11b.png
image
  1. 数据库创建完成后,通过sqlplus尝试登录验证下:

91d382e17665cf2d41e7f5ef240189dc.png
image
  • 上述命令 “sqlplus sys/hundsun@ORA19C as sysdba” 中使用的 ORA19C 是配置文件 dbca.rsp 中指定的 sid=ORA19C,是 oracle数据库的System identifier (SID),;

  • 上述命令执行成功后,登录的是根容器 CDB$ROOT,若要切换到某个可插拔数据库 pdb,可以使用命令 alter session set container=pdbName;。

08 Oracle 数据库创建完毕后的必要设置

  1. 配置监听:如果使用 dbca 创建数据库时创建了可插拔数据库 pdb,则需要更改配置文件 tnsnames.ora,添加对可插拔数据库实例的监听;

  • 配置完毕的 tnsname.ora 内容如下,可见添加了对可插拔数据库实例 PORA19C1的监听配置(PORA19C1是通过配置文件dbca.rsp的配置项pdbName=PORA19C1指定的):

ed701286e1210321bd44774afd3a99d0.png
image
  • 配置文件 listener.ora 在使用netca配置网络监听时就配置好了,一般可以不修改,其内容如下:

360ed83651ab962260f1c4655fcb81cf.png
image
  • 可以使用命令 tnsping 验证对可插拔数据库pdb的监听配置是否正确:

c8cd4fdaa7a63aeaa2bdb18db34719d4.png
image
  1. 配置自启动:配置可插拔数据库随容器数据库的启动而自动启动

  • 在启动数据库的时候,可插拔数据库 PDB 并不会随着容器数据库 CDB的启动而自动启动

  • 我们可以通过创建一个触发器让 PDB 随CDB启动

  • 触发器内容如下:

CREATE OR REPLACE TRIGGER open_pdbs
   AFTER STARTUP ON DATABASE
   BEGIN
   EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
   END open_pdbs;
478ed4be7ac40ed9968a44d77ce06253.png
image
  1. 配置自启动:配置数据库实例的自启动

  • 当使用/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart 和 /u01/app/oracle/product/19.0.0/dbhome_1/bin/dbshut dbstart对oracle数据库进行启停管理时,某个数据库实例是否会自动启停,是通过配置文件 /etc/oratab 指定的;

  • /etc/oratab 配置文件中各个配置项的格式为 $ORACLE_SID:$ORACLE_HOME:<N|Y>,其中第一部分为数据库实例的 SID 即 system identifier,第二部分为数据库实例的 home目录,第三部分指定通过命令 dbstart启动数据库时,该数据库实例是否自动启动;

  • 通过设置第三部分的 restart flag 为 'Y',即可实现该数据库实例随oracle系统启动的自启动:

3c492a8d893d8c4de7580c89a23e546c.png4. 最后,上文还提供了封装的oracle数据库系统的启停脚本 /home/oracle/scripts/start_all.sh 和 /home/oracle/scripts/stop_all.sh,如果需要的话,还可以配置oracle数据库系统随 linux 操作系统的启动而自动启动,在此不再赘述。

09 Oracle 数据库创建完毕后的日常使用

在此总结提供下,Oracle 数据库创建完毕后的日常使用命令

登录本地ORACLE数据库: sqlplus / as sysdba
查询某容器是否是CDB:select name,cdb,open_mode,con_id from v$database;
查看当前容器数据库:show con_name;
查看所创建的容器数据库:show pdbs;
创建一个新的容器数据库PDB:create pluggable database pdb1 admin user pdb1 identified by pdb1 file_name_convert=('/u01/app/oracle/oradata/orcl/pdbseed/','/u01/app/oracle/oradata/orcl/pdb1/');
启动一个创建好的PDB:alter pluggable database pdb1 open;
切换使用一个启动了的PDB: alter session set container=pdb1;
创建表空间:create tablespace ts01 datafile '/u02/oradata/ORA19C/PORA19C1/ts01.dbf' size 1024M; 
查看表空间大小:select tablespace_name, file_id, sum(bytes)/1024/1024"(M)" from dba_data_files group by tablespace_name, file_id ORDER BY file_id;
创建 oracle 数据库的用户:create user hs_liming identified by hundsun default tablespace ts01;
为 oracle 数据库用户赋权:grant connect,resource,dba to hs_liming;
创建 oracle表:create table hs_liming.student(
    name varchar2(16) primary key,
    sex  number(1),
    age  number(3),
    class number(2),
    address varchar2(64)
)tablespace ts01;
正常时候用oralce表:insert into hs_liming.student values ('michael',1,35,1,'china');
正常时候用oralce表:SELECT * FROM  hs_liming.student;
删除非空表空间(包含物理文件):drop tablespace data_space_hhh including contents and datafiles;
关闭一个创建好的PDB: alter pluggable database pdb1 close;
也可以使用传统的 startup和shutdown 命令来启动和关闭PDB:
alter session set container= PORA19C1;
startup; 
shutdown immediate;
alter session set container=CDB$ROOT;

!关注不迷路 ~ 各种福利、资源定期分享!欢迎小伙伴们关注公众号!!欢迎小伙伴们添加明哥微信,备注“加群交流”,加入 ABC 技术交流群!

IT明哥
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明哥的IT随笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值