0x01 前言
最近有学习Oracle的需求,一切从0开始,今天花了点时间把环境搭建好后,感觉发现了新大陆。
官方的安装手册不但详细,还兼顾了众多操作系统,相关的安装手册可以通过以下地址下载:
0x02 准备
0x02.1 系统安装
我选择将Oracle 12c安装在centos 7上,因为Oracle的安装需要使用GUI界面,所以我在安装系统的时候选择server whit GUI,同时关闭了KDUNP与security policy:
在这里建议手动划分挂载点的空间,我这台虚拟机的磁盘空间为50G,所以各个挂载点的空间如下:
- boot:512MIB
- swap:8GiB,需与内存大小一致
- 当物理内存介乎1G-2G时,swap需为物理内存的1.5倍;
- 当物理内存介乎2G-16G时,swap需等于物理内存;
- 当物理内存大于16G时,swap为16G。
- /:剩下的空间全部挂在到根目录
这样分区有一个好处:不再需要担心如usr等重要的目录的空间不足。
安装Oracle还有分辨率的要求,最低分辨率需要达到1024 x 768。内存最小要求为1G,建议值为2G或更高;如果需要安装Oracle Grid,则需要8G内存。我这台虚拟机的配置如下:
安装好后可以依照以下文章对虚拟机进行更新与其他配置:
我会禁用IPv6、关闭SELinux与iptables,然后升级系统。
0x02.2 系统设置
以下是我系统的基本信息:
[root@oracle-s2 ~]# hostnamectl Static hostname: oracle-s2 Icon name: computer-vm Chassis: vm Machine ID: e67de8c496944a42ad49a4a0112821e5 Boot ID: ffa746fca55143c6a6d5fb6435fc9c44 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-693.21.1.el7.x86_64 Architecture: x86-64
因为Oracle的要求,需要检查系统hostname与IP的对应关系,如果没有独立的DNS,请在hosts中将hostname手动加入,如:
#获取IP信息 [root@oracle-s2 ~]# ifconfig ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.1.1.120 netmask 255.255.255.0 broadcast 10.1.1.255 ether 00:50:56:b6:47:95 txqueuelen 1000 (Ethernet) RX packets 30518 bytes 2065970 (1.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 730 bytes 68422 (66.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1 (Local Loopback) RX packets 72 bytes 5736 (5.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 72 bytes 5736 (5.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:c7:6f:f3 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 #获取hostname [root@oracle-s2 ~]# hostname oracle-s2 #将hostname与IP的对应关系添加到hosts文件中 [root@oracle-s2 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 oracle-s2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.1.1.120 oracle-s2
如果有独立的DNS服务器,则需要在DNS服务器中添加DNS解析。
然后检查SELinux与firewalld,在测试环境中我都是将这两个服务关闭的:
#检查SELinux状态 [root@oracle-s2 ~]# sestatus SELinux status: disabled #检查firewalld状态 [root@oracle-s2 ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
然后添加Oracle所需要的用户组与用户:
#添加oinstall用户组 [root@oracle-s2 ~]# groupadd oinstall #添加dba用户组 [root@oracle-s2 ~]# groupadd dba #添加oracle用户并将其添加到oinstall用户组并附加dba用户组 [root@oracle-s2 ~]# useradd -g oinstall -G dba oracle #为oracle设置密码 [root@oracle-s2 ~]# passwd oracle Changing password for user oracle. New password: Retype new password: passwd: all authentication tokens updated successfully.
然后调整内核参数:
[root@oracle-s2 ~]# cat /etc/sysctl.conf fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4185772032 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 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 = 1048586
设定Oracle用户的limits:
[root@oracle-s2 ~]# cat /etc/security/limits.conf | grep oracle oracle soft nproc 65536 oracle hard nproc 65536 oracle soft nofile 65536 oracle hard nofile 65536 oracle soft stack 65536 oracle hard stack 65536
还需要安装以下软件包:
[root@oracle-s2 ~]# yum install -y binutils.x86_64 compat-libcap1.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 ksh compat-libstdc++-33 libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 make.x86_64 sysstat.x86_64
调整完系统后需要重启,完成后即可进行安装。
0x03 安装
0x03.1 安装包与目录权限
所有这一切完成后,就可以通过以下地址下载Oracle 12c的安装包并上传到服务器中进行安装:
下载可能需要登入Oracle网站,本文章使用Linux x86-64版进行安装:
下载好安装包后即可上传到服务器中,然后通过SSH使用root用户登入并使用以下命令解压到“stage”目录中,完成后还需要修改该目录的权限:
#解压文件 [root@oracle-s2 ~]# unzip ./oracle/linuxx64_12201_database.zip -d /stage/ #修改权限 [root@oracle-s2 ~]# chown -R oracle:oinstall /stage/
在安装之前需要建立几个目录并修改权限:
#新建文件夹 [root@oracle-s2 ~]# mkdir /u01 [root@oracle-s2 ~]# mkdir /u02 #修改权限 [root@oracle-s2 ~]# chown -R oracle:oinstall /u01 [root@oracle-s2 ~]# chown -R oracle:oinstall /u02 [root@oracle-s2 ~]# chmod -R 775 /u01 [root@oracle-s2 ~]# chmod -R 775 /u02 [root@oracle-s2 ~]# chmod g+s /u01 [root@oracle-s2 ~]# chmod g+s /u02
以上新建了两个目录,其中u01用于存放Oracle软件,u02用于存放数据库文件。
完成后即可开始安装。
0x03.2 安装
从这里开始需要使用Oracle这个用户登入系统的GUI界面,如果你的系统没有安装GUI界面,则需要安装“X Window System”或其他具备GUI界面的软件。另外,如果你的系统无法通过显示器或VNC显示,则需要安装xrdp或其他软件:
打开一个终端并运行安装文件,稍等片刻后即可看到安装向导:
[oracle@oracle-s2 ~]$ /stage/database/runInstaller
在弹出的安装向导中填入Oracle账号邮箱并取消勾选Oracle support,然后点选next:
在installation option窗口中选择“create and configure a database”并点击next:
在system class窗口中选择“server class”并单击next:
在database installation option窗口中选择“single instance database installation”,然后单击next:
在install type窗口中选择“typical install”,然后单击next:
在typical installation窗口中作如下配置:
- oracle base:/u01/app/oracle
- software location:/u01/app/oracle/product/12.2.0/dbhome_1
- storage type:File System
- database file location:/u02
- database edition:enterprise edition
- OSDBA group:dba
- global database name:orcl.t.com
- password:请输入你的密码,密码中不允许含有字符
最后取消勾选“create as container database”,完成后单击next:
在create inventory窗口中配置“inventory directory”与“orainventory group name”,然后单击next:
如果通过安装前检查,则会到达summary窗口,这里可以检查相关配置的信息,确认无误后单击install即可:
在安装过程中会弹出一个对话框,需要手动将对话框中的两个脚本用root用户执行,执行完毕后单击ok即可继续安装进程:
经过漫长的等待,安装终于完成。完成后的界面很简洁,但其中会显示Oracle Enterprise Manager的地址:
至此,安装已全部完成,可以单击close关闭安装窗口。
0x03.3 收尾
使用SSH登入oracle这个用户,然后将环境变量添加到用户环境中:
#打开文件 [oracle@oracle-s2 ~]# vim /home/oracle/.bash_profile #在最后添加以下内容 TMPDIR=$TMP; export TMPDIR ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1; export ORACLE_HOME ORACLE_SID=orcl; export ORACLE_SID PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
使用以下命令执行该文件:
[oracle@oracle-s2 ~]$ . .bash_profile
该操作不会返还任何内容,但如果执行成功的话,即可使用sqlplus命令并登入数据库:
[oracle@oracle-s2 ~]$ sqlplus system@orcl SQL*Plus: Release 12.2.0.1.0 Production on Mon Mar 19 00:42:03 2018 Copyright (c) 1982, 2016, Oracle. All rights reserved. Enter password: Last Successful login time: Mon Mar 19 2018 00:41:48 +08:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL>
0x03.4 Oracle Enterprise Manager
我们还可以通过Oracle Enterprise Manager管理数据库,使用浏览器打开以下地址:
- https://oracle-s2.t.com:5500/em
注意,这里需要使用https协议,然后输入用户名和密码:
- 用户名:system
- 密码:安装时所设置的密码
通过验证后即可进入Oracle Enterprise Manager:
0x04 结语
通过安装,我敲了Oracle的大门,接下来需要开门和深入。