一 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 用浏览器测试
-
用浏览器输入:https://Oracle:5500/em
注意:浏览器需要有Flash插件 -
登录名:sys 密码:abc123 勾选:as sysdba
-
使用命令行界面用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)))
命令执行成功