oracle 19c 数据库安装centos 7
Linux安装Oracle Database 19c
基于CentOS 7 操作系统,使用rpm包快速安装Oracle Database 19c。
目前Oracle能够在 Windows、UNIX、Linux 和 Mac OS 等最具影响力的平台上运行,Oracle 数据库有Enterprise Edition企业版、Standard Edition标准版、Express Edition(也称为XE)快捷版和Personal Edition个人版几个版本。
0、查看Swap分区空间
Linux我们默认使用CentOS 7 x64,对应操作系统我们使用64位的Oracle 11g数据库
Oracle11g需要准备至少:2核CPU、2G内存、8GB的硬盘空间
查看cpu详细信息
lscpu
查看内存详细信息
free -h
free -g
备注:
单位:k m g
查看存储盘详细信息
lsblk
grep SwapTotal /proc/meminfo
关闭防火墙
# 关闭防火墙,下次启动时防火墙仍随系统启动而启动
systemctl stop firewalld.service
# 彻底永久关闭防火墙
systemctl disable firewalld.service
# 查看防火墙状态
systemctl status firewalld.service
关闭selinux
关闭SELINUX防火墙,修改/etc/selinux/config配置文件,将“SELINUX=enforcing”改为“SELINUX=disabled”。
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 0
1. 检查缺失的依赖包
rpm --query --queryformat "%{NAME}-%{VERSION}.%{RELEASE} (%{ARCH})\n" bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat elfutils-libelf elfutils-libelf-devel fontconfig-devel libxcb smartmontools libX11 libXau libXtst libXrender libXrender-devel
2. 安装依赖包
2.1 使用yum进行
yum install -y compat-libcap1 compat-libstdc++-33 gcc-c++ glibc-devel ksh libaio-devel libstdc++-devel elfutils-libelf-devel fontconfig-devel libXrender-devel
2.2 离线环境安装各类依赖
什么是Gcc
Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。
Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。
上官网GCC官网,找到最新的released GCC点击进入,一步一步的查找,发现GCC隐藏的够深,有两个站点可以下载,一个是GCC mirror sites,一个是GCC svn server。我这里是从镜像站点下载,GCC 的下载地址见:GCC 下载。
gcc离线安装包下载地址:https://ftp.gnu.org/gnu/gcc/
阿里:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/
官网:https://vault.centos.org/7.3.1611/os/x86_64/Packages/
下载地址:http://www.rpmfind.net/linux/rpm2html/search.php?query=compat-libstdc%2B%2B-33(x86-64)
下载GCC依赖的四个库: 点击下载:GMP库 或者GMP官网,对应GCC-6.1.0,我下载的是gmp-6.1.1.tar.bz2。 点击下载:MPFR库或者MPFR官网,我下载的是mpfr-3.1.4.tar.gz。 点击下载:MPC库或者MPC官网,我下载的是mpc-1.0.3.tar.gz。 点击下载:[ISL库](ftp://gcc.gnu.org/pub/gcc/infrastructure/ and download),我下载的是isl-0.16.tar.bz2。
关于依赖关系,MPFR依赖GMP,MPC依赖GMP和MPFR,GCC依赖上面四个库,所以推荐的编译安装顺序是:GMP->MPFR->MPC->ISL->GCC。
yum -y install binutils* compat-libcap1* compat-libstdc++* gcc* gcc-c++* glibc* glibc-devel* ksh* libaio* libaio-devel* libgcc* libstdc++* libstdc++-devel* libXi* libXtst* make* sysstat* elfutils* unixODBC* unzip lrzsz
首先下载gcc-c++安装包,下载地址:gcc-c++。
大家可选择自己对应的系统进行下载。 安装命令如下:
sudo rpm -ivh gcc-c++-6.1.1-3.fc24.x86_64.rpm
结果提示如下错误: gcc = 6.1.1-3.fc24 被 gcc-c++-6.1.1-3.fc24.x86_64 需要 libstdc++ = 6.1.1-3.fc24 被 gcc-c++-6.1.1-3.fc24.x86_64 需要 libstdc++-devel = 6.1.1-3.fc24 被 gcc-c++-6.1.1-3.fc24.x86_64 需要
原来gcc-c++的安装还需要依赖其它的软件包。于是我们下载对应版本的C++库,libstdc++和libstdc++-devel。我下载的是libstdc++-6.1.1-3.fc24.x86_64.rpm
和libstdc++-devel-6.1.1-3.fc24.x86_64.rpm
。
现在开始安装libstdc++。
sudo rpm -ivh libstdc++-6.1.1-3.fc24.x86_64.rpm
安装完libstdc++再安装libstdc++-devel。这里需要强制安装,不然会提示如下错误:
libstdc++(x86-64) = 6.1.1-3.fc24 被 libstdc++-devel-6.1.1-3.fc24.x86_64
因为我们已经安装libstdc++,libstdc++-devel依赖libstdc++,但是rpm可能检测不到我们已经安装的libstdc++,所以只要确定我们已经成功安装libstdc++,就可以强制安装了。
sudo rpm -ivh --force --nodeps libstdc++-devel-6.1.1-3.fc24.x86_64.rpm
安装完libstdc++和libstdc++-devel之后,再强制安装gcc-g++。我们强制忽略gcc-g++依赖的gcc,因为我们不需要。我们需要安装的只是C++开发环境,即编译器g++和C++库。
sudo rpm -ivh --force --nodeps gcc-c++-6.1.1-3.fc24.x86_64.rpm
注意:
由于是无网环境,安装较为复杂,可以先不进行这一步,先安装oracle,之后缺依赖会报错的(gcc与g++),到时候缺啥补啥。我在安装过程中只安装了gcc就满足了所有需求(新安装的centos)。
下附离线的gcc安装包:
rpm安装
sudo rpm -ivh --force --nodeps *.rpm
参数:
–force 参数为重复替换 –nodeps 参数为强制安装,忽略依赖
-ivh:安装显示安装进度–install–verbose–hash
-Uvh:升级软件包–Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包
查询是否安装成功:
使用gcc -v
或者g++ -v查询
3. 安装Oracle Database 19c
Oracle19.0.0实际上是Oracle12c的最后一个版本,Oracle19.0.0是以年份进行的命名。
Oracle19.0.0安装包为LINUX.X64_193000_db_home.zip;Oracle12c安装包linuxx64_12201_database.zip。
Oracle 官网:
https://www.oracle.com/cn/database/
https://www.oracle.com/database/technologies/
https://docs.oracle.com/en/database/oracle/oracle-database
3.1 rpm包快速安装
3.1.1 当yum源可用时
以root用户身份安装 Oracle 数据库预安装 RPM
centos7
yum install -y https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum install -y oracle-database-ee-19c-1.0-1.x86_64.rpm
centos8
dnf install -y https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-1.el8.x86_64.rpm
或者配置oracle yum源
curl http://public-yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/public-yum-ol7.repo rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 yum --enablerepo=ol7_latest -y install oracle-database-preinstall-19c
3.1.2 当yum源不可用时
(1)首先去Oracle官网下载第一个包Oracle Database 19c (19.3) for Linux x86-64 (RPM)
下载链接:https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html
(2)下载第二个安装包oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
下载链接: https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html
进入页面按ctrl+F搜索 oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
下载圈出来的安装包
3.1.3 正式安装
(1)Oracle安装包传送至Linux
将安装包传到 Linux(或者服务器)上。
需要把这两个安装包上传到Linux(或者服务器)的 /opt 目录,可以采用SecureCRT、VNC-Viewer、xshell 等工具。
如果是采用VMware等虚拟机来学习Oracle的初学者,可以直接使用增强工具将上述的安装包直接拉到 /opt 目录。
(2)安装操作
数据库默认安装位置为 /opt目录
rpm -ivh oracle-database-ee-19c-1.0-1.x86_64.rpm
centos 8:
dnf localinstall -y oracle-database-ee-19c-1.0-1.x86_64.rpm
安装最后安装完,显示的是这个
3.1.4 创建数据库
安装完之后现在只是安装上了oracle,但是还没有数据库,在这里创建数据库有两种方式:
一种是它安装完给的方法执行这个脚本
vim /etc/init.d/oracledb_ORCLCDB-19c configure
这个地方改为false,这是问你要不要创建容器化数据库,如果是true以后创建的用户好像是都要加c##
所以设为false,然后保存退出
创建示例Oracle 数据库实例,登录为root,运行以下服务配置脚本:
/etc/init.d/oracledb_ORCLCDB-19c configure
这样数据库就安装成功了
创建完成之后,切换到oracle 用户
su oracle
sqlplus连接
sqlplus / as sysdba
这个时候提示找不到命令,编辑bash_profile
vim ~/.bash_profile
配置环境变量
export ORACLE_BASE=/opt/oracle export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export ORACLE_SID=ORCLCDB export PATH=$ORACLE_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
也可直接输入以下命令:
cat >> ~/.bash_profile <<'EOF'
# Set environment variables for Oracle user
umask 022
export ORACLE_SID=ORCLCDB
export ORACLE_BASE=/opt/oracle/oradata
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
EOF
修改后,如图所示
刷新使环境变量生效
source ~/.bash_profile
再次登录Oracle
sqlplus / as sysdba
解锁帐户:
ALTER USER sys ACCOUNT UNLOCK;
重置密码:
ALTER USER sys IDENTIFIED BY oracle;
查看oracle安装版本
Select BANNER_FULL From V$Version;
登录Oracle Enterprise Manager
https://192.168.92.31:5500/em
用户名为sys,密码为oracle
3.15 使用systemd管理服务
修改/etc/oratab配置
打开开关,如下设置为Y
[root@localhost ~]# vi /etc/oratab
创建ORCLCDB.oracledb文件
cat >/etc/sysconfig/ORCLCDB.oracledb<<EOF
# create new : define environment variables
ORACLE_BASE=/opt/oracle/oradata
ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
ORACLE_SID=ORCLCDB
EOF
创建listener service
cat >/usr/lib/systemd/system/ORCLCDB@lsnrctl.service<<'EOF'
# this is an example, modify for free
[Unit]
Description=Oracle Net Listener
After=network.target
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/ORCLCDB.oracledb
ExecStart=/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start
ExecStop=/opt/oracle/product/19c/dbhome_1/bin/lsnrctl stop
User=oracle
[Install]
WantedBy=multi-user.target
EOF
创建database service
cat >/usr/lib/systemd/system/ORCLCDB@oracledb.service<<'EOF'
# this is an example, modify for free
[Unit]
Description=Oracle Database service
After=network.target lsnrctl.service
[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/ORCLCDB.oracledb
ExecStart=/opt/oracle/product/19c/dbhome_1/bin/dbstart $ORACLE_HOME
ExecStop=/opt/oracle/product/19c/dbhome_1/bin/dbshut $ORACLE_HOME
User=oracle
[Install]
WantedBy=multi-user.target
EOF
停止脚本方式启动
[root@localhost ~]# /etc/init.d/oracledb_ORCLCDB-19c sotp
关闭监听
su - oracle
lsnrctl stop
使用systemd启动服务并设为开机启动
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl enable ORCLCDB@lsnrctl
[root@localhost ~]# systemctl enable --now ORCLCDB@oracledb
查看lsnrctl服务运行状态
[root@localhost ~]# systemctl status ORCLCDB@lsnrctl
查看oracledb服务运行状态
[root@localhost ~]# systemctl status ORCLCDB@oracledb
删除基于 RPM 的 Oracle 数据库安装
参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/removing-rpm-based-database-installation.html
1、删除实例和侦听器配置。
/etc/init.d/oracledb_ORCLCDB-19c stop
命令参考
[root@localhost ~]# /etc/init.d/oracledb_ORCLCDB-19c -h
Usage: /etc/init.d/oracledb_ORCLCDB-19c {start|stop|restart|configure|delete}
2、以root用户身份运行以下命令删除基于 RPM 的数据库安装:
yum -y remove oracle-database-ee-19c
该yum命令检测 Oracle 主目录中默认配置的组件,例如数据库 (ORCLCDB) 和侦听器 (LISTENER),并为您删除这些组件。
除了默认数据库 (ORCLCDB) 和侦听器 (LISTENER) 之外,如果该yum命令检测到 Oracle 主目录中的其他配置组件(例如附加数据库或侦听器),则会停止卸载过程。将显示一条消息,指示您手动删除这些配置的组件。要删除这些配置的组件:
1、以 Oracle 数据库安装所有者用户 (oracle)身份登录。
2、要删除与您的安装关联的任何数据库,请使用 Oracle 数据库配置助手 (Oracle DBCA)。
cd $ORACLE_HOME/bin
./dbca
3、要删除与您的安装关联的任何侦听器,请运行 Oracle Net Configuration Assistant (Oracle NETCA)。
cd $ORACLE_HOME/bin
./netca
4、以身份登录root并yum再次运行该命令以删除基于 rpm 的数据库安装。
yum -y remove oracle-database-ee-19c
参考:https://www.server-world.info/en/note?os=CentOS_7&p=oracle19c&f=6
3. 2 离线安装
3. 2.1 创建Oracle用户
需进入 root 用户进行创建
检测是否安装了Oracle
查看是否有 oracle 的进程
ps -ef | grep ora
检查是否有oracle用户
# 一般安装oracle的时候默认会建一个oracle用户
id oracle
创建用户组:
单实例默认创建oinstall、dba、oper即可,rac数据库需要全部创建
创建安装oracle程序用户组
groupadd oinstall
groupadd dba
groupadd oper
groupadd backupdba
groupadd dgdba
groupadd kmdba
groupadd racdba
集群环境:
groupadd asmadmin
groupadd asmdba
groupadd asmoper
说明:
1、单实例用户:
单机环境(single-instance)中oracle软件拥有者用户(常见的oracle或者orauser),因该同时是oinstall、dba、oper用户组的成员。同时该用户的主用户组必须是oinstall。 Oracle Database 11g release 2中选择Privileged Operating System Groups 而在11.2的GI/CRS环境中数据库软件拥有者用户(oracle或orauser)还必须是asmdba用户组的成员。
usermod -g oinstall -G dba,oper,asmdba [oracle|orauser]
id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),701(asmdba),54324(oper)
oinstall:oinstall 组是oracle 推荐操作系统的用户组,该用户组应该具有oracle 软件目录$ORACLE_BAES,$ORACLE_HOME,和 oracle Inventory信息目录仓库,oracle Inventory信息目录记录了系统上安装过的oracle产品的记录。
dba:OSDBA是我们必须要创建的一种系统DBA用户组(dba),若没有该用户组我们将无法安装数据库软件及执行管理数据库的任务。
oper:oper我们可以选择要不要创建该用户组,创建该用户组可以满足让os用户行使某些数据库管理权限(包括SYSOPER角色权限)的目的。注意SYSOPER的权限包括startup和shutdown,所以要小心为该用户组添加成员。
2 集群环境:
11g release2中oracle建议独立地管理Grid Infrastructure和ASM实例,因此有必要创建更多的os用户组以满足不同的权限分配。 我们在11.2的GI中常用的ASM用户组有以下三个: OSASM(asmadmin)用户组 如果使用ASM,那么我们必须创建osasm(asmadmin)用户组,该OSASM用户组的成员将被赋予SYSASM权限,以满足组成员管理Oracle Clusterware和Oracle ASM的权限需求。 OSDBA for ASM group(asmdba)用户组 OSDBA(asmdba)用户组的成员将被赋予读写访问ASM文件的权限。GI/CRS拥有者用户和所有oracle数据库软件的拥有者必须是该组的成员。同时所有OSDBA(dba)用户组的成员也必须是asmdba组的成员。 OSOPER for ASM(asmoper)用户组 asmoper和osoper类似都是额外的可选择创建的用户组,创建该独立的用户组以满足赋予用户一套受限的ASM实例管理权限(ASM的SYSOPER角色),该权限包括了启动和停止ASM实例,默认情况下OSASM(asmadmin)组成员将拥有所有SYSOPER的ASM管理权限。 在11.2的GI/CRS环境中一般会创建grid或griduser用户来管理GI软件和ASM实例,
以如下方式创建grid用户:
useradd -g oinstall -G asmadmin,asmdba,asmoper grid
id grid
uid=54322(grid) gid=54321(oinstall) groups=54321(oinstall),700(asmadmin),701(asmdba),55000(asmoper)
asmadmin:如果使用ASM,那么我们必须创建osasm(asmadmin)用户组,该OSASM用户组的成员将被赋予SYSASM权限,以满足组成员管理Oracle Clusterware和Oracle ASM的权限需求。
asmdba:OSDBA(asmdba)用户组的成员将被赋予读写访问ASM文件的权限。GI/CRS拥有者用户和所有oracle数据库软件的拥有者必须是该组的成员。同时所有OSDBA(dba)用户组的成员也必须是asmdba组的成员。
asmoper:asmoper和oper类似都是额外的可选择创建的用户组,创建该独立的用户组以满足赋予用户一套受限的ASM实例管理权限(ASM的SYSOPER角色),该权限包括了启动和停止ASM实例,默认情况下OSASM(asmadmin)组成员将拥有所有SYSOPER的ASM管理权限
创建用户:
创建用户: 创建oracle用户,所属大组为oinstall,附属组为dba,oper,asmdba,并指定home目录为 -d /home/oracle(可以不用指定,默认即可)8 创建用户oracle 并加入到dba组、oinstall组 useradd -g oinstall -G asmdba,dba,backupdba,dgdba,kmdba,racdba,oper oracle id oracle passwd oracle //记得输入密码
创建grid用户: 在rac数据库中用到: useradd -g oinstall -G asmdba,asmoper,asmadmin,oper,dba,racdba grid id grid passwd grid 设置 oracle 用户的密码: passwd oracle //记得输入密码
参数:
groupadd [-g gid [-o]] [-r] [-f] groupname
-g GID:指定新建工作组的id;除非使用-o参数不然该值必须是唯一,不可相同。数值不可为负。预设为最小不得小于500而逐次增加。0~999传统上是保留给系统帐号使用。
-r:创建系统工作组,系统工作组的组ID小于500。此参数是用来建立系统帐号。UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立使用者目录,也不会在乎纪录在/etc/login.defs.的定义值。如果你想要有使用者目录须额外指定-m参数来建立系统帐号。
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
-f: 新增一个已经存在的群组帐号,系统会出现错误讯息然后结束groupadd。如果是这样的情况,不会新增这个群组(如果是这个情况下,系统不会再新增一次),也可同时加上-g选项当你加上一个gid,此时gid就不用是唯一值,可不加-o参数,建好群组后会显结果。
eg:
groupadd -g 507 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmoper
groupadd -g 506 asmdba
useradd -u 502 -g oinstall -G oinstall,dba,asmadmin,oper -s /bin/bash -m oracle
如果要删除一个已有的用户组,使用groupdel命令,其格式如下:
groupdel 用户组
例如:
# groupdel group1
此命令从系统中删除组group1。
修改用户组的属性使用groupmod命令。其语法如下:
groupmod 选项 用户组
常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字
实例1:
# groupmod -g 102 group2
此命令将组group2的组标识号修改为102。
实例2:
# groupmod –g 10000 -n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3。
4、如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
$ newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
将一个用户添加到用户组中,千万不能直接用: usermod -G groupA
这样做会使你离开其他用户组,仅仅做为 这个用户组 groupA 的成员。
应该用 加上 -a 选项:
usermod -a -G groupA user (FC4: usermod -G groupA,groupB,groupC user) -a 代表 append, 也就是 将自己添加到 用户组groupA 中,而不必离开 其他用户组。
命令的所有的选项,及其含义:
-c, --comment COMMENT new value of the GECOS field
-d, --home HOME_DIR new home directory for the user account
-e, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, --inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, --gid GROUP force use GROUP as new primary group
-G, --groups GROUPS new list of supplementary GROUPS
-a, --append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, --help display this help message and exit
-l, --login NEW_LOGIN new value of the login name
-L, --lock lock the user account
-m, --move-home move contents of the home directory to the new
location (use only with -d)
-o, --non-unique allow using duplicate (non-unique) UID
-p, --password PASSWORD use encrypted password for the new password
-s, --shell SHELL new login shell for the user account
-u, --uid UID new UID for the user account
-U, --unlock unlock the user account
查看用户所属的组使用命令:$ groups user
或者查看文件:$ cat /etc/group
3. 2.2 配置内核参数与资源限制
vi /etc/sysctl.conf 注意这只是官方要求的最低要求,可根据需要进行增大。
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
---或者执行命令添加----------------
echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo "kernel.shmmax = 68719476736" >> /etc/sysctl.conf
echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 9000 65000" >> /etc/sysctl.conf
echo "net.core.rmem_default=262144" >> /etc/sysctl.conf
echo "net.core.rmem_max=4194304" >> /etc/sysctl.conf
echo "net.core.wmem_default=262144" >> /etc/sysctl.conf
echo "net.core.wmem_max=1048576" >> /etc/sysctl.conf
# 使参数生效
sysctl -p
3. 2.3 修改系统配置(Shell限制)
修改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 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
---或者执行命令添加------
echo "oracle soft nproc 2047" >> /etc/security/limits.conf
echo "oracle hard nproc 16384" >> /etc/security/limits.conf
echo "oracle soft nofile 1024" >> /etc/security/limits.conf
echo "oracle hard nofile 65536" >> /etc/security/limits.conf
echo "oracle soft stack 10240" >> /etc/security/limits.conf
echo "oracle hard stack 32768" >> /etc/security/limits.conf
echo "oracle hard memlock 134217728" >> /etc/security/limits.conf
echo "oracle soft memlock 134217728" >> /etc/security/limits.conf
3. 2.4 修改环境变量
修改 Root 环境变量
vim /etc/profile
在最后添加如下代码: export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1 export ORACLE_SID=orcl export NLS_LANG=.AL32UTF8 export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib
export ORACLE_HOSTNAME=oracledb
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
使环境变量生效:source /etc/profile
修改 oracle 账户环境变量 vim /home/oracle/.bash_profile 在最后添加如下代码:
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1 export ORACLE_SID=orcl export NLS_LANG=.AL32UTF8 export PATH=${PATH}:${ORACLE_HOME}/bin/:$ORACLE_HOME/lib
export ORACLE_HOSTNAME=oracledb
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
使环境变量生效:source /home/oracle/.bashrc
参数说明:
export EDITOR=vi #默认的编辑器是vi
export TMP=/tmp #ORACLE 默认的临时目录是/tmp
export TMPDIR=$TMP #临时目录生成
export ORACLE_SID=orcl #ORACLE 实例名称是orcl
export ORACLE_BASE=/Oracle/oracle #ORACLE 的基本目录
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1 #ORACLE 数据库的HOME目录
export INVENTORY_LOCATION=/Oracle/oraInventory #ORACLE 安装时的inventory
export TNS_ADMIN=$ORACLE_HOME/network/admin #ORACLE 的网络主目录
export LD_LIBRARY_PATH=$ORACLE_HOME/lib #ORACLE 的库文件目录
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8" #ORACLE 的字符集 不过我们弃用 因为我们使用UTF8
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS" #ORACLE 的日期格式 我们使用会话的方式修改弃用
export PATH=$ORACLE_HOME/bin:/bin:/usr
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$PATH:$HOME/bin
umask 022
3. 2.5 创建 oracle 目录
创建根目录需要注意权限的问题,最简单的是在linux根目录重新开一个分支。如下所示:
# Oracle
mkdir -p /u01/app/
oracle数据库安装目录:mkdir -p /u01/app/oracle
oracle数据库配置文件目录:mkdir -p /u01/app/oraInventory
oracle数据库软件包解压目录:mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
设置目录所有者为oinstall用户组的oracle用户:
chown -R oracle:oinstall /u01
chown -R oracle:oinstall /u01/app
再输入:chown -R oracle:oinstall /u01/app/oracle
再输入:chown -R oracle:oinstall /u01/app/oraInventory
ORACLE的HOME目录 chown -R oracle:oinstall /u01/app/oracle/product/19.0.0/dbhome_1
3.2.6 解压
unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1/
3.2.7 配置响应文件
su - oracle
#备份 cd $ORACLE_HOME/install/response cp db_install.rsp db_install.rsp.bak /home/fairy/app/
#编辑db_install.rsp
vim 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=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=backupdba oracle.install.db.OSDGDBA_GROUP=dgdba oracle.install.db.OSKMDBA_GROUP=kmdba oracle.install.db.OSRACDBA_GROUP=racdba oracle.install.db.rootconfig.executeRootScript=false
// 主要修改以下参数
oracle.install.option=INSTALL_DB_SWONLY // 29行
UNIX_GROUP_NAME=oinstall // 34行
INVENTORY_LOCATION=/u01/app/oraInventory // 41行
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 // 45行
ORACLE_BASE=/u01/app/oracle // 50行
oracle.install.db.InstallEdition=EE // 62行
oracle.install.db.OSDBA_GROUP=dba // 79行
oracle.install.db.OSOPER_GROUP=oper // 85行
oracle.install.db.OSBACKUPDBA_GROUP=backupdba // 90行
oracle.install.db.OSDGDBA_GROUP=dgdba // 95行
oracle.install.db.OSKMDBA_GROUP=kmdba // 100行
oracle.install.db.OSRACDBA_GROUP=racdba // 105行
oracle.install.db.rootconfig.executeRootScript=false // 120行
:set number 显示行号
:set nu 显示行号
:set nu! 取消显示行号
3.2.8 静默安装
从Oracle 18c开始,在安装数据库软件时,需要把压缩文件解压到 $ORACLE_HOME 路径下,在此目录下运行 ./runInstaller
cd $ORACLE_HOME
静默安装19c
./runInstaller -silent -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp
这里的提示可以忽略,想要查看安装的进程情况可以再克隆一个会话窗口,执行tail -f /tmp/InstallActions2022-10-11_02-39-20PM/installActions2022-10-11_02-39-20PM.log 查看即可。
3.2.9 根据提示使用root用户执行脚本完成安装
以 root 用户的身份执行以下脚本:
[root@localhost ~]# sh /u01/app/oraInventory/orainstRoot.sh
[root@localhost ~]# sh /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
-----------备注,静默安装文件路径-------------------------------------------
软件:/u01/app/oracle/product/19.0.0/dbhome_1/install/response/db_install.rsp
监听:cd /u01/app/oracle/product/19.0.0/dbhome_1/assistants/netcanetca.rsp
建库:/u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/dbca.rsp
3.2.10 创建监听
[oracle@oracle dbhome_1]$ cd /assistants/netca
[oracle@oracle netca]$ cp netca.rsp netca.rsp.bak
[oracle@oracle netca]$ netca /silent /responseFile /u01/app/oracle/product/19.0.0/dbhome_1/assistants/netca/netca.rsp
查看监听:
[oracle@localhost ~]$ lsnrctl status
启动监听报错
解决方法:
因只修改了机器的主机名,但host和listener.ora文件并没有修改,因此需要修改host和监听listener.ora
修改host文件
HOST=oracledb
$
vi /etc/hosts
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10 oracledb
修改listener.ora文件
$ vi /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1539))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = orcl)
)
)
修改tnsnames.org
vim /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1539))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
重启机器即可
reboot
如果机器里有tnsnames.ora这个文件的HOST也需要修改,但是这个文件建议使用IP地址。
3.2.11 创建数据库
[oracle@oracledb netca]$ cd $ORACLE_HOME/assistants/dbca
[oracle@oracledb dbca]$ cp dbca.rsp dbca.rsp.bak
[oracle@oracledb dbca]$ vim dbca.rsp
-------------主要修改以下参数----------------------------------
gdbName=orcl //32行 sid=orcl //42行 databaseConfigType=SI //52行 templateName=General_Purpose.dbc //223行 sysPassword=Oracle123456 //233行 systemPassword=Oracle123456 //243行 emConfiguration=NONE //262行 dbsnmpPassword=Oracle123456 //295行 datafileDestination=/u01/app/oracle/oradata //411行 recoveryAreaDestination=/u01/app/oracle/flash_recovery_area //421行 storageType=FS //431行 characterSet=ZHS16GBK //468行 nationalCharacterSet=AL16UTF16 //478行 sampleSchema=true //565行 totalMemory=2048 //604行
# 如果要创建容器数据库,则还需要配置以下参数,如果是多个pdb则以pdbname为前缀 createAsContainerDatabase=true //162行 numberOfPDBs=1 //172行 pdbName=yhggi //182行 pdbAdminPassword=password //203行
执行建库脚本后如果提示输入密码,手动输入密码。长度至少8字符,至少一个大写字母、一个小写字母、一个数字
[oracle@oracledb dbca]$ dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/dbca.rsp
备注:
此处若报错
#直接创建只有cdb的数据库(不需要模板文件)
dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname orcl -sid orcl -responseFile NO_VALUE -characterSet AL32UTF8 -memoryPercentage 30 -emConfiguration LOCAL
dbca -silent -createDatabase -responseFile
dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/dbca.rsp
服务验证及SQLPLUS验证:
[oracle@oracledb dbca]$ lsnrctl status # 查看监听状态
[oracle@oracledb dbca]$ lsnrctl restart # 重启监听
[oracle@oracledb dbca]$ lsnrctl stop # 停止监听
[oracle@oracledb dbca]$ lsnrctl start # 启动监听
检查
[oracle@oracledb dbca]$ sqlplus / as sysdba
3.2.12 设置开机自启
修改配置
打开开关,如下设置为Y
[root@localhost ~]# vi /etc/oratab
创建启动脚本
[root@localhost ~]# vi /usr/bin/oracle.sh
#! /bin/bash # script For oracle19c.service /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl start /u01/app/oracle/product/19.0.0/dbhome_1/bin/dbstart /u01/app/oracle/product/19.0.0/dbhome_1
设置权限
[root@localhost ~]# chmod 777 /usr/bin/oracle.sh
添加自启脚本
[root@localhost ~]# vi /etc/systemd/system/oracle19c.service
[Unit]
Description=Oracle19c
After=syslog.target network.target
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
ExecStart=/usr/bin/oracle.sh
[Install]
WantedBy=multi-user.target
设置开机自启
[root@localhost ~]# systemctl enable oracle19c
Created symlink from /etc/systemd/system/multi-user.target.wants/oracle19c.service to /etc/systemd/system/oracle19c.service.
测试
[root@localhost ~]# reboot
重新登录
如下则表示自启成功。
[root@localhost ~]# systemctl status oracle19c
其他
启动服务
先启动监听,再启动数据库
[oracle@oracledb ~]$ lsnrctl start # 启动监听
[oracle@oracledb ~]$ sqlplus /nolog # 打开sqlplus
SQL> conn / as sysdba # 连接数据库
SQL> startup # 启动数据库
SQL> shutdown # 关闭数据库
SQL> exit # 退出
[oracle@oracledb ~]$ lsnrctl stop # 停止监听