安装前准备
-
获取软件安装包
建议从官网下载,我这里下载的版本是10.2.0.5.0,包含一个10.2.0.1.0版本包和一个10.2.0.5.0升级包
-
关闭防火墙
使用systemctl status firewalld
命令查看防火墙状态,下面是开启时的状态
使用systemctl stop firewalld
命令关闭防火墙,然后再次检验状态
-
禁用Selinux
selinux的开启包含很多权限方面限制,会给Linux初学者带来不便,建议禁用
编辑
/etc/selinux/config
文件SELINUX=enforcing
改为SELINUX=disabled
,需要重启生效sestatus -v
和getenforce
命令均可查看selinux状态
-
配置主机名
编辑
/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.0.2.134 testhost
- 创建用户和组
groupadd dba
groupadd oinstall
useradd -g oinstall -G dba oracle
passwd oracle
- 创建安装目录,更改目录权限
mkdir -p /u01/app
chown -R oracle.oinstall /u01/
chmod 775 -R /u01
-
修改oracle用户限制参数
在
/etc/security/limits.conf
文件中添加以下内容
oracle soft nproc 10240
oracle hard nproc 16384
oracle soft nofile 10240
oracle hard nofile 65536
oracle soft memlock -1
oracle hard memlock -1
-
配置共享内存段
先修改共享内存段配置,在
/etc/sysctl.conf
文件中添加以下内容,再执行sysctl -p
vi /etc/sysctl.conf
kernel.shmmax = 524288000
kernel.shmall = 128000
# sysctl -p
-
配置环境变量
编辑
/home/oracle/.bash_profile
增加以下内容
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export ORACLE_SID=myorcl;
然后执行source .bash_profile
使环境变量生效
- yum安装依赖包
yum install -y binutils compat-db control-center gcc gcc-c++ glibc glibc-common gnome-libs libstdc++ libstdc++-devel make sysstat xscreensaver
yum install libXp.i686 libXp-devel.i686 libXt.i686 libXt-devel.i686 libXtst.i686 libXtst-devel.i686 make.x86_64 gcc.x86_64 libaio.x86_64 glibc-devel.i686 libgcc.i686 glibc-devel.x86_64 compat-libstdc++-33 -y
yum install glibc* gcc* make* compat-db* libstdc* libXp* libXtst* compat-libstdc++* -y
注意:xscreensaver有可能会安装不成功,会导致无法启动图形界面,可以配置epel 和nux-dextop yum源,再yum安装xscreensaver
开始安装
使用Oracle用户解压安装包,解压完出现database目录和path10205目录
# mv 10.2.0.5.tar.gz /home/oracle
# cd /home/oracle
# chown oracle.oinstall 10.2.0.5.tar.gz
# su - oracle
$ tar -zxvf 10.2.0.5.tar.gz
$ ls
10.2.0.5.tar.gz database path10205
配置图形界面(每次退出ssh后重进oracle用户都需要配置一下,DISPLAY变量有可能会变化,有时候是11.0,有时候是12.0)
# export|grep DISPLAY
declare -x DISPLAY="localhost:10.0"
# su - oracle
$ declare -x DISPLAY="localhost:10.0"
$ xhost +
access control disabled, clients can connect from any host
进入database目录并开始安装
cd database && ./runInstaller
选择Advanced Installation
选择
Next
选择
Enterprise Edition
表示安装企业版
选择
Next
选择
Next
选择
Yes
选择Install database Software only
仅安装软件
选择Install
开始安装
选择 Continue
忽略报错(连续出现两个)
根据提示使用root用户执行上图中的两个脚本,然后选择OK
点击Exit
然后点Yes
确认完成Oracle软件安装
执行sqlplus -V
验证数据库版本,此时版本为10.2.0.1.0
$ sqlplus -V
SQL*Plus: Release 10.2.0.1.0 - Production
接下来安装10.2.0.5.0升级包,就是之前解压生成的path10205目录
$ ~/path10205/runInstaller
选择Next
选择Next
不勾选
选择Yes
,确认不输入邮箱
选择Next
选择Yes
选择Install
,开始安装
选择Continue
,忽略报错(会出现两次不同)
按照提示使用root用户执行脚本,执行完成后选择OK
选择Exit
,完成安装
执行
sqlplus -v
验证版本
$ sqlplus -v
SQL*Plus: Release 10.2.0.5.0 - Production
然后执行dbca
命令进入建库图形界面
$ dbca
选择Next
选择Create a Database
,创建数据库
选择General Purpose
,表示通用目的,Data Warehouse
表示数据仓库,Transaction Processing
表示在线事物处理
设定全局数据库名和SID
一般不配置EM(Enterprise Manager),EM是一种基于网页的数据库管理工具,配置的话会比较慢
设定系统用户的密码,方便起见,这里选择全部设为相同
一般选择使用文件系统存放数据库,也可以使用ASM或RAW设备,需要额外配置
选择数据文件存放的位置,点击Browse
,然后选择目录
这里使用/u01/app/oracle/oradata
,改文件夹必须为Oracle用户所有
选择是否启用FRA,快速恢复区,是否启用归档,可自由选择
是否创建示例用户
设置内存、SGA和PGA
设置块大小、进程限制参数
选择字符集(根据实际需求选择、选定后无法更改
)
默认连接模式(共享或专有)
安装配置概览
勾选Create Database
,点击Finish
选择OK,开始创建数据库
点击Exit
,完成安装
登陆验证
$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Mon Aug 19 06:59:20 2019
Copyright (c) 1982, 2010, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>select status from v$instance;
STATUS
------------
OPEN
打补丁
安装完成后,打补丁(补丁号:7612454,自行上网搜索)
配置监听
用oracle用户执行netca
命令启动监听配置图形界面
lsnrctl status
查看监听状态
$ lsnrctl status
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 19-AUG-2019 22:20:53
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date 19-AUG-2019 22:08:18
Uptime 0 days 0 hr. 12 min. 35 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "myorcl" has 1 instance(s).
Instance "myorcl", status READY, has 1 handler(s) for this service...
Service "myorclXDB" has 1 instance(s).
Instance "myorcl", status READY, has 1 handler(s) for this service...
Service "myorcl_XPT" has 1 instance(s).
Instance "myorcl", status READY, has 1 handler(s) for this service...
The command completed successfully
Sql developer验证远程连接,密码为创建数据库时设置的所有用户的统一密码,sys用户需要使用sysdba角色,普通用户角色选默认值
,端口号为1521,是Oracle数据库监听的默认端口
内存优化配置
操作系统使用大页内存功能可以减少内存管理带来的额外开销
查看当前大页内存的参数设置和使用情况
# cat /proc/sys/vm/nr_hugepages
0
# cat /proc/meminfo |grep Hu
AnonHugePages: 6144 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
设置大页内存,在/etc/sysctl.conf文件中添加以下内容
vm.hr_hugepages=203
至于参数值的选取,可以使用以下shell脚本来决定一个合适的值
#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
# Check for the kernel version
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`
# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`
# Start from 1 pages to be on the safe side and guarantee 1 free HugePage
NUM_PG=1
# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "[0-9][0-9]*"`
do
MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`
if [ $MIN_PG -gt 0 ]; then
NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`
fi
done
# Finish with results
case $KERN in
'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;
'2.6' | '3.8' | '3.10' | '4.1' ) echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
*) echo "Unrecognized kernel version $KERN. Exiting." ;;
esac
# End
注意:有可能找不到bc命令,执行yum install bc
即可
先关闭数据库,再执行sysctl -p使配置生效,再启动数据库
$ sqlplus / as sysdba
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
[root@localhost ~]# sysctl -p
kernel.shmmax = 524288000
kernel.shmall = 128000
vm.nr_hugepages = 203
[root@localhost ~]# cat /proc/meminfo|grep Hu
AnonHugePages: 0 kB
HugePages_Total: 202
HugePages_Free: 15
HugePages_Rsvd: 14
HugePages_Surp: 0
Hugepagesize: 2048 kB
SQL> startup
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 2096728 bytes
Variable Size 155189672 bytes
Database Buffers 255852544 bytes
Redo Buffers 6291456 bytes
Database mounted.
Database opened.
SQL>