Oracle19c 静默安装(OpenEuler)

您所在的位置:网站首页 openeuler安装oracle19c Oracle19c 静默安装(OpenEuler)

Oracle19c 静默安装(OpenEuler)

2024-07-05 03:56| 来源: 网络整理| 查看: 265

一、概述

我一般都是用runInstaller和dbca的图形界面安装Oracle,但是这次安装,受到网络限制,不能用弹出窗口,只能用静默方式,还是使用这些可执行程序,不过要加一个 -silent 选项,参考了网上的文章,加上自己的实际情况,Oracle19c的静默安装包括四部分:

1、runInstaller 静默安装软件19c软件包

2、netca静默配置网络

3、dbca静默建库

4、导入表结构和数据

二、runInstaller 静默安装软件19c软件包

这一步包括安装前的准备,安装19c至少需要两个包:

oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

LINUX.X64_193000_db_home.zip

这一步参考我之前的文章:安装 Oracle 19c_oracle个人使用收费吗-CSDN博客

建用户组、用户与文章中相似,只是这次我发现可以精简一些,以下以root用户操作:

# 预安装

rpm -ivh oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm

# 只建一个用户组

groupadd -g 54321 oinstall

# 创建oracle用户并加到这个用户组

useradd -u 54321 -g oinstall oracle

然后创建目录:

mkdir -p /u01/app chown -R oracle:oinstall /u01/app chmod -R 775 /u01/app mkdir -p /u01/app/oraInventory chown -R oracle:oinstall /u01/app/oraInventory chmod -R 775 /u01/app/oraInventory mkdir -p /u01/app/oracle/cfgtoollogs mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01/app/oracle

然后在oracle用户的 .bash_profile文件中,加入环境变量: 

export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_SID=platdb export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

接下来是解压 LINUX.X64_193000_db_home.zip 到$ORACLE_HOME目录下(以oracle用户执行,注意:一定要解压到$ORACLE_HOME下) 细节没说清楚就看我上面说的那篇文章。

unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

之后就是图形安装和静默安装的区别了,图形安装见我上面的那篇文章,静默安装就是把在图形界面的选项写在response文件里。

大道至简,静默安装的命令如下(以oracle用户执行):

./runInstaller -silent -noconfig -ignorePrereq -responseFile ~/db_install.rsp

其中db_install.rsp就是配置选择所在的response文件。

$ORACLE_HOME/install/response/db_install.rsp中有个模板,里面的注释很详细,可以拷贝出一份,尝试修改和执行,-responseFile ~/db_install.rsp最好使用绝对路径。

-noconfig 表示忽略response文件中的configure部分

-ignorePrereq 表示不做预检查,因为在安装oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm时已经做了。

网上的文章,这一步还加了许多其它选项,我觉得没必要,也许他们只是照抄。

接下来就是关键的response文件怎么写,里面的参数基本和图形界面对应,静默安装oracle软件,相对比较简单,dbca会比较麻烦一些。

我的response文件内容如下,这里只有修改的变量,其它变量都用默认值:

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_HOME=/u01/app/oracle/product/19.3.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 oracle.install.db.rootconfig.configMethod=ROOT

我的配置是Enterprise Edition,只安装软件,组和用户模型只用了oinstall组,oracle用户属于这个组,我觉得其它操作系统用户组对应我们这种简单的管理模型,是不必要的。

然后就执行runInstaller,执行过程中,可能会有一些坑,我是在OpenEuler上安装的,下面就是我遇到的坑:

1、修改$ORACLE_HOME/cv/admin/cvu_config 中的变量 CV_ASSUME_DISTID=BCL21,因为我的操作系统是OpenEuler,Oracle以前没遇到过,所以这里要显式设置CV_ASSUME_DISTID,值其实可以随便设置。这个问题参考这篇帖子:

在SUSE 15 SP1上安装 Oracle 19C, 报错 PRVG-0282 : failed to retrieve the operating system distribution ID-CSDN博客

2、会提示找不到库-lclntshcore,这个库是在$ORACLE_HOME/lib下的libclntshcore.so.19.1软链接,可以拷贝一份放到 /usr/lib64下面,软链接也可以。

3、报缺少静态库 libpthread_nonshared.a ,也不用安装,参考 

glibc缺少静态库libpthread_nonshared.a导致Oracle数据库安装失败 · Issue #I5F6U6 · src-openEuler/glibc - Gitee.com

只要 ar cr /usr/lib64/libpthread_nonshared.a 生成一个空的静态文件,就可以了,至于为啥,我也不知道。

以上就是Oracle19c的静默安装,总督操作框架就是如此,具体实施的时候可能会有细微差别。

这只是安装完软件,还没有建库,建库用dbca,也是静默模式,不过我参考了网上一篇文章,他的步骤是:runInstaller安装软件(静默) => netca配置网络(静默) => dbca建库(静默),我觉得挺合理,所以下一步是用netca配置网络。

二、netca 静默配置网络

netca和dbca类型,静默模式也是 -silent 选项再加 response 文件,操作关键也是 response 文件的设置,它也有一个初始模板在 $ORACLE_HOME/assistants/netca/netca.rsp 。

好处是,这个模板可以不加任何修改,使用默认值就行。

我用的netca命令如下:

netca -silent -responsefile ~/netca.rsp

然后 lsnrctl status 查看一下状态,应该有 no services 因为数据库还没有建。

三、dbca 静默建库

dbca -silent -createDatabase -responseFile ~/dbca.rsp

response文件的模板在 $ORACLE_HOME/assistants/dbca/dbca.rsp 里面的注释很详细清晰,下面只有我修改的变量,我的配置是非容器化,单实例,是最简单的配置,需要注意的是

characterSet=ZHS16GBK nationalCharacterSet=AL16UTF16 listeners=LISTENER

这三项配置,应该与要迁移的数据库相同。

其中 gdbName、sid为了简单都设置为相同的名字:platdb

至于 variables 和 initParams 的设置,我感觉并没有生效,也许可以不设置,而是等数据库建好后再设置,尤其是内存相关的参数。

其中 

templateName=/u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc 

这个设置了默认数据文件、控制文件、redo文件的位置和大小,这些信息存储在模板文件General_Purpose.dbc中,可以通过修改General_Purpose.dbc来改变这些设置。

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0gdbName=platdbsid=platdbdatabaseConfigType=SIpolicyManaged=falsecreateServerPool=falseforce=falsecreateAsContainerDatabase=falsenumberOfPDBs=0templateName=/u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbcsysPassword=Paas1015systemPassword=Paas1015emConfiguration=DBEXPRESSemExpressPort=5500omsPort=0storageType=FScharacterSet=ZHS16GBKnationalCharacterSet=AL16UTF16listeners=LISTENERvariables=ORACLE_BASE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1, ORACLE_BASE=/u01/app/oracle, PDB_NAME=, DB_NAME=platdb, ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1, SID=platdbinitParams=undo_tablespace=UNDOTBS1, sga_target=10093MB, db_block_size=8192BYTES, nls_language=AMERICAN, diagnostic_dest={ORACLE_BASE}, control_files=("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl"), remote_login_passwordfile=EXCLUSIVE, audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump, processes=1500, nls_territory=CHINA, memory_target=0, SGA_TARGET=800MB,PGA_AGGREGATE_TARGET=200MB, db_recovery_file_dest_size=50GB, open_cursors=300, shared_pool_size=1G, compatible=19.0.0, db_name=platdb, db_recovery_file_dest={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}, audit_trail=dbsampleSchema=falsememoryPercentage=40databaseType=MULTIPURPOSEautomaticMemoryManagement=falsetotalMemory=0

dbca完成建库后,会启动数据库,这时已经创建了SYS和SYSTEM用户,可以 sqlplus / as sysdba 登录,然后查看数据库状态:

select instance_name, status from v$instance ;

dbca建库启动是用的spfile,这时可以修改一些内存设置参数,以优化数据库性能,我的机器内存有128G,我设置了(Automatic Shared Memory Management),设置这个只需要设置保存 sga_target 和 pga_aggregate_target 两个参数,memory_target 和memory_max_target 设为 0,然后重启:

# 关闭 AMM

alter system set memory_max_target = 0M scope=spfile; alter system set memory_target = 0M scope=spfile;

# 开启 ASMM

# sga_target 一般配置为物理内存的30%到70%之间; # pga_aggregate_target 一般配置为物理内存的5%到25%之间; # sga_target 和pga_aggregate_target 之和不要超过物理内存的80%;

alter system set sga_max_size=70G scope=spfile; alter system set sga_target=60G scope=spfile; alter system set pga_aggregate_target=5G scope=spfile;

# ASMM 可另外设置 sga 中的 shared_pool_size不小于1G alter system set shared_pool_size=1G scope=spfile;

关于 oracle 内存管理参数的配置这篇帖子讲的很清晰,之前搜了网上那么多文章都没说明白,包括Oracle的官方文档,这篇讲的清晰明了,并且概括的很好:Oracle数据库查看与修改内存配置_oracle内存分配与调整-CSDN博客

最好把spfile备份为pfile,遇到过参数设置错,数据库无法启动,此时可以修改以下备份的pfile,再启动,这一可以保存之前spfile的大部分设置:

create pfile from spfile

关于启动时spfile和pfile参考我的文章:OCP 体系结构_ocp架构服务器-CSDN博客 -> 参数文件

数据库启动后查看以下网络服务:

lsnrctl status

tnsnames.ora配置:

YUNPAAS =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = 36.133.172.224)(PORT = 1521))     )     (CONNECT_DATA =       (SERVICE_NAME = platdbXDB)     )   )

Windows下的PL/SQL Developer连接数据库配置参考我的文章:

Windows安装PL/SQL Developer_windows安装plsql-CSDN博客

另外,如果失败,可以用dbca删除数据库,然后再建库(不必担心重复操作的副作用),dbca删除数据库用命令:

dbca -silent -deleteDatabase -sourceDB platdb

这里platdb是就是sid也是数据库名,dbca是希望数据库运行时执行删库的,但是需要删库的时候,常常是因为数据库起不来了,此时删库还要手动删除数据文件所在目录和fast_recovery_area等。

四、创建用户和导入数据

# 创建表空间

create tablespace PAAS datafile '/u01/app/oracle/oradata/PLATDB/paas.dbf' size 2048m autoextend on next 2048m maxsize 30G;

# 创建用户

create user paasapp identified by Paas1015 default tablespace paas; grant connect, resource to paasapp; grant create session to paasapp; grant dba to paasapp ; grant imp_full_database to paasapp; grant exp_full_database to paasapp; alter user paasapp quota unlimited on paas;

sqlplus新用户连接数据库:

sqlplus paasapp/Paas1015@platdb

关于客户端连接Oracle数据库的详细讨论,参考我的文章:Oracle 网络配置_protocol = ipc-CSDN博客

这一步是可选的,我的项目类似迁移项目,需要在新数据库上,创建另一个数据库对应的用户、表空间、导入表结构和数据,之所以在这里记录,是因为遇到了一个问题,就是从其它Oracle导出的表定义和insert脚本,导入新数据库后,出现中文乱码。

关于Oracle的字符集等配置,之前总结过,但是很久不用忘记了 OCP Oracle全球化与字符集_al16utf16 gb18030-CSDN博客

之前的知识并没有解决这里的问题,一开始是猜测导出的sql脚本编码问题,用notepad++转为utf-8编码,在vim中打开,中文确实能正常显示,但是用sqlplus导入后,查询数据库,中文仍然是乱码。

在公司DBA的提示下,根据数据库的NLS_LANGUAGE、NLS_TERRITORY、NLS_CHARACTERSET配置,对应的设置环境变量设置了NLS_LANG为 export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK,再导入SQL脚本(未转为utf8),这次查询中文不是乱码了!

看来关键是NLS_LANG环境变量,尤其是在使用sqlplus时,很重要!

参考

以下三个连接,静默安装三部曲,写的清晰简洁 

RunInstaller 19c Silent Mode - How to SOP

How to Run NETCA in Silent Mode - How to SOP

DBCA Silent Database Creation 19c - How to SOP

 

[FATAL] [DBT-11211] 19c DBCA: The AMM option is not allowed while the physical memory is greater than 4GB | Wadhah DAOUEHI 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3