0x00 安装前准备
-
一台可用的 CentOS 7.+ 的机器, 已经配置好了yum环境。
-
已经下载了 Oracle11gR2数据库安装文件, linux.x64_11gR2_database_1of2.ziplinux.x64_11gR2_database_2of2.zip. 并上传到
tmp目录下. 也可以通过 bypy 通过百度云盘直接下载到机器中.
文件分享地址: pan.baidu.com/s/12MV-Dq8z… (s5i7)
0x01 操作系统准备工作
1. 添加 host 地址
## 该步骤中主要为后边配置文件中中 host 的配置. oracledb#01为自定义值可以根据相关进行修改
[root@centos7] $ echo "192.168.0.111 oracledb" > /etc/hosts
## 还可以给服务器设置一个名称[非必须], 操作完毕需要重新登陆一下, centos7就会修改成 oracledb
[root@centos7] $ hostnamectl set-hostname oracledb
复制代码
2. 安装 unzip 软件及常用软件
[root@oracledb] $ yum install unzip net-tools vim -y
复制代码
3. 解压oracle安装程序
## 创建 '/data/oracle/oraclesetup' 用于存放安装文件
[root@oracledb] $ mkdir -p /data/oracle/oraclesetup
## 解压安装文件到 /data/oracle/oraclesetup
[root@oracledb] $ unzip linux.x64_11gR2_database_1of2.zip -d /data/oracle/oraclesetup
[root@oracledb] $ unzip linux.x64_11gR2_database_2of2.zip -d /data/oracle/oraclesetup
复制代码
4. 关闭 Selinux
## 为了不重启服务器先临时将 Selinux 关闭
[root@oracledb] $ setenforce 0
## 修改配置文件永久关闭 Selinux
[root@oracledb] $ vim /etc/selinux/config
...修改如下内容
SELINUX=disabled
复制代码

5. 防火墙配置
## firewalld防火墙放行 1521 端口
[root@oracledb] $ firewall-cmd --zone=public --add-port=1521/tcp --permanent
## 重新加载防火墙配置
[root@oracledb] $ firewall-cmd --reload
## [可选] 如果测试环境可以直接关闭防火墙
[root@oracledb] $ systemctl stop firewalld
[root@oracledb] $ systemctl disable firewalld // 禁止防火墙自启动
复制代码
6. 安装数据库依赖环境
在线环境 可以通过 'yum install' 安装相关的依赖环境
[root@oracledb] $ yum install gcc make binutils gcc-c++ compat-libstdc++-33elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel –y
复制代码
离线环境 可以通过下载离线的 rpm 包使用 'rpm' 进行安装
## 提前下载依赖的压缩包. CentOS7.4
## 链接: https://pan.baidu.com/s/1TVrQDBjU2tzDHU1yZRooxw 提取码: i8oo
[root@oracledb] $ rpm -Uvh --force --nodeps *.rpm
复制代码
7. 添加 oracle 数据库所需的用户和用户组
[root@oracledb] $ groupadd oinstall
[root@oracledb] $ groupadd dba
[root@oracledb] $ useradd -g oinstall -G dba oracle
## 为 oracle 用户设置密码.
[root@oracledb] $ passwd oracle
[root@oracledb] $ id oracle
uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba),1004(asmdba)
复制代码

8. 修改内核参数配置文件
-
修改
/etc/sysctl.conf内核参数配置文件# 其中kernel.shmmax = 1073741824 为物理内存(2G)的一半,单位为byte [root@oracledb] $ vim /etc/sysctl.conf ... 添加如下内容 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 1073741824 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 ## 查看配置内容 [root@oracledb] $ sysctl -p 复制代码
-
修改用户的限制文件
[root@oracledb] # vim /etc/security/limits.conf ... 添加如下内容 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 [root@oracledb] # vim /etc/pam.d/login ... 添加如下内容 session required /lib64/security/pam_limits.so session required pam_limits.so [root@oracledb] # vim /etc/profile ... 添加如下内容 ##oracle if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 复制代码
0x02 静默安装 Oracle 服务器
1. 创建安装目录和设置文件权限
[root@oracledb] $ mkdir -p /data/oracle/product/11.2.0
[root@oracledb] $ mkdir -p /data/oracle/oradata
[root@oracledb] $ mkdir -p /data/oracle/inventory
[root@oracledb] $ mkdir -p /data/oracle/fast_recovery_area
[root@oracledb] $ chown -R oracle:oinstall /data/oracle
[root@oracledb] $ chmod -R 775 /data/oracle
复制代码
2. 设置 oracle 用户环境变量
# 切换到 oracle 用户. 请注意 su username 切换用户无法切换环境变量, 请使用 su - username 的方式
[root@oracledb] $ su - oracle
[oracle@oracledb] $ vim ~/.bash_profile
...添加如下内容
## oracle
ORACLE_BASE=/data/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=ora11 # 实例名, 按实际情况填写
NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # 编码集, 按实际情况填写, 必须将该参数 export 到系统变量中. 不然导入数据的时候会乱码
PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
复制代码
3. 编辑静态安装文件
# 将安装配置文件放置到 /home/oracle 下后面容易使用
[oracle@oracledb] $ cp -R /data/oracle/oraclesetup/database/response/ ~/
[oracle@oracledb] $ vim ~/response/db_install.rsp
... 修改如下内容
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=oracledb
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/data/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/data/oracle/product/11.2.0
ORACLE_BASE=/data/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true
复制代码
4. 使用 db_install.rsp 静默安装数据库
[oracle@oracledb] $ /data/oracle/oraclesetup/database/runInstaller -silent -responseFile ~/response/db_install.rsp -ignorePrereq
...
/u01/app/oracle/inventory/logs/*.log
复制代码
开始Oracle在后台静默安装。安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在后台进行,如果出现[FATAL],则安装程序已经停止了。可以通过执行输入找到安装会话的日志。
5. 等待安装完成后, 按照安装完成后提示使用root用户执行配置
# 切换 root 用户
[oracle@oracledb] $ su - root
# 执行脚本
[root@oracledb] $ sh /data/oracle/product/11.2.0/root.sh
复制代码
0x03 静默配置数据库监听
# 切换 oracle 用户
[root@oracledb] $ su - oracle
# 配置监听
[oracle@oracledb] $ netca /silent /responseFile ~/response/netca.rsp
复制代码
成功运行后,在/data/oracle/product/11.2.0/network/admin中生成listener.ora和sqlnet.ora
# root用户可以通过 netstat 工具查看到 1521 端口正在被占用
[root@oracledb] $ netstat -tnulp | grep 1521
tcp6 0 0 :::1521 :::* LISTEN 87283/tnslsnr
复制代码
0x04 静默创建数据库实例
1. 修改 dbca.rsp 文件
# 切换 oracle 用户
[root@oracledb] $ su - oracle
# 修改 dbca.rsp 文件
[oracle@oracledb] $ vim ~/response/dbca.rsp
... 修改如下配置
GDBNAME= "ora11"
SID ="ora11" # 修改自己的监听
SYSPASSWORD= "dbpassword" # 修改为自己的密码
SYSTEMPASSWORD= "dbpassword" # 修改为自己的密码
SYSMANPASSWORD= "dbpassword" # 修改为自己的密码
DBSNMPPASSWORD= "dbpassword" # 修改为自己的密码
DATAFILEDESTINATION=/data/oracle/oradata
RECOVERYAREADESTINATION=/data/oracle/fast_recovery_area
CHARACTERSET= "AL32UTF8" # 修改自己的字符集, 注意这里如果给了不正确的字符集则默认为 US7ASCII 无法导入中文. 这里的字符集必须是子集不能包含父集名称
TOTALMEMORY= "1638" # 总内存, 根据自己的需求修改,单位MB。
复制代码
2. 静默创建数据库实例
# 开始静默创建数据库实例
[oracle@oracledb] $ dbca -silent -responseFile ~/response/dbca.rsp
复制代码
3. 实例进程检查
# 建库后进行实例进程检查
[oracle@oracledb] $ ps -ef | grep ora_ | grep -v grep
复制代码

4. 查看监听状态
# 查看监听状态
[oracle@oracledb] $ lsnrctl status
复制代码

5. 登陆数据库查看实例状态
[oracle@oracledb] $ sqlplus / as sysdba
...
SQL> select status from v$instance;
STATUS
------------
OPEN
复制代码

0x05 Oracle 开机自启动设置
1. 修改 dbstart 配置
[oracle@oracledb] $ vim /data/oracle/product/11.2.0/bin/dbstart
... 修改如下配置
ORACLE_HOME_LISTNER=$ORACLE_HOME # 将ORACLE_HOME_LISTNER=$1修改为$ORACLE_HOME
复制代码
2. 修改 dbshut 配置
[oracle@oracledb] $ vim /data/oracle/product/11.2.0/bin/dbshut
... 修改如下配置
ORACLE_HOME_LISTNER=$ORACLE_HOME # 将ORACLE_HOME_LISTNER=$1修改为$ORACLE_HOME
复制代码
3.修改 /etc/oratab 配置
[oracle@oracledb] $ vim /etc/oratab
... 修改如下配置
ora11:/data/oracle/product/11.2.0:Y # 将orcl:/data/oracle/product/11.2.0:N中最后的N改为Y
复制代码
4. 测试 dbshut、distart 命令
# 测试关闭
[oracle@oracledb] $ dbshut
# 关闭后实例进程会消失
[oracle@oracledb] $ ps -ef | grep ora_ | grep -v grep
复制代码
# 测试开启
[oracle@oracledb] $ dbstart
# 开启后实例进程会出现
[oracle@oracledb] $ ps -ef | grep ora_ | grep -v grep
复制代码
5. 编写自启动脚本
# 切换到 root 用户
[oracle@oracledb] $ su - root
# 编写脚本, 请注意按照自己的配置修改 ORACLE_BASE、 ORACLE_HOME、 ORACLE_SID
[root@oracledb] $ vim /etc/rc.d/init.d/oracle
#!/bin/sh
# chkconfig: 345 61 61
# description: Oracle 11g R2 AutoRun Servimces
# /etc/init.d/oracle
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface
export ORACLE_BASE=/data/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=ora11
export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]; then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart
echo "Oracle Start Succesful!OK."
;;
stop)
# Oracle listener and instance shutdown
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut
echo "Oracle Stop Succesful!OK."
;;
reload | restart)
$0 stop
$0 start
;;
*)
echo $"Usage: $(basename $0) {start|stop|reload|reload}"
exit 1
;;
esac
exit 0
复制代码
6. 配置自启动脚本
# 修改/etc/init.d/oracle服务文件权限
[root@oracledb] $ chmod 755 /etc/init.d/oracle
# 设置开机自启动
[root@oracledb] $ chkconfig oracle on
复制代码
7. 使用 service 测试 oracle 服务
# 重启 oracle 服务
[root@oracledb] $ service oracle restart
# 查看 oracle 服务状态
[root@oracledb] $ service oracle status
# 关闭 oracle 服务
[root@oracledb] $ service oracle stop
# 开启 oracle 服务
[root@oracledb] $ service oracle start
复制代码




近期评论