oracle11g静默安装
前言
- oracle安装目录和数据目录为/home/oracle/app/oracle
- 必须配置yum源,至少要有本地yum源
准备工作 (注:从这开始默认root用户执行)
-
创建用户
#创建database用户组
groupadd database
#创建oracle用户并放入database组中
useradd oracle -g database
#设置oracle密码
passwd oracle
安装初始化脚本
vim init_oracle.sh
## 关闭防火墙和selinux
[ "$(getenforce)" != "Disabled" ] && sed -i "s/SELINUX=enforcing/SELINUX=disabled/g "/etc/selinux/config && setenforce 0
systemctl stop firewalld
systemctl disable firewalld
echo -e "\033[32m ---- 已关闭selinux和防火墙 ------------------------ \033[0m"
sleep 1
#安装oracle所需依赖包
echo -e "\033[32m ---- yum安装oracle所需依赖包 ----------------------- \033[0m"
yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel unixODBC unixODBC-devel ksh
## 修改内核参数
echo -e "\033[32m ---- 修改内核参数 ---------------------------------- \033[0m"
grep "fs.aio-max-nr" /etc/sysctl.conf || cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_local_port_range= 9000 65500
fs.file-max = 6815744
kernel.shmall = 10523004
kernel.shmmax = 6465333657
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
EOF
sysctl -p
sleep 1
## 用户的限制文件
echo -e "\033[32m ---- 设置用户的限制文件 ---------------------------- \033[0m"
grep "oracle" /etc/security/limits.conf || cat >> /etc/security/limits.conf << EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
EOF
sleep 1
## 修改/etc/pam.d/login文件
echo -e "\033[32m ---- 修改/etc/pam.d/login文件 ---------------------- \033[0m"
grep "pam_limits.so" /etc/pam.d/login ||echo "session required /lib64/security/pam_limits.so
session required pam_limits.so" >> /etc/pam.d/login
sleep 1
## 创建安装目录
echo -e "\033[32m ---- 创建安装目录为/home/oracle/app/oracle -------------------- \033[0m"
mkdir -p /home/oracle/app/oracle/{product/11.2.0/dbhome_1,oradata,oraInventory,recovery_area}
chown -R oracle:database /home/oracle/app/oracle
chmod 775 /home/oracle/app/oracle
执行脚本
chmod +x init_oracle.sh
./init_oracle.sh
上传并解压安装包
上传安装包到 CentOS7服务器。我上传到 /home/oracle/
目录了。
上传以后,文件路径和名称如下:
[oracle@localhost ~]$ pwd
/home/oracle
[oracle@localhost ~]$ ls
p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip
若没有unzip,安装unzip用于文件解压
yum install unzip
开始解压
#解压第1个zip
unzip p13390677_112040_Linux-x86-64_1of7.zip
#解压第2个zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
授权
chown -R oracle.database database/
chmod 777 -R database/
登录oracle用户,设置环境变量
(切换到oracle用户后,后面的安装全部用oracle用户执行,除非特殊说明的。)
vim ~/.bash_profile
================================
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
================================
在最下方添加
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1/
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
开始安装oracle
数据库安装
db_install.rsp为安装应答配置文件,在安装之前,我们要修改里面的配置,再进行安装
cd /home/oracle/database/response
vim db_install.rsp
在指令模式下输入:set nu可以显示行号,下列行的内容需要修改。
29行 oracle.install.option=INSTALL_DB_SWONLY //安装方式选项
37行 ORACLE_HOSTNAME=localhost //你的服务器hostname
42行 UNIX_GROUP_NAME=database //前面创建的oracle属组
49行 INVENTORY_LOCATION=/home/oracle/app/oracle/oraInventory //数据存放位置
86行 SELECTED_LANGUAGES=en,zh_CN //指定安装的语言,指定英文和中文
91行 ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1 //oracle家目录
96行 ORACLE_BASE=/home/oracle/app/oracle //oracle安装目录
107行 oracle.install.db.InstallEdition=EE //ORACLE安装版本,EE是企业版
154行 oracle.install.db.DBA_GROUP=database //前面创建的oracle用户dba属组
160行 oracle.install.db.OPER_GROUP=database //前面创建的oracle用户工作属组
213行 oracle.install.db.config.starterdb.characterSet=ZHS16GBK //设置oracle字符集,常用ZHS16GBK和AL32UTF8,根据实际情况决定。都支持中文。
336行 oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE //指定存储类型,单机为文件系统存储,rac使用ASM_STORAGE
344行 oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/home/oracle/app/oracle/oradata //文件系统存储的位置
351行 oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/home/oracle/app/oracle/recovery_area //备份存储路径
400行 DECLINE_SECURITY_UPDATES=true //一定要设为true
执行安装命令
cd /home/oracle/database/
./runInstaller -silent -responseFile /home/oracle/database/response/db_install.rsp
- 安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。
成功安装的输出打印如下:
[oracle@localhost database]$ ./runInstaller -silent -responseFile /home/oracle/database/response/db_install.rsp
正在启动 Oracle Universal Installer...
检查临时空间: 必须大于 120 MB。 实际为 6088 MB 通过
检查交换空间: 必须大于 150 MB。 实际为 1023 MB 通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2021-04-01_11-49-27AM. 请稍候...[oracle@db-01 database]$ [WARNING] [INS-32055] 主产品清单位于 Oracle 基目录中。
原因: 主产品清单位于 Oracle 基目录中。
操作: Oracle 建议将此主产品清单放置在 Oracle 基目录之外的位置中。
[WARNING] [INS-13014] 目标环境不满足一些可选要求。
原因: 不满足一些可选的先决条件。有关详细信息, 请查看日志。/tmp/OraInstall2021-04-01_11-49-27AM/installActions2021-04-01_11-49-27AM.log
操作: 从日志 /tmp/OraInstall2021-04-01_11-49-27AM/installActions2021-04-01_11-49-27AM.log 中确定失败的先决条件检查列表。然后, 从日志文件或安装手册中查找满足这些先决条件的适当配置, 并手动进行修复。
可以在以下位置找到本次安装会话的日志:
/home/oracle/app/oracle/oraInventory/logs/installActions2021-04-01_11-49-27AM.log
Oracle Database 11g 的 安装 已成功。
请查看 '/home/oracle/app/oracle/oraInventory/logs/silentInstall2021-04-01_11-49-27AM.log' 以获取详细资料。
以 root 用户的身份执行以下脚本:
1. /home/oracle/app/oracle/oraInventory/orainstRoot.sh
2. /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
Successfully Setup Software.
[oracle@localhost database]$
安装过程中可能会提示分区警告,执行命令 free -m 查看分区,
Mem:行显示的是物理内存的大小和使用情况,
Swap:行显示的是交换区的大小和使用情况,单位是MB。
如果没有交换区或交换区太小,先创建交换区,交换区的大小见上表的对应关系,以下步骤将创建一个2048M的交换区。
1)用root用户执行dd命令创建/swap1文件。
dd if=/dev/zero of=/swap1 bs=1024 count=2048000
2)把/swap1文件设置成交换区。
/sbin/mkswap /swap1
3)把/swap1交换区设置为有效状态。
/sbin/swapon /swap1
4)用free -m命令查看交换区,确认已生效。
[root@localhost /]# free -m
total used free shared buff/cache available
Mem: 15616 494 170 1706 14950 13062
Swap: 1999 0 1999
[root@localhost /]#
如果创建的交换区不符合要求,可以用以下步骤删除它。
1)停止正在使用的swap分区。
swapoff /swap1
2)删除swap分区文件。
rm /swap1
3)修改/etc/fstab文件,删除开机自动挂载/swap1的命令。
此时交换区已解决,重新执行安装命令。出现成功命令后,重新打开一个新的窗口,使用root用户执行提示的两行代码
以 root 用户的身份执行以下脚本:
/home/oracle/app/oracle/oraInventory/orainstRoot.sh
/home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
[root@localhost ~]# /home/oracle/app/oracle/oraInventory/orainstRoot.sh
更改权限/home/oracle/app/oracle/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/home/oracle/app/oracle/oraInventory 到 database.
脚本的执行已完成。
[root@localhost ~]# /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
Check /home/oracle/app/oracle/product/11.2.0/dbhome_1/install/root_db-01_2021-04-01_11-55-57.log for the output of root script
继续下一步:配置监听
配置监听
netca.rsp 是建立监听、本地服务名等网络设置应答的配置,该配置文件一般不需要改
cd /home/oracle/database
netca /silent /responsefile /home/oracle/database/response/netca.rsp
[oracle@localhost database]$ netca /silent /responsefile /home/oracle/database/response/netca.rsp
正在对命令行参数进行语法分析:
参数"silent" = true
参数"responsefile" = /home/oracle/app/database/response/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
正在运行监听程序控制:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start LISTENER
监听程序控制完成。
监听程序已成功启动。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0
执行成功后,会在/opt/oracle/11.2.0/network/admin目录下生成sqlnet.ora和listener.ora两个文件
[oracle@localhost database]$ ss -lnt | grep 1521
LISTEN 0 128 *:1521 *:*
下一步,建库
dbca.rsp 创建数据库时应答配置文件
修改配置文件response/dbca.rsp,静默建立新库
50行 RESPONSEFILE_VERSION = "11.2.0" //不能更改
60行 OPERATION_TYPE = "createDatabase" //操作类型为创建数据库
78行 GDBNAME = "weihe.oracle.com" //全局数据库的名字=SID+主机域名,一般就是sid,说法不一
170行 SID = "weihe" //对应的实例名字,在前面设置环境变量的时候,有配置sid,需要一致。
190行 TEMPLATENAME = "General_Purpose.dbc" //建库用的模板文件
360行 DATAFILEDESTINATION = /data/oracle/oradata //数据文件存放目录
370行 RECOVERYAREADESTINATION=/data/oracle/recovery_area //恢复数据存放目录
418行 CHARACTERSET = "ZHS16GBK" //字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
553行 TOTALMEMORY = "5120" //oracle内存5120MB,可以根据服务器资源情况调整。
589行 SYSDBAPASSWORD = "password" //sysdba用户的密码,在这里不设置的话,后面会提示要输入。
211行 SYSPASSWORD = "password" //sys用户的密码,在这里不设置的话,后面会提示要输入。
221行 SYSTEMPASSWORD = "password" //system用户的密码,在这里不设置的话,后面会提示要输入。
配置保存完成后,执行如下命令
dbca -silent -responseFile /home/oracle/database/response/dbca.rsp
执行命令返回建库进度,到100%表示已经完成安装。
创建完成后,可以使用sqlplus登录数据库了。
附监听配置,很多人在修改监听端口的时候会报错,这里给一份监听的模板:
监听文件所在目录为:$ORACLE_HOME/network/admin/
listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /home/oracle/app/oracle
tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
接下来执行lsnrctl start 启动监听,就可以用plsql连接测试啦