从安装系统到oracle数据库生产环境(centos6.8)搭建-完全版
前言: linux系统有区别与windows 系统,因此在学习本文档前务必学习linux 操作系统的一些基本知识,
对后续文档所描述的内容才有深刻了解。本文以centos6.8为例,安装oracle 11.2.4.0版本。
-Samlinux
大纲: 1.服务器安装
2.JDK配置
3.oracle 数据库安装配置
关于安装中可能出现的几个问题,在这里进行解决:
(1)使用u盘安装完后,系统进入GRUB引导,无法启动: 解决办法:
出现上述状况的原因可能是在系统安装最后,把系统的引导程序安装到了U盘中。
(在BIOS中)设置U盘启动,然后成功进入系统并登录。
1、输入grub进入grub命令行模式。 #[root@localhost /]# grub
2、输入find/boot/grub/stage1 或者 find /grub/stage1(我的是这个) #grub> find/boot/grub/stage1 或 grub> find /grub/stage1
返回的值通常是这样的格式:(hd0,0)
3、输入quit 退出grub命令行模式
4、cd 到/boot/grub目录下,使用vi命令,将grub.conf和menu.lst文件里面的(hd1,0)或者(hdx,x)修改为(hd0,0)就是刚才find出来的位置。
5、再次输入grub,进入grub命令行模式。依次执行:root (hd0,0);setup (hd0);reboot 这三条命令
6、输入quit退出grub模式,然后重启计算机
BINGO~~
[在Linux中,#代表root用户,$代表其他用户]
(2)centos6.8最小安装开机后默认不会启动网卡
可使用命令ifup eth0 启动,然后就可以愉快的使用远程终端了:)
启动网卡
#ifup eth0 开机自启动网卡
#vim/etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
配置静态IP 特别说明:IP,子网掩码,网关,DNS可以全部在ifcfg-eth0上配置。
#vim/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=FF:FF:FF:FF:FF:FF
TYPE=Ethernet
UUID=5be104cf-2c4e-4f40-8c4d-d9c745841783
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.3.104
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=202.96.128.86
DNS2=114.114.114.114
IPV6INIT=NO
USERCTL=NO生效
#service network restart 必须重启服务才能生效!!!!
或者
#/etc/init.d/networkrestart 服务重启后,就可以使用Xshell这样的工具进行远程管理~~!!
(3)更新yum资源 (这步可以不操作)
#yum install wget
#cd /etc/yum.repos.d
下载网易镜像源:
#wget -O/etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
或者
下载搜狐镜像源:
#wgethttp://mirrors.sohu.com/help/CentOS-Base-sohu.repo
#yum makecache
如果镜像不能使用则在文件注释掉整个addon项
#yum update
#yum upgrade
关于时间设置
yuminstall ntpdate -y
(4)关闭防火墙和SElinux 暂时关闭可以减少在安装oracle会报无权限这样的错误,有利于初学者安装
查看开启状态
[root@localhost ~]#/usr/sbin/sestatus -v
SELinux status: enabled//显示为开启
SELinuxfs mount: /selinux
#vi /etc/selinux/config 修改 SELINUX=disabled
iptables防火墙规则清理:
清空iptables规则
#iptables -F
查看iptables规则
#iptables -L
保存规则,注意,虽然清空了,不保存的话,重启后,又会有规则。
#/etc/init.d/iptablessave
如果是centos7 #停止firewalld服务
systemctl stop firewalld
也可以使用 setup 工具进行关闭防火墙的操作,如果发现set工具没有安装,可以通过yum进行安装:
安装工具组件
安装好setup tools 工具之后,我们需要安装工具组件如ntsysv(系统服务)system-config-network-tui(网络服务)iptables(防火墙配置),system-config-securistylevel-tui等
Centos7 以上直接使用nmtui 命令就可以了 (networkManager Tui)
安装完后就能直接界面进行参数配置
(5) 锁定关键文件系统(禁止非授权用户获得权限) 5~8步可以先不设置!如果想将权限限制起来可以设置!
#chattr +i /etc/passwd
#chattr +i /etc/inittab
#chattr +i/etc/group
#chattr +i/etc/shadow
#chattr +i /etc/gshadow
(6)ssh安全 创建sudo用户
#useradd XXXX
#passwd XXXX
#vim /etc/sudoers
99行写入
XXXX ALL=(ALL) ALL
:wq!
修改SSH安全配置
#vi /etc/ssh/sshd_config
SSH链接默认端口
port 23333
禁止root账号登陆
PermitRootLogin no
禁止空密码
PermitEmptyPasswords no
不使用DNS
UseDNS no
重启SSH服务
Service sshd restart
(7)精简开机自启动服务
#关闭全部服务
for sun in`chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $sunoff;done
#或者
for sun in`chkconfig --list|grep 3:启用|awk'{print $1}'`;do chkconfig --level 3 $sun off;done
#开启需要的服务
for sun in crondrsyslog sshd network;do chkconfig --level 3 $sun on;done
#或者需要使用防火墙的话可以开启iptables和ip6tables
for sun in crond rsyslog sshd network iptablesip6tables;do chkconfig --level 3 $sun on;done
(8)设置以下全局变量
#设置自动退出终端,防止非法关闭ssh客户端造成登录进程过多,可以设置大一些,单位为秒
echo"TMOUT=3600">> /etc/profile
#历史命令记录数量设置为10条
sed -i"s/HISTSIZE=1000/HISTSIZE=10/" /etc/profile
#立即生效
source /etc/profile
查看库中版本
[root@localhost~]# yum search java|grep jdk
选择需要版本进行安装
[root@localhost~]# yum install java-1.8.0-openjdk.x86_64 //安装目录是在: /usr/lib/jvm/java-1.8.0-openjdkXXX
设置环境变量 "/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/"
[root@localhost~]# vi /etc/profile
#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk //注意修改路径
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
[root@localhost java]# source /etc/profile //使修改生效
配置完成后,在终端输入 “JAVA -version” 返回信息确认安装是否成功。
(1)安装依赖包
把下述txt 内容复制到 Xshell工具运行即可
等待安装完毕即可,因为比较多依赖包需要安装,因此时间会有点长。
pdksh-5.2.14-36.el5.i386.rpm 这个包库里没有,需要手动下载,[root]# rpm -ivhpdksh-5.2.14-36.el5.i386.rpm 安装,安装时可能会报错,
error: Failed dependencies:
pdksh conflicts with ksh-20120801-33.el6.x86_64
先删除这个rpm -eksh-20120801-33.el6.x86_64 然后就可以安装了
(2) 修改内核参数
[root@X]# vi /etc/sysctl.conf //以下为简写使用X代替~路径
# 在文件末尾添加
net.ipv4.ip_local_port_range = 900065500
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
注意下面几行需要注释
#net.bridge.bridge-nf-call-ip6tables= 0
#net.bridge.bridge-nf-call-iptables =0
#net.bridge.bridge-nf-call-arptables= 0
生效命令
[root@X]#sysctl -p
解析下各个参数的意义 参数可以增加可以减少,按自己实际情况来设置
net.ipv4.ip_local_port_range :可使用的IPv4端口范围
fs.file-max :该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。
kernel.shmall :该参数表示系统一次可以使用的共享内存总量(以页为单位)
kernel.shmmax :该参数定义了共享内存段的最大尺寸(以字节为单位)
kernel.shmmni :这个内核参数用于设置系统范围内共享内存段的最大数量
kernel.sem : 该参数表示设置的信号量。
net.core.rmem_default:默认的TCP数据接收窗口大小(字节)。
net.core.wmem_default:默认的TCP数据发送窗口大小(字节)。
net.core.rmem_max:最大的TCP数据接收窗口(字节)。
net.core.wmem_max:最大的TCP数据发送窗口(字节)。
fs.aio-max-nr :同时可以拥有的的异步IO请求数目。
(3) 创建用户、组及配置(因为oracle不允许使用用root进行启动)
创建组和用户
[root@X]# groupadd -g 200 oinstall
[root@X]# groupadd -g 201 dba 附加组暂时没有发现有什么用,不过可以先添加
[root@X]# useradd -u 440 -g oinstall-G dba -d /home/oracle oracle
[root@X]#passwd oracle
在此中添加:
[root@X]# vi /etc/pam.d/login 这步可以不操作
session required pam_limits.so
在末尾添加:
[root@X]# vi /etc/security/limits.conf
# 在文件末尾添加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
# 在文件末尾添加
[root@X]# vi /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
[root@X]# su - oracle //切换用户
[oracle@X]$ chmod 755 /home/oracle
[oracle@X]$ mkdir /home/oracle/app
[oracle@X]$ chmod 755/home/oracle/app/
[oracle@X]$ mkdir/home/oracle/oradata
[oracle@X]$ chmod 755/home/oracle/oradata/
切换回root用户
[oracle@X]# chown -R oracle:oinstall /ora/database --为oracle用户赋予访问oracle安装文件的所有权
[oracle@X]$# chgrp
-R
oinstall
/ora/database
--为sql用户组赋予访问oracle安装文件的所有权
切换回oracle用户,并且切换到用户目录下 /home/oracle
[oracle@X]$ vi ./.bash_profile
# 在文件末尾添加
umask 022
exportORACLE_BASE=/home/oracle/app
(4).安装oracle软件
(4.1) 安装VNC 服务
因为oracle的安装必须要图形界面才能操作,所以我使用VNC这款软件来进行远程图形化连接,windows下直接安装完就可以使用 安装:
# yum install tigervnc-server
启动:# vncserver :1
输入完这条命令后,会让用户设置输入两次VNC链接的密码
如果链接完成后出错,链接客户端黑屏
检查VNC启动日志(类似这个文件"~/.vnc/localhost.localdomain:0.log")
会发现日志中
/home/cake/.vnc/xstartup: line 27: xsetroot: command not found
/home/cake/.vnc/xstartup: line 28: xterm: command not found
/home/cake/.vnc/xstartup: line 29: twm: command not found
原因是这三个依赖包没安装
# yum install -y xsetroot xterm twm 安装完重启VNC服务即可
可以# vncserver -kill :1 # vncserver :1 重启
也可以直接重启系统重启VNC
(4.2)安装前准备 切换到oracle用户,配置oracle用户环境变量
oracle@X]$ vi ~/.bash_profile
# 文件末尾增加
export ORACLE_BASE=/home/oracle/app
exportORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl #SID注意和自己即将建立的SID对应
exportPATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
也可以在安装后配置
vi /etc/profile
在文件末尾复制下面的一段话:
exportORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
(4.3)调整Swap分区大小
oracle 安装文件检查发现swap 空间不足,这个问题在服务器提供商,如阿里云,腾讯云的主机上出现的比较多。
dd if=/dev/zero of=/var/swap bs=2046 count=1000000
mkswap /var/swap
swapon /var/swap
echo “LABEL=SWAP-sda /var/swap swap swap defaults 0 0” >> /etc/fstab 写入配置文件,以后开机自动挂载
(4.4)切换到oracle用户,启动安装程序
因为中国区下载的oracle默认安装界面是中文,服务器可能会出现乱码,所以安装前先改变语言
在解压后的database目录里输入下行命令
$export LANG=en_US.UTF-8
运行
$ ./runInstaller
在执行./runInstaller命令后可能会报错,这时需要使用root用户执行xhost +命令,然后su- oracle切换回oracle用户执行./runInstaller
(4.5)解压两个oracle 安装包
[root@X]# unzip linux_11gR2_database_1of2.zip
[root@X]# unzip linux_11gR2_database_2of2.zip
-d 可以制定解压路径
(4.5)安装界面
后续安装与window 差不多, 再次就不叙述了。
注意安装到最后:
使用ROOT用户执行这两条命令
/home/oracle/oraInventory/orainstRoot.sh
/home/oracle/app/product/11.2.0/dbhome_1/root.sh
直接回车 安装完成。 后续查看监听是否创建,数据库能否正常启动
vnc命令行中输入下命令创建监听
$netca这里可能会报错~0.0
是因为安装系统时使用了默认的主机名,修改即可
点击查看解决办法 :https://blog.csdn.net/cd1321/article/details/8766402
(4.6)启动数据库
$sqlplus "/as sysdba"
启动
SQL>startup
停止
SQL>shutdown immediate
查看监听状态:
$lsnrctl status
启动监听
$lsnrctlstart
(4.6)oracle服务器在重启后,最好还是手动启动oracle服务,如果是学习需要,可以参考下方设置。
设置开机启动项
[1] 更改/etc/oratab
MFGS:/usr/oracle/app/product/11.2.0/dbhome_1:Y#改变此处
[2] oracle用户profile文件中增加SID环境变量(这一步我当时没成功,不过好像没影响)可以不设置
[root@localhost ~]# vi/usr/oracle/.bash_profile
export ORACLE_SID=ORCL
[3] 创建启动Oracle的Init脚本
[root@localhost ~]# vi/etc/rc.d/init.d/oracle
[4] 更改启动脚本权限
[root@localhost ~]#chmod 755 /etc/rc.d/init.d/oracle
[5]设置oracle为开机自启动
[root@localhost ~]#chkconfig oracle on
[root@localhost ~]#chkconfig --list oracle
oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off