其实下载11g发现oracle不提供通道了,百度找的链接,不清楚是否可靠,但根据配置及稳定性选择oracle 11.2.0.4,12c-19c也可以但新特性pdb较新,怕实例什么的影响程序运行,况且就是升级数据库,所以选了11G。
操作流程及命令(后期整理md的文件,就先用自带的写吧)
网上找的(更新,不可靠,是11.0.2.1的,不是11.0.2.4)
http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_1of2.zip http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_2of2.zip
查看服务器信息(单机性能还是可以的)
查看系统版本】cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)
查看ip】ifconfig
192.168.20.72
cpu】lscpu
96
内存】free -g
251G
查看磁盘
查看磁盘(物理)】fdisk -l
磁盘 /dev/sda:3000.5 GB (lvm用了2.7YT)
磁盘 /dev/mapper/rhel-home:2911.9 GB(未用)
查看pv】pcdisplay
/dev/sda3(2.7T)
查看vg】vgdisplay
rhel(2.7T)
查看lv】lvdisplay
查看磁盘】df -h
/dev/mapper/rhel-home 挂载点/home 存储2.5T
/dev/mapper/rhel-root 挂载点/ 存储500G
内核对应参数意义,还得恶补一下,先配置一部分
内存相关:
(1)SHMMAX参数:进程可以分配的单独共享内存段的最大值
计算公式:内存总大小的一半、大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值
本机值:18446744073692774399,太奇怪了,这么大
# cat /proc/sys/kernel/shmmax
# sysctl -w kernel.shmmax=150323855360(立即生效)或者 echo 21474836480 > /proc/sys/kernetbl/shmmax
# echo "kernel.shmmax=150323855360" >> /etc/sysctl.conf(重新永久生效)
(2)SHMMNI参数:设置系统级最大共享内存段数量
计算公式:这个没看到(暂缓),不过缺省值4096,一般肯定是够用了
# cat /proc/sys/kernel/shmmni
# sysctl -w kernel.shmmni=4096或者echo 4096 > /proc/sys/kernel/shmmni
# echo "kernel.shmmni=4096" >> /etc/sysctl.conf
(3)SHMALL参数:设置共享内存总页数
计算公式:物理内存大小除以分页大小
查看过getconf获取分页的大小
# getconf PAGE_SIZE
=250*1024*1024*1024/4096
# cat /proc/sys/kernel/shmall
# echo 65536000 > /proc/sys/kernel/shmall
# sysctl -w kernel.shmall=65536000
# echo " kernel.shmall=65536000" >> /etc/sysctl.conf
210881199601211797
(4)信号灯semaphores是进程或线程间访问共享内存时提供同步的计数器,此参数限制并发未完成的请求,应该设置避免I/O子系统故障。
SEMMSL 参数:设置每个信号灯组中信号灯最大数量,推荐的最小值是250。对于系统中存在大量并发连接的系统,推荐将这个值设置为PROCESSES初始化参数加10。
SEMMNI 参数:设置系统中信号灯组的最大数量。Oracle10g和11g的推荐值为142。
SEMMNS 参数:设置系统中信号灯的最大数量。操作系统在分配信号灯时不会超过LEAST(SEMMNS,SEMMSL*SEMMNI)。推荐SEMMNS的值就设置为SEMMSL*SEMMNI。SEMMNS的设置不小于32000,假如数据库的PROCESSES(进程)参数设置为600,则SEMMNS的设置应为:600+10)*142
SEMOPM 参数:设置每次系统调用可以同时执行的最大信号灯操作的数量。由于一个信号灯组最多拥有SEMMSL个信号灯,因此有推荐将SEMOPM设置为SEMMSL的值。Oracle验证的10.2和11.1的SEMOPM的配置为100。
# cat /proc/sys/kernel/sem
650 440000 140 150
对应的4个值从左到右分别为 SEMMSL、SEMMNS、SEMOPM 和 SEMMNI。
# sysctl -w kernel.sem="650 440000 140 150"或者echo 650 440000 140 150 > /proc/sys/kernel/sem
# echo "kernel.sem=650 440000 140 150" >> /etc/sysctl.conf
进程相关:
(5)fs.file-max 该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
(6)net.ipv4.ip_local_port_range:表示应用程序可使用的IPv4端口范围。
TCPIP相关:
(7)net.core.rmem_default:表示套接字接收缓冲区大小的缺省值。
(8)net.core.rmem_max:表示套接字接收缓冲区大小的最大值。
(9)net.core.wmem_default:表示套接字发送缓冲区大小的缺省值。
(10)net.core.wmem_max:表示套接字发送缓冲区大小的最大值。
临时配置:
sysctl -w kernel.shmmax=150323855360
sysctl -w kernel.shmmni=4096
sysctl -w kernel.shmall=65536000
sysctl -w kernel.sem="650 440000 140 150"
全部配置
vi /etc/sysctl.conf
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall =65536000
kernel.shmmax =150323855360
kernel.shmmni = 4096
kernel.sem = 650 440000 140 150
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
立即生效
/sbin/sysctl -p
soft nproc: 可打开的文件描述符的最大数(软限制)
hard nproc: 可打开的文件描述符的最大数(硬限制)
soft nofile:单个用户可用的最大进程数量(软限制)
hard nofile:单个用户可用的最大进程数量(硬限制)
vi /etc/security/limits.conf
添加-----
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
vi /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
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
创建用户组
groupadd dba
查看
tail /etc/group
创建oracle用户
useradd -m oracle
将oracle用户添加到dba组
usermod -g dba oracle
设置密码
passwd oracle 为1q2w#E$R
查看
tail /etc/group
tail /etc/passwd
删除用户
userdel -r -f xx
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
因为高版本安装我调用图形化安装,需要有vncserver
安装vnc
yum install tigervnc-server -y
修改系统语言为英文
export LANG=en_US.UTF-8
(一):依赖库安装
yum install -y compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++ glibc-devel
yum install -y ksh libaio-devel numactl-devel
yum install -y unixODBC unixODBC-devel oracleasm oracleasmlib oracleasm-support
可以用这个测试一下是否安装,如有提示XXXX not install即安装失败
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel
rpm -q gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers
rpm -q ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat
本帖不讨论上传下载安装包了,解压后执行./runInstaller
有可能遇到鼠标异常,无法点击问题,是服务器与主机冲突,设置(我的是xshell远程):Xmanager图标---属性---设备---鼠标设置---3按钮仿真(同时单击向左按钮和向右按钮)选项取消勾选
开始检测
我这边提示的都是I3的依赖包,本机是64位。oracle提示可以忽略,,勾选ignore all即可。
但是发现检测SEMMNI为0,提示设置为128.但我已经配好了,先留意该问题,网上未找到解决方案
可能遇到的问题:
1,swap空间不足:
1、使用dd命令创建一个swap分区
2、#dd if=/dev/zero of=/home/swap bs=1024 count=16400000
3、格式化刚才创建的分区
4、# mkswap /home/swap
5、再使用swapon命令把这个文件分区变成swap分区
6、#swapon /home/swap
7、(关闭SWAP分区的命令为:#swapoff /home/swap)
8、再用free -m 查看已经扩容的了swap分区。
9、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab
10、在文件末尾加上 /home/swap swap swap default 0 0
11、这样就算重启系统,swap分区也不用手动挂载了
12、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令 #echo "swapon /home/swap" >> /etc/inittab
13、然后在看 vi 看下 /etc/inittab
14、最后一行是swapon /home/swap,这样就万事大吉了。
继续安装
可能遇到的问题:
进行到68%时会报两个错误
一,Error in invoking target 'install' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'. See '/u01/app/oraInventory/logs/installActions2015-01-22_09-39-03AM.log' for details.
解决方法:
1,下载glibc-static-2.17-55.el7.x86_64.rpm安装
2,修改app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
修改为:
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
点击Retry继续安装。
二,会继续提示”Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk.
解决方法:
在makefile中添加链接libnnz11库的参数
修改/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk,将
$(MK_EMAGENT_NMECTL)修改为:$(MK_EMAGENT_NMECTL) -lnnz11
点击Retry继续安装。
安装最后步骤按提示在root用户下执行脚本
cd app/oraInventory/
sh orainstRoot.sh
cd app/oracle/product/11.2.0/dbhome_1/
sh root.sh
创建好后监听和配置都已经有了,该文件内容即可,也可以删除(备份)原listener.ra及tnsname.ora
通过配置tnsnames.name,直接键入 netca
命令
搞好后修改ip
通过配置listener.ora,直接键入 netca
命令
同理修改ip
修改host(root执行),重启监听
vi /etc/hosts
lsnrctl stop
lsnrctl start
执行以下命令,注册数据实例
[oracle@localhost ~]$ sqlplus / as sysdba
SQL>shutdown immediate
SQL> startup
SQL> alter system register;
SQL> quit
lsnrctl status
测试,有数据输出即可
#sqlplus / as sysdba
SQL>select * from tab;