Loading...
墨滴

IT明哥

2021/12/10  阅读:54  主题:默认主题

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

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 包可以用来在正式安装前执行一些必要的配置);
image
image
  1. 下载 oracle19c 的二进制zip安装包;
image
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.rpm image 注意:该步骤自动在操作系统上创建了oracle系统用户; image

  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. 配置完成后,相关脚本内容截图如下:
环境变量辅助脚本
环境变量辅助脚本
环境变量
环境变量
启停辅助脚本
启停辅助脚本

注意:

  • 上述环境变量辅助脚本 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目录下;
image
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
image
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
image
image
  1. 根据runInstaller安装时的提示,切换使用root执行提示中的两个脚本文件
image
image
  • 从执行结果的提示可以看出,root.sh执行时创建了配置文件 /etc/oratab,
  • 配置文件/etc/oratab,是 oracle 运行时的一个比较重要的配置文件,后续的 dbca 命令会更新该配置文件。
  1. 使用s qlplus 验证软件包安装结果 上述步骤完成后,oracle所有的二进制文件都已经安装完毕,可以通过sqlplus命令验证下安装结果:
image
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
image
image
  1. 使用命令 lsnrctl status 检查监听状态
image
image

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

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
image
image
  1. 安装完成的提示如下: image

重点说明:

  • Oracle12c 引进了multitenant database architecture, 在该多租户机制下,一个 Container Databases (CDB) 可以包含多个Pluggable Databases (PDB);
  • oracle 将CDB看成一个容器,用来存放数据库,在CDB中可以有多个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验证下监听状态:
image
image
  1. 数据库创建完成后,通过sqlplus尝试登录验证下:
image
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指定的):
image
image
  • 配置文件 listener.ora 在使用netca配置网络监听时就配置好了,一般可以不修改,其内容如下:
image
image
  • 可以使用命令 tnsping 验证对可插拔数据库pdb的监听配置是否正确:
image
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;
image
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_HOME:<N|Y>,其中第一部分为数据库实例的 SID 即 system identifier,第二部分为数据库实例的 home目录,第三部分指定通过命令 dbstart启动数据库时,该数据库实例是否自动启动;
  • 通过设置第三部分的 restart flag 为 'Y',即可实现该数据库实例随oracle系统启动的自启动:

image 4. 最后,上文还提供了封装的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明哥
IT明哥

IT明哥

2021/12/10  阅读:54  主题:默认主题

作者介绍

IT明哥