一.安装

一.安装环境要求

操作系统:CentOS 7
内存:4G (内存要够足,JAVA是这样的)
CPU:双核
硬盘:50G

df -h 需要安装的硬盘容量在20G以上,这里我安装在/data目录下

在这里插入图片描述

二.安装包下载

如不可用自己去注册
账号:2696671285@qq.com
密码:Oracle123
点击进入下载搜索页面,搜索其对应的版本下载

搜索关键字Oracle Database 12c,然后选择Oracle Database 12c 12.2.0.1.0 ( Oracle Database In-Memory, Oracle Database Vault )进行队列添加;
点击右上角的Continue,跳转到组件包选择
选择Oracle Database 12.2.0.1.0。后边平台选择Linux x86_64

三.环境安装

3.1 安装依赖

使用下面命令一键安装

sudo yum install -y oracle-database-preinstall-19c

3.2 创建Oracle用户和组

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle

3.3 记录组ID(ORA-27125相关问题)

id oracle

获得如下内容 uid=12346(oracle) gid=12350(oinstall) 组=12350(oinstall),12351(dba)
修改其dba权限,如我上面的是12351

 vim /etc/sysctl.conf 

在文件中加上:

 vm.hugetlb_shm_group = 12351

3.4其余内核文件修改

vim /etc/sysctl.conf

在文件中加上:

fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=524288
kernel.shmmax=2147483647
kernel.sem=250 32000 100 128
kernel.shmmni=4096
kernel.panic_on_oops=1
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
net.ipv4.conf.all.rp_filter=2
net.ipv4.conf.default.rp_filter=2
fs.aio-max-nr=1048576
net.ipv4.ip_local_port_range=9000 65500
vm.hugetlb_shm_group = 12351

记住vm.hugetlb_shm_group的参数在3.3已经设置过
kernel.shmmax大小改为你 内存大小*0.8
简单的计算公式为
kernel.shmall = echo $(expr $(getconf _PHYS_PAGES) / 2)
kernel.shmmax = echo $(expr $(getconf _PHYS_PAGES) / 2 * $(getconf PAGE_SIZE))

附各个参数说明:
fs.aio-max-nr:**此参数限制并发未完成的请求,应该设置避免I/O子系统故障。
fs.file-max:**该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
kernel.shmall:**该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求.
kernel.shmmax:**是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。
官方建议值:**32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。
64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,例如,如果为12GB物理内存,可取1210241024*1024-1=12884901887。
kernel.shmmni:**该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。
kernel.sem:

以kernel.sem = 250 32000 100 128为例:

250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
32000是参数semmns的值,表示系统内可允许的信号量最大数目。
100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
128是参数semmni的值,表示系统信号量集合总数。
net.ipv4.ip_local_port_range:**表示应用程序可使用的IPv4端口范围。
net.core.rmem_default:**表示套接字接收缓冲区大小的缺省值。
net.core.rmem_max:**表示套接字接收缓冲区大小的最大值。
net.core.wmem_default:**表示套接字发送缓冲区大小的缺省值。
net.core.wmem_max:**表示套接字发送缓冲区大小的最大值。

随后使用此命令生效,您会看到检查并打印的信息

sysctl -p

3.5 修改配置

3.5.1 编辑limits.conf
vim /etc/security/limits.conf

在文件末尾加上

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240

第1行是设置进程数软限制;
第2行是设置进程数硬限制;
第3行是设置文件数软限制;
第4行是设置文件数硬限制

3.6编辑环境变量

此章节用于配置环境变量,让其不用切换到目录就能执行

3.6.1 编辑login
vim /etc/pam.d/login

在文件末尾添加以下内容

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
3.6.2创建数据库安装目录
mkdir -p /data/server/oracle
chown -R oracle:oinstall /data/server/oracle
chmod -R 775 /data/server/oracle
3.6.3 配置Oracle用户环境遍历
su oracle
vim ~/.bash_profile

在末尾添加

export ORACLE_BASE=/data/server/oracle
export ORACLE_SID=orcl

使其生效

source ~/.bash_profile

四.安装

4.1安装包上传解压

上传并解压安装包

su root
mkdir -p /data/file/oracle
chown -R oracle:oinstall /data/file/oracle
chmod -R 775 /data/file/oracle

# 传输安装包
scp -P 12305 root@192.168.1.200:/data/backup/db/oracle/12c/V839960-01.zip /data/file/oracle
# 解压
unzip /data/file/oracle/V839960-01.zip

# 设置权限
chmod 700 /data/file/oracle/database/etc/*.rsp

4.2 安装设置

切换用户并修改安装内容

su - oracle
vim /data/file/oracle/database/etc/db_install.rsp

找出以下项,并作修改

oracle.install.option=INSTALL_DB_SWONLY // 安装类型  
UNIX_GROUP_NAME=oinstall // 安装组  
INVENTORY_LOCATION=/data/server/oracle/oraInventory //INVENTORY目录(不填就是默认值)  
ORACLE_HOME=/data/server/oracle/product/12/db_1
ORACLE_BASE=/data/server/oracle
oracle.install.db.InstallEdition=EE     // 企业版本  
oracle.install.db.OSDBA_GROUP=dba  
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.config.starterdb.type=GENERAL_PURPOSE //数据库类型  
oracle.install.db.config.starterdb.globalDBName=orcl  
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.memoryLimit=81920 //自动管理内存的内存(M)  
oracle.install.db.config.starterdb.password.ALL=oracle//设定所有数据库用户使用同一个密码
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false  
DECLINE_SECURITY_UPDATES=true

4.3执行安装

执行db_install.rsp文件

cd /data/file/oracle/database/
./runInstaller -ignoreSysPrereqs -ignorePrereq -waitforcompletion -showProgress -silent -responseFile /data/file/oracle/database/etc/db_install.rsp

在安装快完成的时候会提示要切换到root用户执行两个脚本

su - root
sh /data/server/oracle/oraInventory/orainstRoot.sh
sh /data/server/oracle/product/12/db_1/root.sh

4.4用户属性配置

su - oracle
vim ~/.bash_profile
#添加以下内容
export ORACLE_BASE=/data/server/oracle
export ORACLE_SID=orcl
export ROACLE_PID=oral12
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_HOME=/data/server/oracle/product/12/db_1
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

配置监听

#配置监听
netca /silent /responsefile /data/file/oracle/database/etc/netca.rsp
#启动监听
lsnrctl start

4.5建库(容易失败,可跳转到下安装问题定位)

#修改默认建库文件
vim /data/file/oracle/database/etc/dbca.rsp

#以下内容根据情况修改
responseFileVersion=/data/server/oracle/product/12/db_1/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=orcl
sid=orcl
databaseConfigType=SI  
createAsContainerDatabase=true  
numberOfPDBs=1  
pdbName=orclpdb  
templateName=/data/server/oracle/product/12/db_1/assistants/dbca/templates/General_Purpose.dbc
emExpressPort=5500
omsPort=0
characterSet=AL32UTF8
listeners=LISTENER
memoryPercentage=40
automaticMemoryManagement=false
totalMemory=0


#执行建库
dbca -silent -createDatabase  -responseFile  /data/file/oracle/database/etc/dbca.rsp

至此,数据库安装成功

二.安装问题(欢迎提问)

问题:ORA-00844: Parameter not taking MEMORY_TARGET into account

原因:安装文件参数有误导致,也可能是内存不足,具体看安装时候是否提示物理内存不足,若没有提示,则确定为dbca文件参数错误
解决办法:

# 进入编辑模式
vim /data/file/oracle/database/etc/dbca.rsp

# 查看这三个参数是否正确设置
memoryPercentage=40
automaticMemoryManagement=false
totalMemory=0

问题:ORA-01078: failure in processing system parameters

原因:相关安装参数舔鞋错误,解析失败 仔细检查dbca.rsp文件

问题:ORA-27125: unable to create shared memory segment

原因:1权限问题 2内存不足 3Sga过大
解决办法1:

# 进入编辑模式
vim /data/file/oracle/database/etc/dbca.rsp

# 查看这设置初始化参数
initParams=sga_target=4G,sga_max_size=4G,pga_aggregate_target=1G

解决办法2:

id oracle

获得如下内容 uid=12346(oracle) gid=12350(oinstall) 组=12350(oinstall),12351(dba)
修改其dba权限,如我上面的是12351

 vim /etc/sysctl.conf 

在文件中加上:

 vm.hugetlb_shm_group = 12351

问题:ORA-27104: system-defined limits for shared memory was misconfigured

原因:共享内存设置有误
解决办法: 参考文章 3.4其余内核文件修改 内存设置算法

问题:ORA-00851: SGA_MAX_SIZE 2147483648 cannot be set to more than MEMORY_TARGET 1593835520.

原因:内存不足
解决办法1:缩小SGA

# 进入编辑模式
vim /data/file/oracle/database/etc/dbca.rsp

# 查看这设置初始化参数 修改为比MEMORY_TARGET小.例如上面,可修改为1G
initParams=sga_target=1G,sga_max_size=1G,pga_aggregate_target=1G

解决办法2:加内存

问题:ORA-01034: ORACLE not available

原因:其他错误导致未启动
解决办法:查看导致的原因错误是什么

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐