zoukankan      html  css  js  c++  java
  • CentOS6.5搭建oracle11g RAC

    [root@rac1 ~]#

    前奏

    注意事项
    1.主机名都用小写字母,长度不能超过15位,不要有特殊符号
    2.两个节点的Plublic和VIP所在网卡的网卡名要一样
    3.表决盘应该都是相同的大小。不同的大小可能导致可用性降低。


    环境
    [root@rac1 ~]# cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 6.5 (Santiago)

    p13390677_112040_Linux-x86-64_1of7.zip
    p13390677_112040_Linux-x86-64_2of7.zip
    p13390677_112040_Linux-x86-64_3of7.zip

    各主机配置

    主机名 CPU 内存 硬盘 分区
    rac1 2核 8G 250G*1 /dev/mapper/vg_rac1-v01          50G         /
    tmpfs                                   3.9G             /dev/shm
    /dev/sda1                             291M            /boot
    /dev/mapper/vg_rac1-v02          30G              /home
    /dev/mapper/vg_rac1-v03          25G              /tmp
    Swap:           24
    rac2 2核 8G 250G*1 /dev/mapper/vg_rac2-v01           55G    /
    tmpfs                             3.9G         /dev/shm
    /dev/sda1                                            291M       /boot
    /dev/mapper/vg_rac2-v02           30G          /home
    /dev/mapper/vg_rac2-v03           30G          /tmp
    Swap:           24
    store 1核 1G

    100G(装系统)

    20G(ocr盘,不要分区)

    25G(投票盘votingdisk,不要分区)    

    30G(数据盘,data,不要分区)

    35G(不要分区

    40G(不要分区

    45G(不要分区

     


    RAC IP地址规划并写入hosts文件
    (只需要在eth0上配置Plublic IP即可。vip和SCAN IP会自动配置,要保证这两个IP没有被使用)
    1、IP地址规划

    主机名 IP 类型 网络接口
    rac1 172.16.186.146/24 Plublic IP eth0
    rac1-vip 172.16.186.147/24 Virtaual IP
    rac1priv 192.168.0.146/24 Private IP eth1
    rac2 172.168.186.148/24 Plublic IP eth0
    rac2-vip 172.168.186.149/24 Virtaual IP
    rac2priv 192.168.0.148/24 Private IP eth1
    rac-scan 172.168.186.150/24 SCAN IP eth0
    store 172.16.186.151   eth0

    2、分别修改两个节点的主机名

     

    3、分别修改两台节点的IP地址
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    vim /etc/sysconfig/network-scripts/ifcfg-eth1
    4、分别写入两个节点的hosts文件
    [root@rac1 ~]# vim /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    172.16.186.146  rac1
    172.16.186.147  rac1-vip
    192.168.0.146   rac1-priv
    172.16.186.148  rac2
    172.16.186.149  rac2-vip
    192.168.0.148   rac2-priv
    172.16.186.150  rac-scan

    [root@rac1 ~]# scp /etc/hosts root@172.16.186.148:/etc

    安装前设置
    第零步:关闭系统防火墙
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    service iptables stop && chkconfig iptables off

    cat /etc/selinux/config
    service iptables status

    第一步:配置共享存储

    注: 上图除sda磁盘分区装了系统外,其他磁盘都没分区

    配置共享存储
    [root@store ~]# yum -y install lsscsi scsi-target-utils
    [root@store ~]# vim /etc/tgt/targets.conf
    注:在最后插入以下内容
    <target iqn.2020-07.com.example:server.store.sdb>
            <backing-store  /dev/sdb>
                vendor_id samsung
                lun 6
            </backing-store>
            initiator-address 172.16.186.0/24
            write-cache off
    </target>
    <target iqn.2020-07.com.example:server.store.sdc>
            <backing-store  /dev/sdc>
                vendor_id WD
                lun 7
            </backing-store>
            initiator-address 172.16.186.0/24
            write-cache off
    </target>
    <target iqn.2020-07.com.example:server.store.sdd>
            <backing-store  /dev/sdd>
                vendor_id Seagate
                lun 8
            </backing-store>
            initiator-address 172.16.186.0/24
            write-cache off
    </target>
    <target iqn.2020-07.com.example:server.store.sde>
            <backing-store  /dev/sde>
                vendor_id Seagate
                lun 9
            </backing-store>
            initiator-address 172.16.186.0/24
            write-cache off
    </target>
    <target iqn.2020-07.com.example:server.store.sdf>
            <backing-store  /dev/sdf>
                vendor_id Seagate
                lun 10
            </backing-store>
            initiator-address 172.16.186.0/24
            write-cache off
    </target>
    <target iqn.2020-07.com.example:server.store.sdg>
            <backing-store  /dev/sdg>
                vendor_id Seagate
                lun 11
            </backing-store>
            initiator-address 172.16.186.0/24
            write-cache off
    </target>

    释意:
    格式:iqn.yyyy-mm.<reversed domain name>[:identifier]
          iqn:表示ISCSI  Qualified Name,简称iqn
          yyyy-mm:表示年份-月份
       reversed domain name:表示倒过来的域名,这里是com.example

    [root@store ~]# service tgtd start && chkconfig tgtd on
    查看target状态
    [root@store ~]# tgt-admin --show

    rac1节点和rac2节点配置
    [root@rac1 ~]# yum -y install iscsi-initiator-utils


    查找发现网络中的存储
    [root@rac1 ~]# iscsiadm -m discovery -t st -p 172.16.186.151:3260
    [root@rac2 ~]# iscsiadm -m discovery -t st -p 172.16.186.151:3260

    登录一下target并查看磁盘
    [root@rac1 ~]# for i in b c d e f g;do iscsiadm -m node -T iqn.2020-07.com.example:server.store.sd$i -p 172.16.186.151 -l;done
    [root@rac2 ~]# for i in b c d e f g;do iscsiadm -m node -T iqn.2020-07.com.example:server.store.sd$i -p 172.16.186.151 -l;done

    yum -y remove iscsi-initiator-utils
    service iscsi stop
    rm -rf /var/lib/iscsi/
    不能重复登录

    卸载设备
    iscsiadm -m node -s
    iscsiadm -m node -s -T iqn.2020-07.com:server.store.sdb -l

    [root@rac1 ~]# fdisk -l|grep -E "^Disk /dev/sd"

    rac1节点和rac2节点上各多了6块磁盘(这里三/dev/sdc~sdh),这块磁盘就是store节点上共享出来的

    第二步:初始化设置
    1.禁用ntpd并删除其配置文件(禁用后rac的grid安装的时候回自动使用自带的CTSS进行时间关系)(所有节点执行)
    [root@rac1 ~]#  service ntpd status && service ntpd stop && chkconfig ntpd off
    [root@rac1 ~]#  mv /etc/ntp.conf{,.bak}

    2.修改profile文件,在文档尾部新增如下内容(所有节点执行)
    [root@rac1 ~]#  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

    3.编辑/etc/sysctl.conf(所有节点执行)
    [root@rac1 ~]#  vim /etc/sysctl.conf
    fs.file-max = 6815744
    kernel.sem = 250 32000 100 128
    kernel.shmmni = 4096
    kernel.shmall = 1073741824
    kernel.shmmax = 96636764160
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576
    fs.aio-max-nr = 1048576
    net.ipv4.ip_local_port_range = 9000 65500

    [root@rac1 ~]# sysctl -p

    4.编辑/etc/security/limits.conf(所有节点执行)
    [root@rac1 ~]#  vim /etc/security/limits.conf
    grid soft nproc 2047
    grid hard nproc 16384
    grid soft nofile 1024
    grid hard nofile 65536
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536

    5.编辑/etc/pam.d/login(所有节点执行)
    echo "session required pam_limits.so" >> /etc/pam.d/login


    6.创建用户并修改密码(所有节点执行)
    groupadd -g 4321 oinstall
    groupadd -g 4322 dba
    groupadd -g 4323 oper
    groupadd -g 4324 asmdba
    groupadd -g 4325 asmadmin
    groupadd -g 4326 asmoper
    useradd -g oinstall -G asmadmin,asmdba,asmoper,dba grid
    useradd -g oinstall -G asmadmin,asmdba,dba,oper oracle

    echo "aa4455**" | passwd --stdin grid
    echo "aa4455**" | passwd --stdin oracle
     
    id oracle
    id grid

    7.新建grid和oracle安装目录(所有节点执行)
    mkdir -p /u01/app/11.2.0/grid
    mkdir -p /u01/app/grid
    mkdir /u01/app/oracle
    chown -R grid:oinstall /u01
    chown oracle:oinstall /u01/app/oracle
    chmod -R 775 /u01/
    参照官方文档,采用GI与DB分开安装和权限的策略,对于多实例管理有利。

    8.配置环境变量(节点1)
    # 需要注意的是ORACLE_UNQNAME是数据库名,创建数据库时指定多个节点是会创建多个实例,ORACLE_SID指的是数据库实例名
    # 配置oracle账户环境变量
    [root@rac1 ~]# su - oracle
    [oracle@rac1 ~]$ vim .bash_profile
    export ORACLE_SID=orcl1
    export ORACLE_UNQNAME=oracledbrac
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db
    export TNS_ADMIN=$ORACLE_HOME/network/admin
    export PATH=/usr/sbin:$PATH
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

    [oracle@rac1 ~]$ source .bash_profile

    [oracle@rac1 ~]$ exit

    # 配置grid账户环境变量
    [root@rac1 ~]# su - grid
    [grid@rac1 ~]$ vim .bash_profile
    export ORACLE_SID=+ASM1
    export ORACLE_BASE=/u01/app/grid
    export ORACLE_HOME=/u01/app/11.2.0/grid
    export PATH=/usr/sbin:$PATH
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    umask 022

    [grid@rac1 ~]$ source .bash_profile

    9.配置环境变量(节点2)
    # 配置oracle账户环境变量
    [root@rac2 ~]# su - oracle
    [oracle@rac2 ~]$ vim .bash_profile
    export ORACLE_SID=orcl2
    export ORACLE_UNQNAME=oracledbrac
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db
    export TNS_ADMIN=$ORACLE_HOME/network/admin
    export PATH=/usr/sbin:$PATH
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

    [oracle@rac2 ~]$ source .bash_profile

    [oracle@rac2 ~]$ exit

    # 配置grid账户环境变量
    [root@rac2 ~]# su - grid
    [grid@rac2 ~]$ vim .bash_profile
    export ORACLE_SID=+ASM2
    export ORACLE_BASE=/u01/app/grid
    export ORACLE_HOME=/u01/app/11.2.0/grid
    export PATH=/usr/sbin:$PATH
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    umask 022

    [grid@rac2 ~]$ source .bash_profile

    10.配置oracle用户ssh互信(所有节点执行)
    # 这是很关键的一步,虽然官方文档中声称安装GI和RAC的时候OUI会自动配置SSH,但为了在安装之前使用CVU检查各项配置,还是手动配置互信更优。
    # 节点1执行
    [root@rac1 ~]# su - oracle
    [[oracle@rac1 ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    [oracle@rac1 ~]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    [oracle@rac1 ~]$ exit
    [root@rac1 ~]# su - grid
    [grid@rac1 ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    [grid@rac1 ~]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    [grid@rac1 ~]$ exit
    # 节点2执行
    [root@rac2 ~]# su - oracle
    [oracle@rac2 ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    [oracle@rac2 ~]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    [oracle@rac2 ~]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    [oracle@rac2 ~]$ exit
    [root@rac2 ~]# su - grid
    [grid@rac2 ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    [grid@rac2 ~]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    [grid@rac2 ~]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    [grid@rac2 ~]$ scp ~/.ssh/authorized_keys rac1:.ssh/authorized_keys
    [grid@rac2 ~]$ exit

    [root@rac2 ~]# su - oracle
    [oracle@rac2 ~]$ scp ~/.ssh/authorized_keys rac1:.ssh/authorized_keys
    # 再返回节点1上执行
    [oracle@rac1 ~]$ scp ~/.ssh/authorized_keys rac1:.ssh/authorized_keys
    [oracle@rac1 ~]$ scp ~/.ssh/authorized_keys rac2:.ssh/authorized_keys

    [oracle@rac1 ~]$ exit

    [root@rac1 ~]# su - grid
    [grid@rac1 ~]$ scp ~/.ssh/authorized_keys rac1:.ssh/authorized_key
    [grid@rac1 ~]$ scp ~/.ssh/authorized_keys rac2:.ssh/authorized_key

    执行以下命令测试(所有节点执行)
    [root@rac1 ~]# su - oracle     #第一次输入时有一个书需要手动一下
    [oracle@rac1 ~]$ ssh rac1 date && ssh rac2 date && ssh rac1-priv date && ssh rac2-priv date
    [oracle@rac1 ~]$ ssh rac1 date && ssh rac2 date && ssh rac1-priv date && ssh rac2-priv date
    [oracle@rac1 ~]$ exit
    [root@rac1 ~]# su - grid
    [grid@rac1 ~]$ ssh rac1 date && ssh rac2 date && ssh rac1-priv date && ssh rac2-priv date
    [grid@rac1 ~]$ ssh rac1 date && ssh rac2 date && ssh rac1-priv date && ssh rac2-priv date

    [root@rac2 ~]# su - oracle
    [oracle@rac2 ~]$ ssh rac1 date && ssh rac2 date && ssh rac1-priv date && ssh rac2-priv date
    [oracle@rac2 ~]$ ssh rac1 date && ssh rac2 date && ssh rac1-priv date && ssh rac2-priv date
    [oracle@rac2 ~]$ exit
    [root@rac2 ~]# su - grid
    [grid@rac2 ~]$ ssh rac1 date && ssh rac2 date && ssh rac1-priv date && ssh rac2-priv date
    [grid@rac2 ~]$ ssh rac1 date && ssh rac2 date && ssh rac1-priv date && ssh rac2-priv date

    11.安装依赖包(所有机器都执行)
    [root@rac1 ~]# yum -y install binutils-* compat-db* compat-db-* control-center* gcc-* gcc-c++-* glibc-* glibc-common-*
    make-* sysstat-* make-* glibc-* glibc-common-* glibc-devel-* glibc-devel-*
    compat-gcc-* compat-libstdc++-* libstdc++-* libstdc++-devel-*
    openmotif-* sysstat-* libaio-* libaio-devel-* libXp* libXp-devel* elfutils-libelf-devel* unixODBC-*
    unixODBC-devel-* compat-libcap1.x86_64 libcap.so.1 sg3_utils

    [root@rac2 ~]# yum -y install binutils-* compat-db* compat-db-* control-center* gcc-* gcc-c++-* glibc-* glibc-common-*
    make-* sysstat-* make-* glibc-* glibc-common-* glibc-devel-* glibc-devel-*
    compat-gcc-* compat-libstdc++-* libstdc++-* libstdc++-devel-*
    openmotif-* sysstat-* libaio-* libaio-devel-* libXp* libXp-devel* elfutils-libelf-devel* unixODBC-*
    unixODBC-devel-* compat-libcap1.x86_64 libcap.so.1 sg3_utils

    11.配置udev(所有节点执行)
    [root@rac1 ~]# echo "options=--whitelisted --replace-whitespace" >> /etc/scsi_id.config
    [root@rac1 ~]# for i in b c d e f g h; do echo "KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`",NAME="asm-disk$i", OWNER="grid", GROUP="asmadmin", MODE="0660""; done>>/etc/udev/rules.d/99-oracle-asmdevices.rules
    [root@rac1 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules


    [root@rac2 ~]# echo "options=--whitelisted --replace-whitespace" >> /etc/scsi_id.config
    [root@rac2 ~]# for i in b c d e f g h; do echo "KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="`/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`",NAME="asm-disk$i", OWNER="grid", GROUP="asmadmin", MODE="0660""; done>>/etc/udev/rules.d/99-oracle-asmdevices.rules
    [root@rac2 ~]# cat /etc/udev/rules.d/99-oracle-asmdevices.rules
    注:这里需要注意的是配置的前后都不能有空格,否则会报错。最后看到的raw盘权限必须是grid:asmadmin用户。


    启动并验证udev(所有节点都执行)
    [root@rac1 ~]# /sbin/start_udev
    [root@rac1 ~]# ll /dev/asm*

    第三部分:安装grid(所有节点执行

    [root@rac1 ~]# su - grid
    [grid@rac1 ~]$ unzip p13390677_112040_Linux-x86-64_3of7.zip -d grid/
    [grid@rac1 ~]$ exit
    [root@rac1 ~]# rpm -ivh /home/grid/pdksh-5.2.14-30.x86_64.rpm
    [root@rac1 ~]# rpm -ivh /home/grid/grid/grid/rpm/cvuqdisk-1.0.9-1.rpm       #该rpm包在数据库的包里自带
    [root@rac1 ~]# su - grid
    [grid@rac1 ~]$ cd grid/grid
    [grid@rac1 ~]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose -fixup

    (这一步要挨着检查,如有failed需足一解决,其中DNS方面会有个failed可忽略,因为该文档用的是hosts文件解析)
    语法说明:
    -pre: 该选项主要检查是否满足安装的需要。
    -post:该选择主要检查安装后组件是否正常。
    -n:该选项用于指定节点列表。
    -verbose:该选项用于输出详细的验证信息。
    -fixup:这是Oracle 11gR2中新增加的一个参数。利用这个参数,可以产生一个名为runfixup.sh的脚本。
    runfixup.sh脚本中包含一系列的操作系统命令,利用这个脚本可以对操作系统进行一定的修改,使其满足安装条件。
    完成系统进行校验之后,以root用户的身份执行脚本runfixup.sh,就可以解决操作系统中一些尚不满足安装条件的情况。
    [root@rac1 ~]# /tmp/CVU_11.2.0.4.0_grid/
    [root@rac1 ~]# ./runfixup.sh

    在其中有一个节点上以图形化窗口打开,开始安装grid(会启动复制到另外一个节点,要切换到图形化界面)  #这里如出问题,需多试几次
    [root@rac1 ~]# export DISPLAY=:0.0    #该句是重点
    [root@rac1 ~]# xhost +
    [root@rac1 ~]# su - grid
    [grid@rac1 ~]$ cd grid/grid/
    [grid@rac1 ~]$ ./runInstaller 

    #跳过软件更新

    选择第一项:安装和配置grid。

    选择第二项:高级安装。

    选择语言:默认英文已选择,本次加入了简体中文。

    取消配置的GNS选项,并依次填修改集群名称、scan-ip名称和端口号。
    注意:SCAN-Name 和 /etc/hosts 中的scan 名字相同

    默认显示的是安装所在的节点rac1所对应的/etc/hosts中公网IP与VIP对应配置的的名称,点击Add按钮,将另一个节点的公网IP对应的rac1与VIP对应的rac2-vip填写进去。

     

    添加完节点后,点击SSH Connectivity,远程链接各节点,输入grid用户的密码

    点击Setup按钮,测试通过后在点击Test按钮。都测试通过后点击Next进行下一步安装。  

    检查网卡设别名称与对应的网段是否正确,然后网卡类型选择对应的是私网还是公网。

    如果出现以下错误说明/etc/hosts中的各个ip对应配置错误,自检查排除即可。 

    第一选项,点下一步即可。  

    按需修改磁盘组名称(这里我保持了默认),磁盘冗余模式选择Normal,并选择change Discovery Path(更改磁盘路径),修改成配置的共享磁盘路径,使用前缀加*来显示所有共享磁盘。 

    注意:下图中的磁盘如果之前做过ASM,则哪块做过哪块磁盘的状态就为Member状态,即使格式化了,估计还有相应信息在磁盘里存着,此时需要删除磁盘组,并dd删除磁盘头的信息。当然最简洁的方法就是删除存储里的磁盘,新添加磁盘即可

    按需选择磁盘组的磁盘3块磁盘。
    注:该盘为Oracle Cluster Registry(OCR,集群注册),用于记录集群配置信息,也必须存放在共享磁盘上(最少100M),
    下图中Normal(正常冗余)是做OCR镜像,需要创建2个磁盘分区,External(外部冗余)创建一个磁盘分区,表示把集群配置信息另外保存,(下图选择2块磁盘会报错)

    输入grid的管理登录密码,密码必须8位起且够复杂,不然不能进行下一步(Flz_3qc123)

    选择第二选项,下一步。 

    下图默认即可

    确认安装目录是否和配置文件一致,一般不会错,但是需要检查下

    默认进行下一步

     

    等待检测 

    检测后根据提示进行处理,下图中的3项可忽略,在右上角的lgnore All前打上对好即忽略的意思,而后点击Next进行下一步

    下图点击yes

    下图点击install

    新开一个窗口,下图在两个节点上分别使用root用户执行下图中提示的脚本,执行的顺序一定不能乱,先在节点1上执行orainstROOT.sh,节点1上执行完后在节点2上执行orainstROOT.sh,orainstROOT.sh脚本在2个节点上执行完后,再在节点1上执行root.sh,执行完后再在节点2上执行root.sh,顺序一定不能乱

    脚本执行如下(中间需按一次回车)

    上图2个节点脚本执行没问题后点击下去中的OK进行下一步

     下图需等片刻

    提示以下错误,点击OKJ即可 ,至此grid安装完成。

    点击Next---Yes---Close

     

    安装完成后,登录grid用户验证grid相关服务状态和后台进程:
    完成后查看状态:  
    [grid@rac1 ~]$ crs_stat -t
    [grid@rac2 ~]$ crs_stat -t

      

    安装database
    同样只需要在一个节点上安装即可,会自动复制到另外节点。

    [root@rac1 ~]# su - oracle
    [oracle@rac1 ~]$ unzip p13390677_112040_Linux-x86-64_1of7.zip
    [oracle@rac1 ~]$ unzip p13390677_112040_Linux-x86-64_2of7.zip
    [oracle@rac1 ~]$ cd database/
    [oracle@rac1 database]$ ./runInstaller

    取消【我希望通过 My Oracle Support 接受安全更新】

    会询问是否要跳过更新的一个提示,点击yes即可

    如下图,跳过软件更新

    仅安装数据库软件 

    选择 Oracle Real Application Clusters 数据库安装,下边节点已经将两个节点都显示出来了,会自动复制到第二个节点,点击Next

    选择语言 (把简体中文选到右面框中,如下图所示)

    选择企业版

    安装路径,之前都已经配置好的,默认即可

    确认Oracle权限用户组,默认即可

    如下图所示,选中右上角的lgnore All,即表示忽略,然后点击Next进行下一步安装

    这里会有一个提示,点击Yes即可,如下图

    概要,可以保存响应文件,点击install即可

     如下所示,开始安装,会自动复制到节点2

    安装过程中会提示让使用root用户执行1个sh配置脚本
    按照下图提示在2个节点上执行脚本,须知:
    先在节点1上执行root.sh脚本,等待节点1上执行完毕后同样的执行方法在节点2上执行,顺序一定不能错

     

    执行完脚本后点击下图中的OK即可

    如下图所示,执行完脚本后点确定完成安装,点击Close

    创建集群数据库(在节点1上执行即可)
    [root@rac1 ~]# su - oracle
    [oracle@rac1 ~]$ dbca

    选择第一项,Oracle Real Application Clusters(RAC) database

    #创建一个数据库

    如下图所示,选择定制数据库

     全局数据库名和SID前缀都输入:orcl,选择双节点(点击Select All即可)

     

    如下图所示,Enterprise Manager和自动维护任务保持默认

    所有账户(SYS、SYSTEM、DBSNMP、SYSMAN)使用同一管理口令(aa7788**) 

    如下所示,存储类型:自动存储管理(ASM),使用 Oracle-Managed Files选择数据库区为之前创建的DATA(+DATA)

    指定 ASM 专用的ASMSNMP口令:asmadmin

    如下图所示,开启指定快速恢复区  并   开启归档

    如下图所示,数据库组件:默认

     

    如下图所示,字符集选择:使用 Unicode(AL32UTF8),其他选项默认

     

    如下图所示,数据库存储:默认

    如下图所示,勾选生成数据库创建脚本:/u01/app/oracle/admin/orcl/scripts,点击右下角 Finish 即可

     

    如下图所示,创建数据库 - 概要 另存为HTML文件:点击save as an HTML file

     

    如下图所示,点击save即可

    如下图所示,点击OK即开始安装

    如下图所示,接下来就是等.........

    约40分钟后脚本创建完毕,如下(点击ok)

    开始安装,如下

    约40分钟后安装好了,如下图(点击右上角x号关掉即可,下图中有个https的地址)

    如下图所示,点击https://rac1:1158/em那个页面的exit即可退出,下图中左面执行完select status from gv$instance; 显示都为open状态即为搭建完毕

    再次查看各节点上的IP,会发现IP多了几个,多的这几个IP就是监听IP、虚拟IP、和scanIP

    另外在grid用户下使用crs_stat -t命令查看时回来到有3个关于gsd的为OFFLINE状态,找到了在oracle11g中这3个gsd为OFFLINE状态的解释:

    因为手机浏览器不支持粘贴(必须用快捷键),明日贴解释

    恢复数据库
    创建表空间
    CREATE TEMPORARY TABLESPACE "PSSC_TEMP" TEMPFILE '+DATA/pssc/pssc_temp.dbf' SIZE 2147483648 AUTOEXTEND ON NEXT 52428800 MAXSIZE 20480M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1048576;
    CREATE TABLESPACE "TBS_PSSC_SM" DATAFILE '+DATA/pssc/DATA_PSSC_SM.DBF' SIZE 524288000 AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS  SEGMENT SPACE MANAGEMENT AUTO;

    创建用户
    create user admin identified by xiaoliu default tablespace TBS_PSSC_SM temporary tablespace PSSC_TEMP profile DEFAULT;
    grant dba to admin with admin option;
    grant unlimited tablespace to admin with admin option;

    恢复数据库
    imp admin/xiaoliu file=/home/oracle/pssc_sm64_20181016.dmp from user=user_pssc_sm64 touser=admin


    常用命令
    查看监听状态
    lsnrctl status

    设置DISPLAY变量
    export DISPLAY=10.0.1.2:0.0

    查看Oracle数据库位置
    select name from v$datafile;
    select file_name from dba_data_files;

    查看磁盘信息
    select group_number,path,state,total_mb,free_mb from v$asm_disk;

    查看磁盘IO信息
    asmcmd lsdsk --statistics -G DATA

    查看是否有数据库实例连接上ASM实例
    select instance_name,db_name,status from v$asm_client;

    ASM DISK信息(显示每个磁盘的大小和可用空间)
    select path, state, total_mb, free_mb from v$asm_disk;

    ASM DISKGROUP(显示磁盘组的大小和可用空间)
    select name,state,type,total_mb,free_mb from v$asm_diskgroup;

    ASM管理工具
    su - grid
    asmca
    asmcmd


    rlwrap工具可以解决sqlplus和rman退格键和上下键不能使用的问题
    rlwrap sqlplus / as sysdba
    rlwrap rman target=USER_PSSC_SM64_20181016/123456


    sqlplus乱码问题
    首先查看Oracle服务端的字符集
    select userenv('language') from dual;

    设置环境变量
    export NLS_LANG=CHINESE_CHINA.AL32UTF8
    附录:查看是否为归档模式
    查看是否为归档模式
    archive log list

    %sqlplus /nolog (启动sqlplus)
    SQL> conn / as sysdba (以DBA身份连接数据库)
    SQL> shutdown immediate; (立即关闭数据库)
    SQL> startup mount (启动实例并加载数据库,但不打开)
    SQL> alter database archivelog; (更改数据库为归档模式)
    SQL> alter database open; (打开数据库)
    SQL> alter system archive log start; (启用自动归档)
    SQL> exit (退出)

    安装Grid后的检查
    su - grid

    检查crs状态
    [grid@rac2 ~]$ crsctl check crs
    CRS-4638: Oracle High Availability Services is online
    CRS-4537: Cluster Ready Services is online
    CRS-4529: Cluster Synchronization Services is online
    CRS-4533: Event Manager is online

    检查Clusterware资源
    [grid@rac2 ~]$ crs_stat -t -v

    检查集群节点
    [grid@rac2 ~]$ olsnodes -n

    确认针对Oracle Clusterware文件的Oracle ASM功能:
    如果在 Oracle ASM 上暗转过了OCR和表决磁盘文件,则以Grid Infrastructure 安装所有者的身份,使用给下面的命令语法来确认当前正在运行已安装的Oracle ASM:
    [grid@rac1 ~]$ srvctl status asm -a

    RAC维护
    查看服务器状态
    su - grid
    [grid@rac2 ~]$ crs_stat -t -v

    查看群集运行状态
    [grid@rac2 ~]$ srvctl status database -d oracledbrac
    检查本地节点的CRS状态
    [grid@rac2 ~]$ crsctl check crs
    检查集群的CRS状态
    [grid@rac2 ~]$ crsctl check cluster
    查看集群件的表决磁盘信息
    [grid@rac2 ~]$ crsctl query css votedisk
    查看集群SCAN VIP信息
    [grid@rac2 ~]$ srvctl config scan

    格式化ASM 裸设备:
    [root@rac1 ~]# ll /dev/asm*
    dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=256
    dd if=/dev/zero of=/dev/raw/raw2 bs=1024 count=256
    dd if=/dev/zero of=/dev/raw/raw3 bs=1024 count=256
    dd if=/dev/zero of=/dev/raw/raw4 bs=1024 count=256
    dd if=/dev/zero of=/dev/raw/raw5 bs=1024 count=256

    oracle RAC RMAN自动备份脚本
    1.节点1脚本
    #!/bin/bash
    ORACLE_SID=orcl1
    ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
    ORACLE_BASE=/u01/app/oracle
    export ORACLE_SID=$ORACLE_SID
    export ORACLE_HOME=$ORACLE_HOME
    export ORACLE_BASE=$ORACLE_BASE
    backtime=`date +%Y%m%d`
    echo $backtime
    # ######################### oracle RAC RMAN自动备份脚本 #########################
    # 备份要求
    # 条件一:在node1每晚进行全量备份,同时删除过期备份和归档日志文件;
    # 条件二:为保证节点备份的可用性,备份时node1本地保存一份,ASM存储保存一份;
    # 条件三:本地node1点发生故障时,node2可以接管备份操作,在node2上生成全备和ASM中生成备份。
    #
    # by all
    # su - oracle
    # mkdir -p /home/oracle/log
    # mkdir -p /home/oracle/bak
    #
    # %c 备份片的拷贝数
    # %d 数据库名称
    # %D 位于该月中的第几天 (DD)
    # %M 位于该年中的第几月 (MM)
    # %F 一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列
    # %n 数据库名称,向右填补到最大八个字符
    # %u 一个八个字符的名称代表备份集与创建时间
    # %p 该备份集中的备份片号,从1开始到创建的文件数
    # %U 一个唯一的文件名,代表%u_%p_%c
    # %s 备份集的号
    # %t 备份集时间戳
    # %T 年月日格式(YYYYMMDD)

    $ORACLE_HOME/bin/rman log=/home/oracle/log/node1_backupall_$backtime.log <<EOF
    connect target /
    run{
    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

    # by all
    # su - oracle
    # mkdir -p /home/oracle/oracle_bak

    allocate channel c1 type disk FORMAT '/home/oracle/bak/node1_%d_%T_%u_%p', '+DATA/bak/node1_%d_%T_%u_%p';
    allocate channel c2 type disk FORMAT '/home/oracle/bak/node1_%d_%T_%u_%p', '+DATA/bak/node1_%d_%T_%u_%p';

    backup as compressed backupset database ;
    backup as compressed backupset archivelog all  delete input;

    # report obsolete命令用于列出rman资料库中能够被删除的全备份、数据文件拷贝和归档日志记录。
    # report obsolete;

    # 删除陈旧备份(noprompt=不提示)
    # delete noprompt  obsolete;

    # 核对所有备份集
    crosscheck backup;

    # 核对归档日志
    crosscheck archivelog all;

    # 删除EXPIRED备份集(noprompt=不提示)
    # delete noprompt expired backup;

    # 释放通道
    release channel c1;
    release channel c2;
    }
    EOF
    echo "backup complete!"
    scp /home/oracle/log/node1_backupall_$backtime.log oracle@rac2:/home/oracle/log/
    exit
    2.节点2脚本
    #!/bin/bash
    ORACLE_SID=orcl2
    ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
    ORACLE_BASE=/u01/app/oracle
    export ORACLE_SID=$ORACLE_SID
    export ORACLE_HOME=$ORACLE_HOME
    export ORACLE_BASE=$ORACLE_BASE
    backtime=`date +%Y%m%d`
    echo $backtime
    if [ -f /oracle/rmanbak/log/node1_backupall_$backtime.log ]
    then
    echo "node1 backup have been success!"
    exit
    else
    echo "node1 backup have been filed,start node2 backup!"
    $ORACLE_HOME/bin/rman log=/oracle/rmanbak/log/node2_backupall_$backtime.log <<EOF
    connect target /
    run{
    CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
    CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
    allocate channel c1 type disk FORMAT '/oracle/rmanbak/ORCL/node2_%d_%T_%u_%p','+FRA/ORCL/BACKUPSET/node1_%d_%T_%u_%p' ;
    allocate channel c2 type disk FORMAT '/oracle/rmanbak/ORCL/node2_%d_%T_%u_%p','+FRA/ORCL/BACKUPSET/node2_%d_%T_%u_%p';
    backup database ;
    backup archivelog all  delete input;
    report obsolete;
    delete noprompt  obsolete;
    crosscheck backup;
    crosscheck archivelog all;
    delete noprompt expired backup;
    release channel c1;
    release channel c2;
    }
    EOF
    echo "node2 backup complete!"
    fi
    #scp /oracle/rmanbak/log/node1_backupall_$backtime.log oracle@OracleNode2:/oracle/rmanbak/log/
    exit

        欢迎加入QQ群一起讨论Linux、开源等技术

     

    参考地址1     参考地址2

  • 相关阅读:
    CCDictionary 用调试器查看问题
    博客 小记
    cocos2d-x 调试问题
    string知识
    静动态库
    fedora 20安装vim Transaction check error
    PyQt中ui编译成窗体.py,中文乱码
    centos编译安装vim7.4
    linux c驴杂记
    c++指针 c指针 改变值
  • 原文地址:https://www.cnblogs.com/smlile-you-me/p/13377858.html
Copyright © 2011-2022 走看看