Oracle12C R2 for Centos 7

背景介绍
安装配置这东西吧,真没啥可写的,但是你说不写详细点吧,真的好多学员搞不懂,所以呢,熊熊思前想后,打算把自己从头到尾怎么安装的,完全写一下,希望能让大家有个全面的基础认知

准备工作
安装Xmanager
这个软件功能很强大,熊熊安装他主要是用于把远程服务器的屏幕共享到本地桌面上
软件在官网或者很多地方都有下载,这里就不详细给出链接地址了(也许后期熊熊会把所有需要的软件都放在百度云盘上,谁知道呢)
完全Oracle安装建库手册
双击Xmanager安装程序,在欢迎页面点击下一步继续
完全Oracle安装建库手册
必须接受许可协议,下一步继续
完全Oracle安装建库手册
主要是输入产品密钥(网上有很多,能找到,也有专门的注册机),点击下一步继续
完全Oracle安装建库手册
安装路径可以根据自己实际情况,下一步继续
完全Oracle安装建库手册
典型安装就够了,下一步继续
完全Oracle安装建库手册
开始菜单里的程序文件夹,这个默认即可,下一步继续
完全Oracle安装建库手册
选择中文语言,点击安装
完全Oracle安装建库手册
安装完成

下载安装包
说在前面:其实,对于绝对的新手来讲,强烈建议下载一个OEL7.6安装最踏实,因为里面对Oracle内核有优化,该有的包和参数也都提前给设置好了,省心
完全Oracle安装建库手册
https://edelivery.oracle.com/osdc/faces/SoftwareDelivery#! 下载链接在这里,需要注册一个Oracle官网用户并登陆,通常选择第七个包,就是最后一个即可,如果不用OEL,就自己下载Centos 7.6也可以
Oracle安装包下载
完全Oracle安装建库手册
先把database的包下了就行了,想练习的,就把下面的example包也下了
链接如下:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle12c-linux-12201-3608234.html
同样需要注册一个Oracle官网用户并登录

参数配置
创建组和账户(root账号)

groupadd -g 501 oinstall
groupadd -g 502 dba
useradd -g oinstall -G dba oracle

创建一些目录和权限(root账号)

mkdir -p /orasetup /home/app/oracle
chmod -R 775 /orasetup /home/app
chown -R oracle:oinstall /orasetup /home/app

上面具体的路径,需要根据自己的实际情况来定,比如通常默认为/u01/app/oracle
切换到Oracle账号,编辑一些必要的环境变量

[oracle@svn ~]$ pwd
/home/oracle
[oracle@svn ~]$ vi .bash_profile

具体内容如下

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias vi='vim'
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

export ORACLE_BASE=/home/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_SID=bear
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib/usr/lib
export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$ORACLE_HOME/jdk/bin
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export NLS_LANG="Simplified Chinese_China".AL32UTF8

ORACLE_BASE是Oracle基目录(这里可以包括所有Oracle产品都可以装在这个目录下)
ORACLE_HOME是Oracle数据库软件目录
ORACLE_SID是数据库唯一标示(在单实例尤其重要)
下面的LD_LIBRARY_PATH和PATH分别是bin操作路径和字典库路径
NLS_DATA_FORMAT是日期显示格式(这里是年月日 时分秒)
NLS_LANG是数据库显示字符集及国家字符集显示
(中文是Simplified_Chinese_China.AL32UTF8)
这里需要安装一个rlwrap的软件,我们来看一下它的作用以及如何安装
如果没有rlwrap,默认sqlplus是不支持上下左右的键盘滚动以及历史记录快速查询的(list命令可以查询历史记录,但是很不方便)
因此我们来安装这个软件(网上有很多下载地址,这里就不给链接了)

[root@svn tmp]# pwd
/tmp
[root@svn tmp]# ll -h
总用量 248K
-rw-r--r-- 1 root root 246K 2月  14 2011 rlwrap-0.37.tar.gz
[root@svn tmp]# tar -zxvf rlwrap-0.37.tar.gz
[root@svn tmp]# cd rlwrap-0.37/
[root@svn rlwrap-0.37]# pwd
/tmp/rlwrap-0.37
[root@svn rlwrap-0.37]# ./configure

如果出现readline的报错,那么就执行命令yum -y install *readline*来安装缺失的包
否则正确的话,应该出现下图所示
完全Oracle安装建库手册
[root@svn rlwrap-0.37]# make && make install
执行安装即可
编辑好.bash_profile的环境变量文件后,wq退出,执行source .bash_profile来使其生效
[root@svn ~]# vi /etc/profile设置系统级环境变量

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

增加上面的部分,主要是为了解除限制
添加完以后,也要wq保存退出,执行source /etc/profile使其生效
[root@svn ~]# vi /etc/security/limits.conf 编辑一些参数设置

oracle  soft  stack  10240
oracle  soft  nproc  2047
oracle  hard  nproc  16384
oracle  soft  nofile 1024

添加如上设置,主要是允许打开的软硬限制,noproc表示的是每个用户最大的进程数,nofile表示的时最多能同时打开的文件数。
整个这些,真有心的,可以看一下这个链接(https://www.cnblogs.com/galengao/p/5764693.html

开始安装
完全Oracle安装建库手册
在xmanager那个文件夹里,选择passive这个,双击后,右下角会出现一个x的图标

[oracle@svn ~]$ export DISPLAY=192.168.9.179:0.0
[oracle@svn ~]$ xhost +
access control disabled, clients can connect from any host

按上面显示设置你的本地IP显示(注意,根据你的本地IP实际情况来设置DISPLAY)

[oracle@svn orasetup]$ pwd
/orasetup
[oracle@svn orasetup]$ ll -h
总用量 0
drwxr-xr-x 7 oracle oinstall 117 1月  27 2017 database
drwxr-xr-x 5 oracle oinstall  90 1月  27 2017 examples
[oracle@svn orasetup]$

把Oracle安装包传到/orasetup目录下并解压后,出现database文件夹,切入进去

[oracle@svn database]$ pwd
/orasetup/database
[oracle@svn database]$ ./runInstaller

执行安装
完全Oracle安装建库手册
第一步出现配置安全更新,因为没有Metalink账号,所以把Oracle支持的勾打没了,点击下一步继续
完全Oracle安装建库手册
先仅安装数据库软件,点击下一步继续
完全Oracle安装建库手册
目前只考虑单实例安装,点击下一步继续
完全Oracle安装建库手册
选择企业版进行安装,点击下一步继续
完全Oracle安装建库手册
这里可以看到,上面是Oracle的基目录,下面是Oracle的产品目录,这两个目录都在Oracle账号下的.bash_profile文件中配置好,这里是直接读取的该文件,点击下一步继续
完全Oracle安装建库手册
各种操作所需的权限组,自己学习都给他dba组就得了,省心,点击下一步继续
完全Oracle安装建库手册
如果有先决条件需要处理,有个脚本执行,缺包的话,使用yum命令进行安装,为什么让用OEL呢,因为只需要yum -y install oracle就搞定了,特别方便,这里我没有任何问题,点击安装开始安装
完全Oracle安装建库手册
用root账号执行上图所示脚本
[root@svn ~]# /home/app/oracle/product/12.2.0/db_1/root.sh
完全Oracle安装建库手册
脚本执行完成后,在执行配置脚本窗口点击确定按钮
完全Oracle安装建库手册
软件安装完毕,点击关闭即可

静默安装
有些时候,我们经常无法用桌面方式安装(本地or远程都算上),所以远程静默安装就尤其重要了,下面我们来看一下如何操作
完全Oracle安装建库手册
在database的response目录下,有个db_install.rsp的文件,先把他备份一下
完全Oracle安装建库手册
上面的文件里,都是一些实际参数,根据自己实际情况改一下就好了,这里就不一一解释了,很简单的,如果还有不懂的同学再问我就好了
完全Oracle安装建库手册
用上图的命令来调用静默安装,这里就不演示具体安装了,安装后也需要用root账号执行两个脚本,就都ok了

安装监听
NETCA

Oracle用户下在命令行键入netca
完全Oracle安装建库手册
选择监听程序配置,点击下一步继续
完全Oracle安装建库手册
添加监听程序,下一步继续
完全Oracle安装建库手册
默认监听名称listener,下一步继续
完全Oracle安装建库手册
默认TCP协议,下一步继续
完全Oracle安装建库手册
默认端口1521,下一步继续
完全Oracle安装建库手册
无需配置另一个监听,下一步继续
完全Oracle安装建库手册
监听程序配置完成,下一步继续
完全Oracle安装建库手册
点击完成按钮完成配置

创建数据库
在oracle账号下键入dbca
完全Oracle安装建库手册
选择创建数据库,下一步继续
完全Oracle安装建库手册
选择高级配置,下一步继续
完全Oracle安装建库手册
选择单实例数据库,默认一般用途(OLTP),下一步继续
完全Oracle安装建库手册
从12C版本支持CDB与PDB数据库(即容器数据库与可插拔数据库)
CDB全称为Container Database,中文翻译为数据库容器
PDB全称为Pluggable Database,即可插拔数据库
从12C开始,Oracle实例与数据库可以形成一对多的关系
完全Oracle安装建库手册
选择存储属性,选择OMF表空间管理,点击下一步继续
完全Oracle安装建库手册
设定快速闪回区的存储方式、路径和大小,下一步继续(练习阶段,暂不开启归档)
完全Oracle安装建库手册
可以看到,已经加载我们设定好的监听程序,下一步继续
完全Oracle安装建库手册
安全选项在练习环境就不设置了,下一步继续
完全Oracle安装建库手册
进程我设置为500、字符集选择AL31UTF8,连接模式为专用服务器模式,练习环境示例方案可以打上勾,内存情况请根据实际情况自行设置,点击下一步继续
如果我们的共享内存设置超过总内存的一半,那么需要在Linux系统中设置shm,虚拟内存页大小
[root@svn ~]# vi /etc/fstab 编辑这个文件
tmpfs /dev/shm tmpfs defaults,size=12288M 0 0
加上上面这行,wq保存退出后,umount /dev/shm再mount /dev/shm即可
完全Oracle安装建库手册
为了后期加入到OEM CC中,这里就不设置单机版的OEM了,下一步继续
完全Oracle安装建库手册
这里熊熊偷懒使用统一管理口令了,下一步继续
完全Oracle安装建库手册
有兴趣的可以查看所有的初始化参数,也可以生成数据库创建脚本来学习(这个脚本主要采用的是RMAN的CLONE技术),点击下一步继续
完全Oracle安装建库手册
这里会列出一个详细的配置清单,查证无误后,点击完成开始建库
完全Oracle安装建库手册
至此,数据库创建完毕,点击关闭即可

静默建库
完全Oracle安装建库手册
编辑dbca.rsp文件可以进行dbca静默建库,该文件具体如何编辑,官网有详细的记录,这里不做具体解释了
[oracle@svn response]$ dbca -silent -createDatabase -responseFile ./dbca.rsp
用上述命令可以进行dbca的静默建库,在此之前,编辑该脚本,把sid、dbname等该设置的都设置好即可

手工建库
写在前面:手工建库坑很多,而且说实话,意义并不大,所以强烈不推荐新手来试验
12C创建CDB的区别在于,要创建CDB,CREATE DATABASE语句必须包含ENABLE PLUGGABLE DATABASE子句。当包含此子句时,该语句使用根和种子创建CDB。如果未指定ENABLE PLUGGABLE DATABASE子句 那新创建的数据库是非CDB。该语句不会创建根和种子,非CDB永远不会包含PDB。
下面是具体的建库脚本

create database bear
user sys identified by oracle
user system identified by oracle
logfile group 1 ('$ORACLE_BASE/oradata/bear/disk1/redo01.log') size 200m,
        group 2 ('$ORACLE_BASE/oradata/bear/disk2/redo02.log') size 200m,
        group 3 ('$ORACLE_BASE/oradata/bear/disk3/redo03.log') size 200m
maxlogfiles 10
maxlogmembers 5
maxloghistory 5
maxdatafiles 1000
character set al32utf8
national character set al16utf16
extent management local
  datafile '$ORACLE_BASE/oradata/bear/disk1/system01.dbf' size 1g
  sysaux datafile '$ORACLE_BASE/oradata/bear/disk3/sysaux01.dbf' size 1g
  default tablespace deftbs
     datafile '$ORACLE_BASE/oradata/bear/disk2/deftbs01.dbf' size 1g
  default temporary tablespace temp01
     tempfile '$ORACLE_BASE/oradata/bear/disk1/temp01.tmp' size 100m
  undo tablespace undotbs
     datafile '$ORACLE_BASE/oradata/bear/disk2/undotbs01.dbf' size 2g
enable pluggable database
    seed
    file_name_convert = ('$ORACLE_BASE/oradata/bear/', '$ORACLE_BASE/oradata/pdbseed/')
    system datafiles size 1g autoextend on next 1m maxsize unlimited
    sysaux datafiles size 1g
  user_data tablespace usertbs
    datafile '$ORACLE_BASE/oradata/pdbseed/disk2/usertbs01.dbf' size 1g;

select instance_name, status from v$instance;
select open_mode, name from v$database;

完全Oracle安装建库手册
12C R2版本建库后,相关执行脚本都集成到了catcdb.pl这个perl脚本中,简单编辑修改一下即可使用,具体请根据实际情况修改,这里就不演示了
总之,手工建库不适合新手,不适合新手,不适合新手,重要事情说三遍!

查看数据库状态
在CDB数据库中,启动CDB数据库并不能直接将其下的pdb启动,我们来看一下
SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;
完全Oracle安装建库手册
可以看到,PDB数据库还处于mount状态,即未启动状态,需要将其启动
完全Oracle安装建库手册
目前数据库已启动
完全Oracle安装建库手册
切换到cdb$root用户下,亦可以看到pdb库已启动
SQL> alter pluggable database all open; 使用该语句可以将cdb库下的所有pdb数据库均启动,我们也可以做个触发器,当启动cdb的时候,自动触发启动所有的pdb

SQL> create or replace trigger open_pdbs
  2  after startup on database
  3  begin
  4  execute immediate 'alter pluggable database all open';
  5  end open_pdbs;
  6  /

完全Oracle安装建库手册