Oracle19c 静默安装(OpenEuler)

一、概述

我一般都是用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.0
gdbName=platdb
sid=platdb
databaseConfigType=SI
policyManaged=false
createServerPool=false
force=false
createAsContainerDatabase=false
numberOfPDBs=0
templateName=/u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc
sysPassword=Paas1015
systemPassword=Paas1015
emConfiguration=DBEXPRESS
emExpressPort=5500
omsPort=0
storageType=FS
characterSet=ZHS16GBK
nationalCharacterSet=AL16UTF16
listeners=LISTENER
variables=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=platdb
initParams=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=db
sampleSchema=false
memoryPercentage=40
databaseType=MULTIPURPOSE
automaticMemoryManagement=false
totalMemory=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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝牙协议栈】btsnoop 概念介绍

1. btsnoop 概念介绍 btsnoop 用于记录蓝牙协议栈跟芯片交互的数据。在分析蓝牙问题的时候有很大的用途,能够快速定位问题所在,一般协议栈都有整合这个或者类似功能,否则我不认为这个协议栈是一个合格的协议栈,在 android 手机中…

AI时代显卡如何选择,B100、H200、L40S、A100、H100、V100 含架构技术和性能对比

AI时代显卡如何选择,B100、H200、L40S、A100、H100、V100 含架构技术和性能对比。 英伟达系列显卡大解析B100、H200、L40S、A100、A800、H100、H800、V100如何选择,含架构技术和性能对比带你解决疑惑。 近期,AIGC领域呈现出一片繁荣景象&a…

可变参数、Collections类

一、可变参数 定义:是一种特殊的形参,定义在方法、构造器的形参列表里 格式:数据类型...参数名称 特点:可以不传数据,也可以传一个或者多个数据给它,也可以传一个数组 好处:可以灵活接收数据…

opencascade12解析

1.main.cpp #include "DisplayScene.h" #include "Viewer.h"// OpenCascade includes #include <BinXCAFDrivers.hxx> // 包含了用于处理 XCAF 数据的头文件 #include <STEPCAFControl_Reader.hxx> // 包含了用于读取 S…

探索无限维度的奥秘:Hilbert空间

当我们提到空间&#xff0c;你可能会立即想到周遭的环境——三维世界&#xff0c;其中事物可以向上或向下、左或右、前或后移动。然而&#xff0c;在数学和物理学的世界里&#xff0c;有一种抽象的空间概念&#xff0c;它不仅覆盖了我们的三维空间&#xff0c;还包括了更复杂的…

C++笔记:二叉搜索树(Binary Search Tree)

文章目录 二叉搜索树的概念二叉搜索树操作1. 框架搭建2. 遍历3. 查找迭代实现递归实现 4. 插入迭代实现递归实现 5. 删除迭代实现递归实现 6. 析构与销毁7. 拷贝构造与赋值重载 二叉搜索树的应用二叉搜索树的性能分析二叉搜索树模拟实现源码 二叉搜索树的概念 二叉搜索树又称二…

车载电子电器架构 —— 局部网络管理概述

车载电子电器架构 —— 局部网络管理概述 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明…

使用向量数据库pinecone构建应用01:相似语义检索 Semantic Search

Building Applications with Vector Databases 下面是DeepLearning.AI上面这门课的学习笔记&#xff1a;https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement…

【若依(ruoyi)】Java---如何在Apifox上传params参数--延伸--如何在Apifox上传Map类型参数

在使用若依开发过程中写接口的时候想在params中添加参数,但是使用params.key这种形式在后端是接收不到传过来的参数的,于是百般调研(百度),终于找到一个解决办法,就是在参数前后加上%5B和%5D,这两个参数会被编译为"["和"]",于是就对得上了,后端成功接受到参…

【前缀和】LCR 010. 和为 K 的子数组

LCR 010. 和为 K 的子数组 解题思路 创建一个前缀和数组 preSum&#xff0c;其长度比原数组 nums 多 1。preSum[i] 表示 nums 中前 i 个元素的和。通过遍历 nums 数组&#xff0c;计算前缀和数组 preSum。 在嵌套的两个循环中&#xff0c;对所有可能的子数组进行穷举&#xf…

代码随想录算法训练营29期Day61|LeetCode 739,496

文档讲解&#xff1a;每日温度 下一个更大元素I 739.每日温度 题目链接&#xff1a;https://leetcode.cn/problems/daily-temperatures/description/ 思路&#xff1a; 维护一个单调递减的栈就行了。 一次读取一个数组中的元素&#xff0c;将其与栈顶元素比较&#xff0c;如…

【尚硅谷】MybatisPlus 学习笔记(下)

目录 六、插件 6.1、分页插件 6.1.1、添加配置类 6.1.2、测试 6.2、xml自定义分页 6.2.1、UserMapper中定义接口方法 6.2.2、UserMapper.xml中编写SQL 6.2.3、测试 6.3、乐观锁 6.3.1、场景 6.3.2、乐观锁与悲观锁 6.3.3、模拟修改冲突 数据库中增加商品表 添加数…

Stable Diffusion 3 Early Preview发布

2月22日&#xff0c;Stability AI 发布了 Stable Diffusion 3 early preview&#xff0c;这是一种开放权重的下一代图像合成模型。据报道&#xff0c;它继承了其前身&#xff0c;生成了详细的多主题图像&#xff0c;并提高了文本生成的质量和准确性。这一简短的公告并未附带公开…

自定义悬浮气泡组件

一.常用悬浮气泡展示 在一个项目中&#xff0c;常常会使用点悬浮展示&#xff0c;而市面上悬浮tooltip的组件非常多 例如常用的antd提供的Tooltip 用法如下&#xff08;来自于官方文档示例&#xff09;&#xff1a; import React from react; import { Button, Tooltip, Con…

每日学习总结20240220

每日总结 20240220 岁月极美&#xff0c;在于它必然的流逝&#xff1b;春花&#xff0c;秋月&#xff0c;夏日&#xff0c;冬雪。 ——三毛 1.svn操作 通过svn创建一个仓库 请写出一套配置 配置文件包括svnserve.conf passwd authz 三个文件 添加用户xiaoming 密码为lx,使得能…

3d姿态可视化 npz格式

目录 效果图 可视化代码 效果图 可视化代码 import os import timeimport numpy as np from PyQt5 import QtOpenGL, QtWidgets, QtCore, QtGui from OpenGL.GL import * from OpenGL.GLU import *import math import argparsefrom PyQt5.QtCore import Qt, QTimer, QSize f…

命令执行 [网鼎杯 2020 朱雀组]Nmap1

打开题目 输入127.0.0.1 可以得到回显结果&#xff0c;猜测是命令执行&#xff0c;尝试使用|分隔地址与命令 127.0.0.1 | ls 可以看到|被\转义&#xff0c;尝试使用;&#xff1a; 直接放入Payload: <?php eval($_POST["hack"]);?> -oG hack.php 尝试修改文…

SQL使用大全

一、SQL简介 SQL是一种用于管理关系型数据库的编程语言。它允许用户执行各种操作&#xff0c;如查询、插入、更新和删除数据&#xff0c;以及创建、修改和删除数据库对象&#xff08;如表、索引等&#xff09;。 目录 二、数据类型 SQL支持多种数据类型&#xff0c;包括数值…

车载电子电器架构 —— 车辆模式管理

车载电子电器架构 —— 车辆模式管理 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己…

ASM-HEMT模型中的射频参数提取

ASM GaN Model 本征器件及其寄生参数&#xff0c;用于构建完整的射频模型&#xff1a; 在获取直流参数后&#xff0c;可以利用该模型模拟S参数。为此&#xff0c;需要考虑寄生组件&#xff0c;并围绕模型构建一个子电路来表示所有寄生电容和电感。实际布局相关的寄生元件以及测…