Oracle12C R2 for Centos 7

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

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

下载安装包 说在前面:其实,对于绝对的新手来讲,强烈建议下载一个OEL7.6安装最踏实,因为里面对Oracle内核有优化,该有的包和参数也都提前给设置好了,省心 https://edelivery.oracle.com/osdc/faces/SoftwareDelivery#! 下载链接在这里,需要注册一个Oracle官网用户并登陆,通常选择第七个包,就是最后一个即可,如果不用OEL,就自己下载Centos 7.6也可以 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*来安装缺失的包 否则正确的话,应该出现下图所示 [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)

开始安装 在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

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

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

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

创建数据库 在oracle账号下键入dbca 选择创建数据库,下一步继续 选择高级配置,下一步继续 选择单实例数据库,默认一般用途(OLTP),下一步继续 从12C版本支持CDB与PDB数据库(即容器数据库与可插拔数据库) CDB全称为Container Database,中文翻译为数据库容器 PDB全称为Pluggable Database,即可插拔数据库 从12C开始,Oracle实例与数据库可以形成一对多的关系 选择存储属性,选择OMF表空间管理,点击下一步继续 设定快速闪回区的存储方式、路径和大小,下一步继续(练习阶段,暂不开启归档) 可以看到,已经加载我们设定好的监听程序,下一步继续 安全选项在练习环境就不设置了,下一步继续 进程我设置为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即可 为了后期加入到OEM CC中,这里就不设置单机版的OEM了,下一步继续 这里熊熊偷懒使用统一管理口令了,下一步继续 有兴趣的可以查看所有的初始化参数,也可以生成数据库创建脚本来学习(这个脚本主要采用的是RMAN的CLONE技术),点击下一步继续 这里会列出一个详细的配置清单,查证无误后,点击完成开始建库 至此,数据库创建完毕,点击关闭即可

静默建库 编辑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;

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

查看数据库状态 在CDB数据库中,启动CDB数据库并不能直接将其下的pdb启动,我们来看一下 SQL> select con_id, dbid, guid, name , open_mode from v$pdbs; 可以看到,PDB数据库还处于mount状态,即未启动状态,需要将其启动 目前数据库已启动 切换到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  /