目录
一、准备阶段
0、前言
1、Linux环境信息
2、安装包准备
3、修改host和hostname
4、安装依赖
5、创建用户及用户组
6、修改内核参数
7、添加环境变量
8、修改用户shell限制
二、安装阶段
1、创建目录以及解压Oracle安装包
2、修改db_install.rsp
3、进行安装
4、启动监听
5、修改dbca.rsp
6、创建数据库
7、使用PL/SQL连接Oracle
一、准备阶段
0、前言
供自己在Linux虚拟机或Linux实体机安装Oracle服务器测试,使用Windows连接Oracle服务器使用。所以整理一下安装步骤,备用。
用root操作,需要用oracle用户时,命令里面加su - oracle 切换
1、Linux环境信息
[root@bigdata03 dbca]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@bigdata03 dbca]# uname -a
Linux bigdata03 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@bigdata03 dbca]# free -h
total used free shared buff/cache available
Mem: 3.7G 596M 502M 913M 2.6G 2.0G
Swap: 4.4G 11M 4.3G
[root@bigdata03 dbca]# df -h /dev/shm/
文件系统 容量 已用 可用 已用% 挂载点
tmpfs 1.9G 912M 983M 49% /dev/shm
2、安装包准备
① 服务端:
官网下载: Database Software Downloads | Oracle
选择Linux x86-64 zip包即可
Linux x86-64 | ZIP(2.8 GB) |
②客户端
官网下载:Instant Client for Microsoft Windows (x64) 64-bit (oracle.com)
因windows的pl/sql developer工具使用,顺手下载了吧。
Basic Package | instantclient-basic-windows.x64-21.6.0.0.0dbru.zip |
3、修改host和hostname
1、修改hostname
1、临时修改
hostname 新主机名
2、修改文件
echo '新主机名' >/etc/hostname
#注:使用命令也可以 hostnamectl set-hostname 新主机名
2、修改hosts文件
echo 'ip地址 主机名' >>/etc/hosts
4、安装依赖
适用于红帽企业版 Linux 7 的软件包 | 安装以下软件包的最新版本:
注意: 如果打算使用 32 位客户端应用程序访问 64 位服务器,则还必须安装(如果可用)此表中列出的包的最新 32 位版本。 |
先安装
yum install -y compat-libcap1 compat-libstdc++-33 gcc-c++ ksh libaio-devel libstdc++-devel elfutils-libelf-devel fontconfig-devel libXrender-devel
5、创建用户及用户组
官方文档:Identifying an Oracle Software Owner User Account
安装完毕的用户信息:
$ id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),
54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba),54330(racdba)
以下为具体执行步骤:
①添加用户组
因此添加以下8个用户组,并将oracle用户添加到组里。
groupadd oinstall
groupadd dba
groupadd asmdba
groupadd backupdba
groupadd dgdba
groupadd kmdba
groupadd racdba
groupadd oper
#添加用户并指定用户组
useradd -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper -d /data/soft/oracle -m oracle
解释:Creating Operating System Privileges Groups (oracle.com)
oinstall | oracle清单组 Oracle 软件所有者必须将 Oracle 清单组作为其主要组 |
dba | 首次在系统上安装 Oracle 数据库软件时,必须创建此组。此组标识具有数据库管理特权 (特权) 的操作系统用户帐户。SYSDBA |
oper | OSOPER 授予操作员启动和关闭数据库的权限(权限)。默认情况下,OSDBA 组的成员具有该特权授予的所有特权。SYSOPER SYSOPER |
backupdba | 用于 Oracle 数据库的操作系统备份数据库组(通常为: 如果希望一组单独的操作系统用户具有一组有限的数据库备份和恢复相关管理权限(SYSBACKUP 特权),请创建此组。 |
dgdba | 适用于 Oracle 数据卫士的 OSDGDBA 组(通常为: 如果您希望一组单独的操作系统用户具有一组有限的权限来管理和监视 Oracle 数据卫士(SYSDG 权限),请创建此组。要使用此权限,请将 Oracle 数据库安装所有者添加为此组的成员。 |
kmdba | 用于加密密钥管理的操作系统数据库数据库组(通常为: 如果您希望一组单独的操作系统用户具有一组有限的加密密钥管理权限(如 Oracle 钱包管理器管理(SYSKM 权限),请创建此组。要使用此权限,请将 Oracle 数据库安装所有者添加为此组的成员。 |
racdba | 用于 Oracle 实际应用程序集群管理的 OSRACDBA 组(通常为: 如果您希望一组单独的操作系统用户具有一组有限的 Oracle 实际应用程序集群 (RAC) 管理权限(SYSRAC 权限),请创建此组。要使用此权限: 将 Oracle 数据库安装所有者添加为此组的成员。对于 Oracle 重新启动配置,如果您有单独的 Oracle 网格基础结构安装所有者用户 (),则还必须将该用户添加为数据库的 OSRACDBA 组的成员,以使 Oracle 网格基础结构组件能够连接到数据库。 |
asmdba | 的 OSDBA 在安装过程中,必须将一个组指定为用于 ASM 的 OSDBA 组。此组的成员被授予对 Oracle 自动存储管理的访问权限。asmdba |
②新建用户home目录以及其他需要的目录
#使用oracle用户操作
#oracle基目录
mkdir -p /data/soft/oracle/base
#oraclehome
mkdir -p /data/soft/oracle/base/product/19.3.0
# Location of the data file's
mkdir -p /data/soft/oracle/flash_recovery_area
mkdir -p /data/soft/oracle/oradata
#ORA_INVENTORY是当前操作系统上,Oracle相关软件的安装目录清单
mkdir -p /data/soft/oracle/orainventory
基目录base/product/19.3.0/下面放置orcle安装包 我这用的是 LINUX.X64_193000_db_home.zip
6、修改内核参数
官方文档 :更改内核参数值 (oracle.com)
此处修改内核参数使用的是root或者有权限的用户
[oracle@bigdata03 oracle]$ vi /etc/sysctl.conf
在文件最后添加以下
# 以下新增
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 16451328
kernel.shmmax = 33692319744
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
#官方文档
#[oracle@bigdata03 oracle]$ vi /etc/sysctl.d/99-sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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
7、添加环境变量
官方文档: Procedure for Configuring Oracle Software Owner Environments
使用oracle用户操作
su - oracle
id
#看看 前面给的用户组对不
vi .bash_profile
在文件里面追加以下内容
# oracle_base 数据库目录结构的基目录
# ORACLE_HOME 表示ORACLE软件安装的目录
# ORACLE_SID ORACLE的SID,作用是用来区分同一台计算机上的同一个数据库的不同实例。
# #Oracle数据库的实例名
# ORACLE_TERM 指定安装Oracle终端的类型
# TNS_ADMIN 指定listener.ora tnsnames.ora的位置
# NLS_LANG 指定Client的字符集
# 以下是Linux的变量:
# LD_LIBRARY_PATH 设置临时的库文件的path路径
# PATH 设置搜索路径
# CLASSPATH 设置java lib文件搜索路径
# TMPDIR 临时目录
# set -o vi 默认的编辑器设置成vi
# umask 022 用来设置创建文件或目录的默认权限
export TMP=$HOME/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/data/soft/oracle/base
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0
export ORACLE_SID=orcl
export ORECLE_HOSTNAME=bigdata03
export ORECLE_UNQNAME=orcl
export ORA_INVENTORY=/data/soft/oracle/orainventory
export PDB_NAME=pdb1
export DATA_DIR=/data/soft/oracle/oradata
#export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
#export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export PATH
修改完毕后 source .bash_profile
(需要中文的可以在/etc/profile 添加一个export LANG=zh_CN.utf8)
8、 修改用户shell限制
官方文档 : 检查 Oracle 软件安装用户的资源限制
此处使用root或有权限的管理员用户
vi /etc/security/limits.conf
在文档里面追加以下内容
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 3145728
oracle soft memlock 3145728
二、安装阶段
1、创建目录以及解压Oracle安装包
root或者管理员
# 1 上传zip压缩包到/data/soft/oracle/base/product/19.3.0
# 2 直接把前面创建的/data/soft/oracle给oracle用户
sudo chown -R oracle:oinstall /data/soft/oracle
# 3 把oracle用户的家目录改成/data/soft/oracle
sudo usermod -d /data/soft/oracle -m oracle
# 4 登陆oracle用户 发现前缀bash-xx 啥的 因为模板没有所以导致的
sudo cp -a /etc/skel/. /data/soft/oracle
# 5 使用oracle用户进行解压
cd ~/base/product/19.3.0
unzip LINUX.X64_193000_db_home.zip
# yum install -y unzip
2、修改db_install.rsp
(使用oracle用户)
官方文档 : 编辑响应文件模板 (oracle.com)
| 无提示安装甲骨文数据库。 |
| 使用 Oracle DBCA 静默创建和配置 Oracle 数据库。 |
| 使用 Oracle NETCA 对 Oracle 网络进行静默配置。 |
| Oracle 网格基础设施安装的静默配置。 |
1、将响应文件从响应文件目录复制到系统上的某个目录:
例如,对于甲骨文数据库:
$ cp $ORACLE_HOME/install/response/db_install.rsp $ORACLE_HOME/install/response/db_install.rsp.bak
2、在文本编辑器中打开响应文件:
3、按照文件中的说明进行编辑。
vi $ORACLE_HOME/install/response/db_install.rsp 修改以下值 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/data/soft/oracle/orainventory ORACLE_HOME=/data/soft/oracle/base/product/19.3.0 ORACLE_BASE=/data/soft/oracle/base 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 cat install/response/db_install.rsp | grep -v '#' | grep "=[A-Z|0-9|a-z|/]" 查看核对是否一致
4、通过将对文件的权限更改为 600 来保护响应文件:
$ chmod 600 /local_dir/db_install.rsp
3、进行安装
(oracle用户)
cd $ORACLE_HOME/
./runInstaller -silent -responseFile /data/soft/oracle/base/product/19.3.0/install/response/db_install.rsp
我的安装完毕但是有警告以及报错
正在启动 Oracle 数据库安装向导...
[WARNING] [INS-13014] 目标环境不满足一些可选要求。
原因: 不满足一些可选的先决条件。有关详细信息, 请查看日志。installActions2022-09-30_00-11-53AM.log
操作: 从日志 installActions2022-09-30_00-11-53AM.log 中确定失败的先决条件检查列表。然后, 从日志文件或安装手册中查找满足这些先决条件的适当配置, 并手动进行修复。
可以在以下位置找到此会话的响应文件:
/data/soft/oracle/base/product/19.3.0/install/response/db_2022-09-30_00-11-53AM.rsp
可以在以下位置找到本次安装会话的日志:
/data/soft/oracle/tmp/InstallActions2022-09-30_00-11-53AM/installActions2022-09-30_00-11-53AM.log
以 root 用户的身份执行以下脚本:
1. /data/soft/oracle/orainventory/orainstRoot.sh
2. /data/soft/oracle/base/product/19.3.0/root.sh
在以下节点上执行/data/soft/oracle/orainventory/orainstRoot.sh:
[bigdata03]
在以下节点上执行/data/soft/oracle/base/product/19.3.0/root.sh:
[bigdata03]
Successfully Setup Software with warning(s).
已将安装会话日志移动到:
/data/soft/oracle/orainventory/logs/InstallActions2022-09-30_00-11-53AM
直接打开所说的日志(因为我的环境变量设置的中文所以提示都是中文)
# 打开日志搜索ERROR
vi /data/soft/oracle/tmp/InstallActions2022-09-30_00-11-53AM/installActions2022-09-30_00-11-53AM.log
# 错误1
PRVF-7573 : 节点 "bigdata03" 上的交换空间大小不足 [应为 = 3.7002GB (3879944.0KB); 找到 = 1.5GB (1572860.0KB)]
# 处理方式 添加swap
#1、添加Swap分区
#先切换至root用户,使用dd命令创建名为swapfile 的swap交换文件,count指定扩展4G虚拟内存。
dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304
#2、对交换文件格式化并转换为swap分区
mkswap /var/swapfile
#3.挂载并且激活分区
swapon /var/swapfile
#4.查看新swap分区是否激活
free -h
#5.修改 fstab 配置,设置开机自动挂载该分区,添加如下代码
vi /etc/fstab
/var/swapfile swap swap defaults 0 0
#6.查看是否使用了虚拟内存
[root@wangxin ~]# free
#错误2
[Result.addErrorDescription:760] PRVF-7532 : 节点 "bigdata03" 上缺少程序包 "sysstat"
# 处理方式 安装缺失依赖
sudo yum install -y sysstat
#错误3
[Result.addErrorDescription:760] PRVF-7532 : 节点 "bigdata03" 上缺少程序包 "smartmontools"
# 处理方式 安装缺失依赖
sudo yum install -y smartmontools
#错误4
[Result.addErrorDescription:760] PRVF-7532 : 节点 "bigdata03" 上缺少程序包 "libXi(x86_64)"
# 处理方式 安装缺失依赖
sudo yum install -y libXi
4、启动监听
oracle 用户
lsnrctl start
5、修改dbca.rsp
(oracle用户)
cd /data/soft/oracle/base/product/19.3.0/assistants/dbca
cp dbca.rsp dbca.rsp.bak
vi dbca.rsp
#在文件修改以下内容
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=orcl
sid=orcl
databaseConfigType=SI
templateName=General_Purpose.dbc
sysPassword=password
systemPassword=password
emExpressPort=5500
dbsnmpPassword=password
datafileDestination=/data/soft/oracle/oradata
recoveryAreaDestination=/data/soft/oracle/flash_recovery_area
修改完毕后
cat dbca.rsp | grep -v '#' | grep '=[a-z|A-Z|0-9|/]'
检查
6、创建数据库
(oracle用户)
dbca -silent -createDatabase -responseFile /data/soft/oracle/base/product/19.3.0/assistants/dbca/dbca.rsp
7、使用PL/SQL连接Oracle
1、客户端zip包解压缩
2、配置客户端路径
3、开始使用oracle即可
4、配置tra文件
instantclient_19_16\network\admin目录下找到 tnsnames.ora
#配置格式如下
orcl183 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.31.183)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
192.168.31.183/orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.31.183)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)