理论+实验 详解Oracle安装部署过程

  • Post author:
  • Post category:其他




一 Oracle简介



1.1 最流行的大型数据库

●由甲骨文公司出品,目前最新版本为Oracle19c(测试版本)

●官方网站:https://www.oracle.com/cn

●采用C/S模式,支持SQL查询语言

●在稳定性,高性能,安全性等方面优于其他数据库,因此常用于政府及企业



1.2 安装CentOS7操作系统要求

●防火墙的配置选项:禁用

●SELinux设置:禁用

●默认安装:软件开发

●内核:3.10.0.54.0.1.e17.x86_64及以上版本



1.3 系统及配置要求

●物理内存,不少于1GB

●交换分区:物理分区为1-2GB时,设置交换内存为物理内存的1.5-2倍;物理内存为2-16GB时,设置为与物理内存大小相同

●磁盘空间,不少于15GB

●拥有固定的FQDN名称,安装后不建议再更改



二 实验步骤及要求



2.1 关闭防火墙自启动,以及相关功能和增强性安全功能,更改用户名

[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled



2.2 更改用户名以及域名解析

[root@localhost ~]# hostnamectl set-hostname oracle        //更改主机名Oracle
[root@localhost ~]# su
[root@oracle ~]# vi /etc/hosts
20.0.0.21       oracle
[root@oracle ~]# ping oracle
PING oracle (20.0.0.21) 56(84) bytes of data.
64 bytes from oracle (20.0.0.21): icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from oracle (20.0.0.21): icmp_seq=2 ttl=64 time=0.029 ms



2.3 创建xfs文件系统并且进行挂载(不少于15G)

##添加一块硬盘
[root@oracle ~]# fdisk -l

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ab94d

[root@oracle ~]# fdisk /dev/sdb      //创建一个主分区

[root@oracle ~]# fdisk -l
Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x63f07f51

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   209715199   104856576   83  Linux

[root@oracle ~]# vi /etc/fstab          //orc目录为挂载目录
/dev/sdb1       /orc    xfs     defaults        0 0

[root@oracle ~]# mkdir /orc
[root@oracle ~]# mount -a
[root@oracle ~]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda3      xfs        50G   12G   39G  24% /
devtmpfs       devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs          tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs          tmpfs     3.9G   13M  3.8G   1% /run
tmpfs          tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda5      xfs       242G   37M  241G   1% /home
/dev/sda1      xfs      1014M  174M  841M  18% /boot
tmpfs          tmpfs     781M   12K  781M   1% /run/user/42
tmpfs          tmpfs     781M     0  781M   0% /run/user/0
/dev/sdb1      xfs       100G   33M  100G   1% /orc



2.4 安装软件环境包

[root@oracle ~]# yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel



2.5 内核参数调整

[root@oracle ~]# vi /etc/sysctl.conf

fs.aio-max-nr = 1048576   #异步IO请求数目 推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个
fs.file-max = 6815744   #打开的文件句柄的最大数量,防止文件描述符耗尽的问题
kernel.shmall = 2097152 #共享内存总量 页为单位,内存除以4K所得
kernel.shmmax = 4294967295  
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128  #SEMMSL: 每个信号集的最大信号数量 SEMMNS:用于控制整个 Linux 系统中信号的最大数 SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量 SEMMNI :内核参数用于控制整个 Linux 系统中信号集的最大数量
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   #套接字发送缓冲区大小的最大值


[root@oracle ~]# sysctl -p    //重新加载配置文件
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128  #SEMMSL:
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



2.6 用户环境设置

[root@oracle ~]# groupadd oinstall
[root@oracle ~]# groupadd dba
[root@oracle ~]# useradd -g oinstall -G dba oracle
[root@oracle ~]# passwd oracle           //密码为‘abc123’

[root@oracle ~]# mkdir -p /orc/app/oracle
[root@oracle ~]# chown -R oracle:oinstall /orc/app/
[root@oracle ~]# chmod -R 755 /orc/app/oracle/

[root@oracle ~]# vim /home/oracle/.bash_profile    //oracle用户环境配置

umask 022            #反掩码`在这里插入代码片`
ORACLE_BASE=/orc/app/oracle
ORACLE_HOME=/orc/app/oracle/product/12.2.0/dbhome_1/
ORACLE_SID=orcl
NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
LANG=zh_CN.UTF-8         #安装时用简体中文

export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID



2.7 oracle用户资源限制

##使用pam_limits认证模块
[root@oracle ~]# vim /etc/pam.d/login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
#pam_selinux.so close should be the first session rule
session    required     /lib/security/pam_limits.so                                     //添加的
session    required     pam_limits.so                                                        //添加的
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
#pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so


[root@oracle ~]# vim /etc/security/limits.conf 
#- stack - max stack size (KB)
#- maxsyslogins - max number of logins on the system
#- priority - the priority to run user process with
#- locks - max number of file locks the user can hold
#- sigpending - max number of pending signals
#- msgqueue - max memory used by POSIX message queues (bytes)
#- nice - max nice priority allowed to raise to values: [-20, 19]
#- rtprio - max realtime priority
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

#End of file

oracle        soft    nproc           2047       #单用户可使用的进程数量
oracle        hard    nproc           16384
oracle        soft    nofile          1024       #用户可打开的文件数量
oracle        hard    nofile          65536
oracle        soft    stack           10240      #堆栈设置

[root@oracle ~]# 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
[root@oracle ~]# source /etc/profile



2.8 oracle安装

[root@oracle ~]# mkdir /abc
[root@oracle ~]# cd /abc/
[root@oracle abc]# unzip linuxx64_12201_database.zip          //把之前传好的包源解压压到/abc中


##在图形化界面操作
xhost +   //以root用户在图形化界面操作

su - oracle   //切换oracle用户

cd /abc 
[oracle@oracle ~]$ export DISPLAY=:0.0         //初始化像素调整
[oracle@oracle ~]$ cd /abc/
[oracle@oracle abc]$ ls
database  linuxx64_12201_database.zip
[oracle@oracle abc]$ cd database/
[oracle@oracle database]$ ls
install  response  rpm  runInstaller  sshsetup  stage  welcome.html
[oracle@oracle database]$ ./runInstaller    //执行安装程序

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

##切换 root  用户
[root@oracle app]# /orc/app/oraInventory/orainstRoot.sh 
更改权限/orc/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。

更改组名/orc/app/oraInventory 到 oinstall.
脚本的执行已完成。
[root@oracle app]# /orc/app/oracle/product/12.2.0/dbhome_1/root.sh 



2.9 用浏览器测试

  1. 用浏览器输入:https://Oracle:5500/em

    在这里插入图片描述

    注意:浏览器需要有Flash插件

  2. 登录名:sys 密码:abc123 勾选:as sysdba

    在这里插入图片描述

  3. 使用命令行界面用oracle用户登录

[root@oracle ~]# su - oracle 
Last login: Thu Oct 22 23:16:11 CST 2020
[oracle@oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 星期四 10月 22 23:30:01 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


连接到: 
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> help index     (查看命令列表,sql中不区分大写小写)

SQL> show user       (查看当前用户)



三 启动数据库



3.1 启动Oracle实例(非装载阶段)

● SQL>start nomount;



3.2 由实例装载数据库(装载阶段)

● SQL>Alter Database MOUNT;



3.3 打开数据库(打开阶段)

● SQL>Alter Database OPEN;



四 关闭数据库

SQL>SHUTDOWN [关闭选项];
NORMAL:不允许连接数据库,等待所有用户退出数据库后才关闭,关闭时间可能较慢
IMMEDIATE:不等待所有用户退出,强行回滚当前活动事务,是常用方式
TRANSACTIONAL:当前链接到系统的活动的事务执行完毕。常用来计划关闭数据库
ABORT:需要立即关闭,所以没提交的事务将不回滚,没有任何办法的情况下不得不采用的方式



五 启动监听

●作用:客户端访问Oracle实例

[oracle@Oracle ~]$ lsnrctl 
LSNRCTL> start
TNS-01106: 使用名称LISTENER的监听程序已经启动



六 关闭监听

[oracle@Oracle ~]$ lsnrctl stop
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle)(PORT=1521)))
命令执行成功



版权声明:本文为Mr_ChenWJ原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。