背景:由于业务需要,我们这边需要使用主备库,可以满足读写分离,降低服务器的压力;还可以数据实时备份,如果主库挂掉,可以很快用备库顶上。我们以前都是在windows系统上安装oracle,现在服务器资源有限,将运行环境改为Centos7.7或7.9。实际使用环境中服务器无法连网安装,我是在测试环境中把依赖包下载完了之后,又传到服务器上手动安装依赖包。我自己安装时候遇到过不少坑,找的资料也是东拼西凑,没做过的还是真是得费一些时间,我自己记录一下整个过程,也是温故而知新,下面进入正题。
运行环境:
系统版本 | CentOS7.7或以上 | |
CPU | 4核 | |
内存 | 4G(其实1G也可以) | 不小于1G |
分区 | sda 8:0 0 30G 0 disk | 如果没有swap安装oracle可能会报错,swap不小于150M |
主机名 | mydb01 | |
IP | 192.168.110.138 | |
oracle安装包 | linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip | |
远程管理 | MobaXterm 20.1 |
安装准备工作:
1.查看硬盘安装安装到数据盘 df -H,oracle要安装到/data目录下
2.设置主机名vi /etc/hostname
3.查看当前系统版本cat /etc/redhat-release,将版本改为redhat-7
[root@mydb01 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@mydb01 ~]#vi /etc/redhat-release
redhat-7
4.关闭防火墙
# systemctl status firewalld.service #查看firewalld防火墙状态
# systemctl stop firewalld.service #关闭firewalld防火墙
# systemctl disable firewalld.service #禁止开机使用firewalld防火墙
5.设置hosts,ip地址与主机名对应关系,往备库拷数据时可用主机名代替,此处不设置可能会导致开机很慢。
[root@mydb01 ~]#vi /etc/hosts
6.查看内存和swap
[root@mydb01 ~]#free
或grep MemTotal /proc/meminfo,grep SwapTotal /proc/meminfo,如果swap分区忘记创建,后面安装oracle会报错Checking swap space: 0 MB available, 150 MB required.
如不报错,跳过创建swap
解決方法 /tmp/swapfree swap swap defaults 0 0 |
7.下载依赖包
yum install --downloadonly --downloaddir=/soft/yumRepository 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
centos7中的Packages复制到服务器上/soft/Packages中,oracle依赖包也复制到Packages目录中,后面会用到。
8.修改内核参数,修改文件: /etc/sysctl.conf 添加以下内容:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmax = 2147483648
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
修改完后,启用新的配置:
# sysctl -p
9.开始安装依赖包
[root@mydb01 Packages]
rpm -ivh binutils* --nodeps --force
rpm -ivh compat-libcap1* --nodeps --force
rpm -ivh compat-libstdc++* --nodeps --force
rpm -ivh gcc* --nodeps --force
rpm -ivh gcc-c++* --nodeps --force
rpm -ivh glibc* --nodeps --force
rpm -ivh glibc-devel* --nodeps --force
rpm -ivh ksh* libaio* --nodeps --force
rpm -ivh libaio-devel* --nodeps --force
rpm -ivh libgcc* --nodeps --force
rpm -ivh libstdc++* --nodeps --force
rpm -ivh libstdc++-devel* --nodeps --force
rpm -ivh libXi* --nodeps --force
rpm -ivh libXtst* --nodeps --force
rpm -ivh make* --nodeps --force
rpm -ivh sysstat* --nodeps --force
rpm -ivh elfutils* --nodeps --force
rpm -ivh unixODBC* --nodeps --force
rpm -ivh unzip* --nodeps --force
rpm -ivh lrzsz --nodeps --force
10.创建用户以及组
# groupadd oinstall #创建安装oracle程序用户组
# groupadd dba #创建DBA用户组
# useradd -g dba -m oracle #创建用户oracle 并加入到dba组
# usermod -a -G oinstall oracle #将用户oracle加入到oinstall组
# passwd oracle #修改用户oracle的密码
# id oracle #查看用户oracle的信息
11.创建安装目录
# mkdir -p /data/oracle #创建oracle主目录
# mkdir -p /data/inventory #创建oralce配置目录
# mkdir -p /data/src #创建oracle压缩包解压目录
# chown -R oracle:oinstall /data/oracle #修改目录权限
# chown -R oracle:oinstall /data/inventory
# chown -R oracle:oinstall /data/src
# ll /data/
12.修改oracle用户的安全性能设置
修改文件: /etc/security/limits.conf
在文件最后一行前,追加以下内容
#@student - maxlogins 4
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
# End of file
13.修改用户环境变量
修改文件: /home/oracle/.bashrc
追加以下内容export PATH
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
修改完后立即启用:
# source /home/oracle/.bashrc
14.解压缩zip包到/data/src
# unzip linux.x64_11gR2_database_1of2.zip -d /data/src/
# unzip linux.x64_11gR2_database_2of2.zip -d /data/src/
# chown -R oracle:oinstall /data/src/
# ll /data/src/
15.关闭selinux
修改文件: /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled # ********修改此行******
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
16.编辑数据库安装文件 /data/src/database/response/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY # 安装类型 ORACLE_HOSTNAME=oracle.server # 主机名称 UNIX_GROUP_NAME=oinstall # 安装组 INVENTORY_LOCATION=/data/inventory # INVENTORY目录 SELECTED_LANGUAGES=en,zh_CN # 选择语言 ORACLE_HOME=/data/oracle/product/11.2.0/db_1 # oracle_home ORACLE_BASE=/data/oracle # oracle_base oracle.install.db.InstallEdition=EE # oracle版本 oracle.install.db.DBA_GROUP=dba # dba用户组 oracle.install.db.OPER_GROUP=oinstall # oper用户组 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE # 数据库类型 oracle.install.db.config.starterdb.globalDBName=orcl # globalDBName oracle.install.db.config.starterdb.SID=orcl # SID oracle.install.db.config.starterdb.characterSet=AL32UTF8 # 默认数据库编码 oracle.install.db.config.starterdb.memoryLimit=800 # 自动管理内存的最小内存(M) oracle.install.db.config.starterdb.password.ALL=oracle # 设定所有数据库用户使用同一个密码 DECLINE_SECURITY_UPDATES=true # 设置安全更新
至此准备配置工作差不多可以了,正面进行软件安装。
安装Oracle及配置:
1.开始安装oracle
切换到oracle用戶
su oracle
[oracle@mydb01 root]$ /data/src/database/runInstaller -silent -responseFile /data/src/database/response/db_install.rsp -ignorePrereq
Starting Oracle Universal Installer...
Checking Temp space: must be greater than 120 MB. Actual 39158 MB Passed
Checking swap space: must be greater than 150 MB. Actual 6142 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2021-07-27_09-01-38AM. Please wait ...[oracle@glphmdb01 root]$ You can find the log of this install session at:
/data/inventory/logs/installActions2021-07-27_09-01-38AM.log
The following configuration scripts need to be executed as the "root" user.
#!/bin/sh
#Root scripts to run
/data/inventory/orainstRoot.sh
/data/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue
Successfully Setup Software.
##############
如果执行data/src/database/runInstaller -silent -responseFile /data/src/database/response/db_install.rsp -ignorePrereq时报错###############
[oracle@mydb01 soft]$ MoTTY X11 proxy: Unsupported authorisation protocol
进行以下步骤
[root@mydb01 ~]# cp /root/.Xauthority /home/oracle/
再更改/home/oracle/.Xauthority的权限 chmod -R 777 .Xauthority
之后再重新切到oracle账号执行/data/src/database/runInstaller -silent -responseFile /data/src/database/response/db_install.rsp -ignorePrereq
2.切换到root账号执行以下命令
/data/inventory/orainstRoot.sh
/data/oracle/product/11.2.0/db_1/root.sh
3.配置Oracle监听程序
编辑监听配置文件 /data/src/database/response/netca.rsp
修改以下参数
INSTALL_TYPE=""custom"" # 安装的类型
LISTENER_NUMBER=1 # 监听器数量
LISTENER_NAMES={"LISTENER"} # 监听器的名称列表
LISTENER_PROTOCOLS={"TCP;1521"} # 监听器使用的通讯协议列表
LISTENER_START=""LISTENER"" # 监听器启动的名称
执行命令:
[oracle@mydb01 root]$/data/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile /data/src/database/response/netca.rsp
-------查看监听程序是否运行
[oracle@mydb01 root]$ netstat -tnulp | grep 1521
tcp6 0 0 :::1521 :::* LISTEN 17943/tnslsnr
4.添加数据库实例
编辑数据库实例文件 /data/src/database/response/dbca.rsp
修改以下参数
RESPONSEFILE_VERSION ="11.2.0" // 不要变哦
OPERATION_TYPE ="createDatabase" // 操作为创建实例
GDBNAME ="ORCL" // 数据库实例名
SID ="ORCL" // 实例名字
TEMPLATENAME = "General_Purpose.dbc" // 建库用的模板文件
SYSPASSWORD = "oracle" // SYS管理员密码
SYSTEMPASSWORD = "oracle" // SYSTEM管理员密码
SYSMANPASSWORD= "oracle"
DBSNMPPASSWORD= "oracle"
DATAFILEDESTINATION =/data/oracle/oradata // 数据文件存放目录
RECOVERYAREADESTINATION=/data/oracle/flash_recovery_area // 恢复数据存放目录
CHARACTERSET ="AL32UTF8" // 字符集
NATIONALCHARACTERSET= "AL16UTF16" // 字符集
TOTALMEMORY ="3096" // 物理内存*80%。
------創建實例
[oracle@mydb01 root]$ /data/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile /data/src/database/response/dbca.rsp
Copying database files
1% complete
3% complete
100% complete
-------查看实例是否运行
[oracle@glphmdb01 root]$ ps -ef | grep ora_ | grep -v grep
5.修改启动和关闭实例的程序
修改文件: /data/oracle/product/11.2.0/db_1/bin/dbstart
/data/oracle/product/11.2.0/db_1/bin/dbshut
将ORACLE_HOME_LISTNER=$1
修改为
ORACLE_HOME_LISTNER=/data/oracle/product/11.2.0/db_1
6.修改文件: /etc/oratab
将orcl:/data/oracle/product/11.2.0:N
修改为
orcl:/data/oracle/product/11.2.0:Y
至此,使用plsql已经可以连接到此服务器。
7.启动或者关闭实例命令
启动实例:
/data/app/oracle/product/11.2.0/db_1/bin/dbstart
关闭实例:
/data/app/oracle/product/11.2.0/db_1/bin/dbshut
8.设置开机启动oracle
Root用户模式下:
# chmod +x /etc/rc.d/rc.local
修改文件 /etc/rc.d/rc.local
在文件最后追加以下内容:
su oracle -lc "/data/app/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc "/data/app/oracle/product/11.2.0/db_1/bin/dbstart"
重启操作系统,再用plsql连接,能连上,说明基本配置已经完成,这只是完成了配置dataguard的第一步,dataguard配置的我会再写一篇。