Oracle11g安装(Linux)
一、准备工作
1、下载Oracle安装包,通过ftp工具上传到linux服务器并解压
由于Oracle官网上无法下载Oracle数据库之前的版本,可以在 Oracle Software Delivery Cloud 里搜索oracle database 11g
然后选择自己需要的版本进行下载:
此处上传目录以 /opt/software/ 为例。解压后两个文件会自动放入当前路径的database目录下,执行命令如下:
如果未安装 unzip 命令,可使用 yum 安装:
yum install -y unzip zip
cd /opt/software/
unzip V17530-01_1of2.zip
unzip V17530-01_2of2.zip
2、在/etc/hosts文件中增加主机名映射,配置host文件
vim /etc/hosts
192.168.31.100 hadoop100
3、关闭selinux
vim /etc/selinux/config
# 修改内容
SELINUX=disabled
#执行命令,关闭SELinux
setenforce 0
4 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld.service
二、安装步骤
1、安装依赖包
yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686libstdc++-devel make sysstat unixODBC unixODBC-devel
2、添加oracle用户和用户组
创建oinstall组和dba组,把oracle用户加入到用户组,并设置oracle登录密码,命令如下:
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
# 把database文件权限给oracle:oinstall
chown -R oracle:oinstall /opt/software/database/
3、修改内核参数配置文件【可选】
vim /etc/sysctl.conf
# 在文件底部添加以下的内容
fs.file-max= 6815744
fs.aio-max-nr=1048576
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
kernel.sem= 250 32000 100 128
# 执行命令sysctl使其自检并生效
sysctl -p
4、增加相关配置信息【可选】
>>修改配置文件
vim /etc/security/limits.conf
# 在文件底部添加以下的内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
>>修改用户关联文件
vim /etc/pam.d/login
# 在文件底部添加以下的内容
session required /lib64/security/pam_limits.so
session required pam_limits.so
>>修改系统环境参数
vim /etc/profile
# 在文件底部添加以下的内容
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
>>添加/etc/oraInst.loc文件并授权
vim /etc/oraInst.loc
# 添加配置
inventory_loc=/opt/module/oracle/oraInventory
inst_group=oinstall
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
5、创建oracle安装目录和设置目录权限
mkdir /opt/module/oracle # oracle是数据库系统安装目录,
mkdir /opt/module/oracle/oradata # oradata是数据库数据安装目录,
mkdir /opt/module/oracle/oradata_back # oradata_back是数据备份目录,
mkdir /opt/module/oracle/oraInventory # oraInventory是清单目录
chown -R oracle:oinstall /opt/module/oracle /opt/module/oracle/oraInventory /opt/module/oracle/oradata/
chmod -R 775 /opt/module/oracle /opt/module/oracle/oraInventory /opt/module/oracle/oradata/
6、配置oracle用户环境变量
vim /home/oracle/.bash_profile
# 在文件底部追加以下内容
export ORACLE_BASE=/opt/module/oracle
export ORACLE_SID=orcl
# 保存退出,刷新配置
source /home/oracle/.bash_profile
7、切换到root用户并授权相关文件
su - root
cd /home/oracle/
mkdir etc
# 将解压后的配置文件复制过来
cp /opt/software/database/response/* /home/oracle/etc/
# 授权
chown -R oracle:oinstall /home/oracle/etc
chmod 777 /home/oracle/etc/*.rsp
拷贝过来的文件如下:
8、切换到oracle用户,配置数据库安装文件
su - oracle
vim /home/oracle/etc/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=hadoop100 #主机名
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/module/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN,zh_TW
ORACLE_HOME=/opt/module/oracle/product/11.2.0/db_1
ORACLE_BASE=/opt/module/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=false
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
#这里必须填ture
DECLINE_SECURITY_UPDATES=true
9、根据响应文件安装oracle
cd /opt/software/database
./runInstaller -silent -force -responseFile /home/oracle/etc/db_install.rsp -ignorePrereq
参数说明:
- /opt/software/database 是安装包解压后的路径,此处根据安装包解压所在位置做修改,因人而异。
- runInstaller 是主要安装脚本
- -silent 静默模式
- -force 强制安装
- -ignorePrereq忽略warning直接安装。
- -responseFile读取安装应答文件。
操作截图:
10、上述程序安装完成后,按“Enter”键继续执行root脚本程序
此处我们不必切换至root用户,oracle用户有权限执行。
sh /opt/module/oracle/product/11.2.0/db_1/root.sh
操作截图:
11、切换成oracle用户配置环境变量
su - oracle
vim ~/.bash_profile
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data
使.bash_profile文件生效:source ~/.bash_profile
12、安装数据库实例
如果需要安装多个实例,则重复如下操作即可,但是注意dbca.rsp文件如下的配置要做对应修改
配置dbca.rsp文件:
vim /home/oracle/etc/dbca.rsp
配置如下:
GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/opt/module/oracle/oradata #有默认值,可选
RECOVERYAREADESTINATION = /opt/module/oracle/fast_recovery_area #有默认值,可选
CHARACTERSET = "AL32UTF8"
TOTALMEMORY = "40,960"
参数说明:
- GDBNAME="orcl" #78行 全局数据库的名字
- SID="orcl" #149行 SID对应的实例名字
- SYSPASSWORD="oracle" #190行 SYS管理员密码
- SYSTEMPASSWORE="oracle" #200行 SYSTEM管理员密码
- DATAFILEDESTINATION=/opt/module/oracle/oradata #357行 数据文件存放目录,默认值:$ORACLE_BASE/oradata,【该目录下的数据库文件是用各个数据库实例名命名的文件夹区分开来的】
- RECOVERYAREADESTINATION=/usr/local/oradata_back #367行 恢复数据存放目录,默认值:$ORACLE_BASE/flash_recovery_area
- CHARACTERSET="AL32UTF8" #415行 字符集,重要!!!建库后一般不能更改,所以建库前要确定清楚
- TOTALMEMORY= "40,960" #540行 oracle内存40,960MB,建议为物理内存70%~85%,物理内存50*1024*80%。
>>静默安装数据库命令
dbca -silent -responseFile /home/oracle/etc/dbca.rsp
操作截图:
查看上述截图中的日志文件:cat /opt/module/oracle/cfgtoollogs/dbca/orcl/orcl.log
>>实例进程检查
ps -ef | grep ora_ | grep -v grep
操作截图:
13、监听配置
netca /silent /responsefile /home/oracle/etc/netca.rsp
操作截图:
>>查看数据库监听情况【查看对应的实例是否被监听】
lsnrctl status
操作截图:
生成的监听文件内容如下:
>>切换到root用户执行以下操作
“chmod +s ”表示为了方便普通用户执行一些特权命令,SUID/SGID程序允许普通用户以root身份暂时执行该程序,并在执行结束后再恢复身份。
su root
chmod +s /bin/netstat
权限变化如下:
14、安装完成,切换回 oracle用户,使用sqlplus连接测试
sqlplus system
15、linux下设置oracle开机自启
>>切换到root用户执行以下操作
vim /opt/module/oracle/product/11.2.0/db_1/bin/dbstart
修改内容:将 ORACLE_HOME_LISTNER=$1
修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME
>>再执行
vim /opt/module/oracle/product/11.2.0/db_1/bin/dbshut
修改内容:将 ORACLE_HOME_LISTNER=$1
修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME
>>修改/etc/oratab文件:vim /etc/oratab
修改内容:将 orcl:/opt/module/oracle/product/11.2.0/db_1:N
中最后的 N 改为 Y
>>切换用户到oracle执行 dbshut
和 dbstart
测试oracle数据库的手动关闭和启动
操作截图:
>>开始添加oracle自启动脚本【可选】:vim /etc/rc.d/init.d/oracle
#!/bin/bash
# oracle: Start/Stop Oracle Database 11g R2
# chkconfig: 345 90 10
# description: The Oracle Database is an Object-Relational Database Management System.
#
. /etc/rc.d/init.d/functions
LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/opt/module/oracle/product/11.2.0/db_1
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
>>修改文件权限:chmod 755 /etc/init.d/oracle
>>设置开机启动执行:chkconfig oracle on
>>检查是否设置成功 : chkconfig --list oracle
>>执行操作测试 service oracle start/stop/restart 如下即可:
>>使用客户端工具测试连接
【注意】
su - oracle
相当于重新登陆,此时用户的家目录和PATH等信息会发生改变
su oracle
切换到oracle身份后用户的家目录和PATH仍然是原先用户的家目录和PATH
加了"-",是以login shell登陆的,所以会设置环境变量。如果不加,使用的还是切换前用户的环境变量,此时执行 sqlplus
命令就会出错:bash: sqlplus: 未找到命令...