准备工作
下载并解压 Oracle 的软件包
下载
本文安装的是 Oracle Database 11g Release 2,分别下载两个压缩包,可以通过 ftp 上传至服务器
- linux.x64_11gR2_database_1of2.zip
- linux.x64_11gR2_database_2of2.zip
解压
切换到 oracle 压缩包目录,进行解压操作# 解压oracle压缩文件到 /oracle
su - root
mkdir /oracle
unzip -d /oracle linux.x64_11gR2_database_1of2.zip
unzip -d /oracle linux.x64_11gR2_database_2of2.zip
若没有安装 unzip, 可以使用 yum install unzip –y 解压出来的文件到放置在当前 /oracle/database 目录下
检查依赖
su - root |
若发现依赖没有安装,则使用 yum install 安装相应依赖
修改 hostname
参考: https://blog.csdn.net/tantexian/article/details/45958275
su - root |
SELINUX 和防火墙授权
方式一: 手动添加端口授权
su - root
# 检查当前 linux 为 oracle 开启的端口
semanage port -l | grep oracle
# 若没有开放端口,则添加规则
semanage port -a -t ssh_port_t -p tcp 1521
# 检查 linux 防火墙是否已暴露端口
firewall-cmd --permanent --list-port
# 若防火墙没有开放对应端口,则开启
firewall-cmd --zone=public --add-port=1521/tcp --permanent
# 重载防火墙
firewall-cmd --reload方式二: 也可以关闭 selinux 与防火墙,若未关闭,则使用以下操作
# 关闭 selinux
vim /etc/selinux/config
# 添加 SELINUX=disabled ,若有SELINUX则将值设置成disabled
# 关闭防火墙
systemctl stop firewalld
创建 Oracle 用户和用户组
su - root |
创建 Oracle 安装目录和设置文件权限
su - root |
设置 Oracle 用户环境变量
# 切换到 oracle 用户,修改配置 |
- 添加配置
vim ~/.bash_profile
# Oracle Settings |
source ~/.bash_profile 使配置生效
修改内核参数
su - root 修改 /etc/sysctl.conf
kernel.shmmni = 2048 |
使新内核配置生效 /sbin/sysctl -p
修改用户限制文件
操作身份
su - root限制 Oracle用户的 shell 权限
vim /etc/security/limits.conforacle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240修改 /etc/pam.d/login 文件
vim /etc/pam.d/loginsession required /lib64/security/pam_limits.so
session required pam_limits.so修改 /etc/profile 文件
vim /etc/profile(unset i 和 unset -f pathmunge 之前) 追加下面配置if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
保存后,执行 source /etc/profile
安装 Oracle
切换到 oracle 解压包目录 cd /oracle/database
图形安装 Oracle
# 可以启动oracle图形界面安装向导 |
命令行安装 Oracle
备份文件
cp /oracle/database/response/db_install.rsp /oracle/database/response/db_install.rsp.bak编辑静默安装响应文件
vim /oracle/database/response/db_install.rsp# 安装类型
oracle.install.option=INSTALL_DB_SWONLY
# 设置安全更新(填 true,否则会无限提醒邮件地址有问题,终止安装)
DECLINE_SECURITY_UPDATES=true
# 安装组
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/db/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOSTNAME=centos.java
ORACLE_HOME=/db/app/oracle/product/11.2.0
ORACLE_BASE=/db/app/oracle
# oracle版本
oracle.install.db.InstallEdition=EE
#自定义安装,否 false,使用默认组件
oracle.install.db.isCustomInstall=true
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
开始安装
# 切换身份
su - oracle
# 切换到软件解压包目录
cd /oracle/database
# ./runInstaller -force -silent -noconfig -responseFile /oracle/database/response/db_install.rsp
./runInstaller -silent -ignorePrereq -responseFile /oracle/database/response/db_install.rsp
# 安装期间可以使用tail命令监看oracle的安装日志
tail -f /db/app/oracle/inventory/logs/installActions201*.log
执行配置脚本(新开一个终端窗口)
su - root
sh /db/app/oracle/inventory/orainstRoot.sh
sh /db/app/oracle/product/11.2.0/root.sh
返回之前的终端窗口 按 “Enter” 键继续, 安装完成,提示 Successfully Setup Software
配置静默监听
su - oracle
netca -silent -responsefile /oracle/database/response/netca.rsp
# 执行上述命令可能会遇到错误
解决方式: export DISPLAY=172.20.1.1:1.0
再次执行 netca -silent -responsefile /oracle/database/response/netca.rsp
# 查看1521端口是否在监听中
netstat -tnulp | grep 1521
创建数据库(静默方式建立新库,同时也建立一个对应的实例)
修改配置文件 切换身份su - oracle然后执行vim /oracle/database/response/dbca.rsp,配置参考如下GDBNAME= "orcl"
SID ="orcl"
SYSPASSWORD= "oracle"
SYSTEMPASSWORD= "oracle"
SYSMANPASSWORD= "oracle"
DBSNMPPASSWORD= "oracle"
DATAFILEDESTINATION=/db/app/oracle/data
RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area
CHARACTERSET= "AL32UTF8"
# 单位为 MB,一般设置为物理内存的80%
TOTALMEMORY= "1638"
执行建库操作
dbca -silent -createDatabase -responseFile /oracle/database/response/dbca.rsp
可以新开一个窗口 tail -f /db/app/oracle/cfgtoollogs/dbca/orcl/orcl.log 查看操作日志
验证安装
# 查看oracle实例进程
ps -ef | grep ora_ | grep -v grep
# 查看监听状态
lsnrctl status
# 关闭监听
# lsnrctl stop
# 开启监听
# lsnrctl start
# 登录 sqlplus 查看实例状态
sqlplus / as sysdba
select status from v$instance;
# 使用 dba 权限连接 Oracle
# connect / as sysdba
# 关闭数据库服务
#shutdown immediate;
# 开启数据库服务, 遇到环境变量的问题,参考 https://blog.51cto.com/fuwenchao/1361135
startup;
# 退出管理员
quit;或 exit;
# 查看数据库编码
select userenv('language') from dual;
# 查看数据库版本信息
select * from v$version;
# 激活 scott 用户
alter user scott account unlock;
alter user scott identified by tiger;
select * from all_users;
Oracle 开机自启动设置
- 修改 /db/app/oracle/product/11.2.0/bin/dbstart
将 ORACLE_HOME_LISTNER=$1 修改为ORACLE_HOME_LISTNER=$ORACLE_HOME
修改 /db/app/oracle/product/11.2.0/bin/dbshut
将 ORACLE_HOME_LISTNER=$1 修改为ORACLE_HOME_LISTNER=$ORACLE_HOME修改 /etc/oratab 文件
将 orcl:/db/app/oracle/product/11.2.0:N 中最后的 N 改为 Y,成为orcl:/db/app/oracle/product/11.2.0:Y输入 dbshut 和 dbstart 测试
dbshut(Oracle 监听停止,进程消失)dbstart(Oracle监听启动,进程启动)切换到 root 账户建立自启动脚本
su - root
vi /etc/rc.d/init.d/oracle添加以下内容(有些值如 ORACLE_HOME 和 ORACLE_USER 等根据实际情况可以修改)
#! /bin/bash
# oracle: Start/Stop Oracle Database 11g R2
#
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management System.
#
# processname: oracle
. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/db/app/oracle/product/11.2.0
ORACLE_USER=oracle
case "$1" in
'start')
if [ -f $LOCKFILE ]; then
echo $0 already running.
exit 1
fi
echo -n $"Starting Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch $LOCKFILE
;;
'stop')
if [ ! -f $LOCKFILE ]; then
echo $0 already stopping.
exit 1
fi
echo -n $"Stopping Oracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
rm -f $LOCKFILE
;;
'restart')
$0 stop
$0 start
;;
'status')
if [ -f $LOCKFILE ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0 [start|stop|status]"
exit 1
esac
exit 0设置为开机启动
systemctl enable oracle
# 修改 /etc/init.d/oracle 服务文件权限
# chmod 755 /etc/init.d/oracle
# chkconfig oracle on进行 service oracle start/stop/restart 测试
reboot 重启查看 Oracle 监听和实例进程均能自动启动
# 查看1521端口是否在监听中
netstat -tnulp | grep 1521
# 查看oracle实例进程
ps -ef | grep ora_ | grep -v grep开机启动问题:
# oracle ORA-12547: TNS:lost contact
# 解决方法
cd /db/app/oracle/product/11.2.0/bin/
chmod 6751 oracle
# TNS-12555: TNS:permission denied
# 解决方法
cd /var/tmp
chown -R oracle:oinstall .oracle


