系统和数据库最佳组合 centos/redhat6 + oracle 11g(11.2.0.4) centos/redhat7 + oracle 12c(12.2.0.1) centos/redhat6 + oracle 11g(11.2.0.4) 有bug,单实例,RAC

参考资料

linux下安装12c详解(中文)https://blog.csdn.net/whoareyou_/article/details/79178303 linux下安装12c详解(英文):https://blog.csdn.net/qq_23659871/article/details/80680669 B站视频:https://www.bilibili.com/video/BV1uh411v7Ty ohs安装:https://blog.csdn.net/weixin_39568073/article/details/111058377

防火墙设置

参考:https://www.cnblogs.com/pxblog/p/12222150.html 开启防火墙:systemctl start firewalld 关闭防火墙:systemctl stop firewalld 查看防火墙:firewall-cmd —state 显示防火墙列表:firewall-cmd —list-all 查看端口列表:firewall-cmd —list-ports 设置开机启动:systemctl enable firewalld 禁止开机启动:systemctl disable firewalld 添加防火墙端口:firewall-cmd —zone=public —add-port=1521/tcp —permanent **更新防火墙:firewall-cmd —reload

准备工作

停用IPV6

vim /etc/sysctl.conf image.png

配置主机名及域名解析

hostnamectl set-hostname oracle-12c

添加文件

vim /etc/hosts ping oracle-12c image.pngimage.png

设置中文支持

参考:https://www.cnblogs.com/qingbai/p/12688622.html 查看支持编码格式:locale locale -a 设置:vim /etc/locale.conf 启用设置:localectl set-locale LANG=zh_CN.utf8 重启系统:reboot 查看更改:echo $LANG

image.png image.png

创oracle建用户名和组

groupadd dba groupadd oinstall useradd -g oinstall -G dba oracle passwd oracle(设置8位密码) 验证:id oracle image.png image.png

配置:limits.conf

  1. vim /etc/security/limits.conf
  2. oracle soft nproc 2047
  3. oracle hard nproc 16384
  4. oracle soft nofile 1024
  5. oracle hard nofile 65536
  6. oracle soft stack 10240
  7. oracle hard stack 10240

image.png

创建oracle安装所需要的目录

mkdir -p /u01/app/oracle chown -R oracle.oinstall /u01/ chmod -R 755 /u01/ ls -ld /u01/ image.png

安装配置VNC

安装远程桌面:https://blog.csdn.net/u014296316/article/details/88257614 安装tigervnc-server: yum install tigervnc-server 复制: cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver-oracle@.service 编辑配置文件(把原来的代码注释掉): vim /etc/systemd/system/vncserver-oracle@.service 添加5901-5905端口: firewall-cmd —permanent —zone=public —add-port=5901-5905/tcp

安装GNOME CentOS yum upgrade -y的作用:如果安装过程中有y/n的选择,一路选择y执行 yum -y groupinstall “X Window System” yum -y groupinstall “GNOME Desktop” startx 安装xrdp远程服务功能,安装epel源 :作用是能自动配置yum的软件仓库 yum install epel* -y 安装xrdp yum —enablerepo=epel -y install xrdp 添加远程桌面的端口,打开打开3389端口 firewall-cmd —permanent —zone=public —add-port=3389/tcp 重启防火墙 firewall-cmd —reload 启动xrdp服务 systemctl start xrdp 开机xrdp服务启动 systemctl enable xrdp

[Service]                                                                                                                   
Type=simple    
User=oracle
# Clean any existing files in /tmp/.X11-unix environment    
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' 
ExecStart=/usr/bin/vncserver %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
PIDFile=/home/oracle/.vnc/%H%i.pid

vnc配置:https://www.cnblogs.com/itzxy/p/7324695.html 切换用户:su - oracle 设置vnc远程密码:vncpasswd 退出:exit 添加进程:systemctl daemon-reload 启动VNC:systemctl start vncserver-oracle@:1.service 停止VNC:systemctl stop vncserver-oracle@:1.service 查看VNC:systemctl status vncserver-oracle@:1.service 开机启动:systemctl enable vncserver-oracle@:1.service 调整分辨率:vncserver -geometry 1024x768 配置文件:vi /usr/bin/vncserver
启动chronyd服务(时间同步器) 启动chronyd服务:systemctl start chronyd.service 查看状态:systemctl status chronyd.service 查看VNC的PID,然后ps -aux | grep 1169 image.png image.png

传输文件

win命令(或是xshell工具传输) scp -r F:\Packages\Oracle-12c\linuxx64_12201_database.zip root@82.157.67.134:\myproject

安装过程

image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png

配置文件

  1. 检查 listener.ora 和 tnsnames.ora 文件(主机名要能解析或修改为对应的IP地址)

查找:find /u01 -name listener.ora 编辑:vim /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora image.png 查找:find /u01 -name tnsnames.ora 编辑:vim /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora

ORCL =
  ( DESCRIPTION =
     (ADDRESS = ( PROTOCOL = TCP )( HOST = oracle-12c )( PORT = 1521 )
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = orcl)
     )
  )


image.png 查看是否启动监听:netstat -tunlp | grep 1521 image.png

  1. 配置 /etc/oratab

vim /etc/oratab image.png

  1. 配置 /etc/rc.local 文件随系统启动Oracle

vim /etc/rc.local

TMP=/tmp
TMPDIR=$TMP
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
ORACLE_SID=orcl
ORACLE_TERM=xterm
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH LD_LIBRARY_PATH PATH ORACLE_TERM ORACLE_SID ORACLE_HOME ORACLE_BASE TMPDIR TMP
su oracle -c "dbstart"
su oracle -c "lsnrctl start"
  1. 配置所有用户环境

vim /etc/profile

TMP=/tmp
TMPDIR=$TMP
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
ORACLE_SID=orcl
ORACLE_TERM=xterm
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH LD_LIBRARY_PATH PATH ORACLE_TERM ORACLE_SID ORACLE_HOME ORACLE_BASETMPDIR TMP


if [$USER = "oracle"]; then
if [$SHELL = "/bin/ksh"]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

备注:如果不希望所有用户都使用sqlplus,可以仅配置oracle用户的~/.bash_profile 文件

  1. 重启服务器,验证Oracle数据库是否可以自动启动

su - reboot

  1. 使用VNC连接远程桌面,打开终端

sqlplus / as sysdba select status from v$instance image.png

  1. root用户下检查:!net

image.png

开始使用

创建一个新的dba账号 sysdba登入:sqlplus / as sysdba 创建用户:create user lyj identified by passwd 用户授权(DBA权限):grant dba to user 备注:如果使用容器数据库(CDB)方式安装,用户名必须以c##开头 create user c##mliu identified by passwd grant dba to c##mliu 删除用户:drop user c##lyj cascade; 三种登入方式: sqlplus c##mliu/orcl@orcl sqlplus c##mliu/orcl@//192.168.0.1/orcl sqlplus c##mliu/orcl@//192.168.0.1:1521/orcl

容器数据库

临时参考:https://blog.csdn.net/weixin_39739170/article/details/112032563 切换到ORCLPDB容器:alter session set container=ORCLPDB; 切换到CDB容器:alter session set container=CDB$ROOT;

问题整理

文件缺失

yum install compat-libcap*yum install libaio-devel* yum install compat-libstdcyum install ksh

连接VNC蓝屏

参考:https://www.it610.com/article/1296342633521684480.htm

检查swap分区不通过

详细-1:https://cloud.tencent.com/developer/article/1525090?from=14588 详细-2:https://www.cnblogs.com/handongxue/p/9549669.html 详细-3:https://www.51lowkey.com/note-10.html image.png

swap:Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用Swap分区来提升系统运行效率。
交换分区,英文的说法是swap,意思是“交换”、“实物交易”。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。

解决办法:增加大约2G左右的swap 步骤如下: 1、使用root用户,在/tmp(随意),下执行下面语句 dd if=/dev/zero of=swapfree bs=32k count=65515 2G空间 dd if=/dev/zero of=swapfree bs=32k count=131030 4G空间 (增加swap大小为bscount,bs为block,count为数量) Centos7安装Oracle - 图35 上图可以看出,通过这个语句创建了一个2G的文件swapfree
2、将创建的文件用做交换分区,执行语句: mkswap swapfree Centos7安装Oracle - 图36 3、开启这个交换空间,执行语句: swapon swapfree4、通过free命令查看,交换空间在原来交换空间的基础上增加了2G(或4G)*
Centos7安装Oracle - 图37

5、在/etc/fstab中加入下面两行,设置此交换分区开机启动 /dec/hdb5 swap swap defaults 0 0 /tmp/swapfree swap swap defaults 0 0

更改Linux默认栈空间的大小

详细:https://www.doc88.com/p-21461725399935.html 有时候在Linux写C++程序处理大量的数据,程序内部需要分配很大的数组来存放一些数据,但有时候分配的数组太大的话运行时会出现段错误。这种情况可能是分配的数组大小超过了Linux系统的默认栈空间的大小了,导致栈空间不够分配,出现错误。
(1)查看linux默认栈空间的大小
通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下为8192 KB 即8MB。
(2)临时改变栈空间的大小
通过命令 ulimit -s 设置大小值临时改变栈空间大小。例如:ulimit -s 102400,即修改为100MB。
(3)永久修改栈空间大大小。有两种方法:
方法一:可以在vim /etc/rc.local 内加入 ulimit -s 102400 则可以开机就设置栈空间大小,任何用户启动的时候都会调用,然后执行 source /etc/rc.local
方法二:修改配置文件/etc/security/limits.conf

错误:无法从 /var/lib/rpm 打开软件包数据库

cd /var/lib/rpm

删除:db.001文件 rm -rf db.001

重建数据:rpm —rebuilddb

SQL语句输出乱码问题

  1. 问号乱码现象如图:

image.png

  1. 执行select userenv(‘language’) from dual;查看Oracle客户端字符集,如图所示: image.png 3.设置Linux下Oracle用户下的.base_profile文件,命令:vim .bash_profile 添加 export NLS_LANG=”SIMPLIFIED CHINESE_CHINA.AL32UTF8” 参数。如图所示: image.png

4.添加完毕后保存退出,执行source .bash_profile 命令,重新使用sqlplus查看,如图所示: image.png 5.到此处恭喜你中文问号乱码问题已经解决!

bash: sqlplus: 未找到命令

参考其他:https://blog.csdn.net/weixin_41364598/article/details/106600954 [oracle@localhost ~]$ sqlplus / as sysdba
bash: sqlplus: 未找到命令 原因:ORACLE_HOME和export PATH没有配置好。 解决办法: 1、找到ORACLE_HOME的位置,我的是:/u01/app/oracle/product/11.2.0/dbhome_1 2、切换到oracle用户(是什么用户安装oracle的就用什么用户)命令:su oracle 3、vi .bash_profile(切换到根目录:”cd ~” 执行这条命令) 4、在最后增加两行配置文件 export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH(可不变,照着复制) image.png 5、启用该资源文件,命令:source .bash_profile 6、执行sqlplus / as sysdba 正常。 image.png

Linux用户名显示-bash-4.1$快速排查

几个可能导致的原因: 1 用户的家目录所属组被改为root,解决方法使用root执行cd /home/;chown username:username username 2 用户的家目录被修改,这个时候如果要修改用户的家目录,先切换到root用户下,直接修改/etc/passwd文件,找到你的用户名那一行,修改即可,但修改之后再次进入系统的时候用户名就有可能会显示-bash-4.1$,这时候解决方法如下:

3 用户的家目录少了.bash_profile和.bashrc 添加.bash_profile Centos7安装Oracle - 图44 添加.bashrc Centos7安装Oracle - 图45 最后用source指令使之立即生效

su鉴定故障

修改root账户密码:sudo passwd root