zoukankan      html  css  js  c++  java
  • RHEL5下 使用ASM创建Oracle数据库(自己的笔记)


    一、安装配置先决条件

    1,安装oracleasm支持包
    http://www.oracle.com/technology/software/tech/linux/asmlib/rhel5.html

    http://www.oracle.com/technology/tech/linux/asmlib/index.html

    驱动下载地址:http://www.oracle.com/technology/software/tech/linux/asmlib /rhel5.html
    创建asm数据库,首先需要ASMLib驱动程序包,可以从相关的网站下载到和操作系统对应的rpm文件,分别为oracleasm-support- 2.0.3-1、oracleasm-2.6.18-8.el5- 2.0.4-1.el5、oracleasmlib-2.0.3-1.el5。

    # rpm -Uvh oracleasm*.rpm

    # rpm -qa|grep oracleasm
    oracleasm-support-2.0.3-1
    oracleasm-2.6.18-8.el5-2.0.4-1.el5
    oracleasmlib-2.0.3-1.el5

    [root@RHEL5 Desktop]# rpm -Uhv oracleasmlib-2.0.4-1.el5.i386.rpm
    error: Failed dependencies:
    oracleasm >= 1.0.4 is needed by oracleasmlib-2.0.4-1.el5.i386
    [root@RHEL5 Desktop]#

    My kernel version is:
    [root@RHEL5 Desktop]# uname -rn
    RHEL5.3      2.6.18-164.el5

    2,安装RHEL5 的ASM Lib 时出现 oracleasm >= 1.0.4 错误的解决办法

    1. 先安装 oracleasm-support-2.1.3-1.el5.i386.rpm
    2. 再直接运行 [root@RHEL5 ~]# oracleasm update-driver
    系统自动查找驱动程序,运行过程显示如下:

    [root@Rm-DevDB ~]# oracleasm update-driver
    Kernel:         2.6.18-194.3.1.el5 x86_64
    Driver name:    oracleasm-2.6.18-194.3.1.el5
    Latest version: oracleasm-2.6.18-194.3.1.el5-2.0.5-1.el5.x86_64.rpm
    Installing driver...
    warning: /tmp/oracleasm.M21786/oracleasm-2.6.18-194.3.1.el5-2.0.5-1.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
    Preparing...                ########################################### [100%]
    1:oracleasm-2.6.18-194.3.########################################### [100%]
    Driver installed successfully

    [root@Rm-DevDB dhj]# rpm -qa|grep oracleasm
    oracleasm-support-2.1.3-1.el5
    oracleasm-2.6.18-194.3.1.el5-2.0.5-1.el5
    [root@Rm-DevDB dhj]#
    [root@Rm-DevDB dhj]# rpm -Uvh oracleasmlib-2.0.4-1.el5.x86_64.rpm     
    warning: oracleasmlib-2.0.4-1.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
    Preparing...                ########################################### [100%]
    1:oracleasmlib           ########################################### [100%]

    3,添加硬盘

    添加一块磁盘并格式化。如果sdb比较大,分区的时候可以留一些空间,分一部分空间给sdb1。

    # fdisk /dev/sdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel. Changes will remain in memory only,
    until you decide to write them. After that, of course, the previous
    content won't be recoverable.

    The number of cylinders for this disk is set to 1044.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
    (e.g., DOS FDISK, OS/2 FDISK)
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

    Command (m for help): n
    Command action
    e   extended
    p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-1044, default 1):
    Using default value 1
    Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044):
    Using default value 1044

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

    # fdisk -l

    Disk /dev/sda: 17.1 GB, 17179869184 bytes
    255 heads, 63 sectors/track, 2088 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id System
    /dev/sda1   *           1          13      104391   83 Linux
    /dev/sda2              14        2088    16667437+ 8e Linux LVM

    Disk /dev/sdb: 8589 MB, 8589934592 bytes
    255 heads, 63 sectors/track, 1044 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id System
    /dev/sdb1               1        1044     8385898+ 83 Linux

    4.配置rawdevices

    因为rh5中取消了rawdevices服务,要使用裸设备创建asm,需要做以下配置。

    # vi /etc/udev/rules.d/60-raw.rules

    添加以下部分的内容

    ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
    ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"

    # start_udev
    Starting udev: [ OK ]


    5,.配置oracleasm

    以root用户登陆,执行
    # /etc/init.d/oracleasm configure
    Configuring the Oracle ASM library driver.

    This will configure the on-boot properties of the Oracle ASM library
    driver. The following questions will determine whether the driver is
    loaded on boot and what permissions it will have. The current values
    will be shown in brackets ('[]'). Hitting <ENTER> without typing an
    answer will keep that current value. Ctrl-C will abort.

    Default user to own the driver interface [oracle]:
    Default group to own the driver interface [dba]:
    Start Oracle ASM library driver on boot (y/n) [y]:
    Fix permissions of Oracle ASM disks on boot (y/n) [y]:
    Writing Oracle ASM library driver configuration: [ OK ]
    Loading module "oracleasm": [ OK ]
    Mounting ASMlib driver filesystem: [ OK ]
    Scanning system for ASM disks:
    [ OK ]

    以上操作将加载oracleasm.o驱动,并且mount上ASM文件系统,同时我们可以通过以下命令来手工的卸载和加载ASMLib

    #/etc/init.d/oracleasm disable //出错检查/var/log/messages文件,确认需要更新的内核版本

    #/etc/init.d/oracleasm enable

    6,添加init文件使系统启动时自动加载ASMLib

    $su -

    #cd /etc/rc3.d

    #ln -s ../init.d/oracleasm S99oracleasm

    #ln -s ../init.d/oracleasm K01oracleasm

    注意:如果系统启动是自动进入图形界面,也就是系统的init level是5,那么上面生成链接的命令应该在/etc/rc5.d目录中操作

    重新启动系统,确认ASMLib已经可以自动加载

    #lsmod |grep oracleasm

    #dmesg |grep oracleasm

    7,创建ASM磁盘(说明:createdisk 是针对分区,不是针对磁盘,即:先应将磁盘分区)

    #/etc/init.d/oracleasm createdisk VOL1 /dev/sdb1

    #/etc/init.d/oracleasm createdisk VOL2 /dev/sdc1

    ...

    ...

    #/etc/init.d/oracleasm listdisks //列出ASM磁盘

    VOL1

    VOL2

    VOL3

    VOL4

    如果要删除ASM磁盘通过以下命令

    #/etc/init.d/oracleasm deletedisk VOL4

    注意:

    如果是在RAC环境中的某一个节点中添加了ASM磁盘,那么需要在其他的节点上运行scandisk来获取这种变化

    #/etc/init.d/oracleasm scandisks

    OK,现在已经完成了创建ASM实例的物理基础,下面开始安装数据库

    # /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
    Marking disk "/dev/sdb1" as an ASM disk: [ OK ]
    #
    # /etc/init.d/oracleasm listdisks
    VOL1
    # /etc/init.d/oracleasm scandisks
    Scanning system for ASM disks:
    [ OK ]

    如果ASM已经被配置了

    View the contents of the oratab file to determine whether an ASM instance i
    configured on the system:
    # more /etc/oratab
    If an ASM instance is configured on the system, then the oratab file should
    contain a line similar to the following:
    +ASM:oracle_home_path:N
    In this example, +ASM is the system identifier (SID) of the ASM instance and
    oracle_home_path is the Oracle home directory where it is installed. By
    convention, the SID for an ASM instance begins with a plus sign.


    二、使用DBCA创建ASM数据库过程

    1,利用dbca建库时,需要运行脚本,注意是root用户,但环境变量是oracle

    [root@dbsvr bin]# localconfig add
    /etc/oracle does not exist. Creating it now.
    Successfully accumulated necessary OCR keys.
    Creating OCR keys for user 'root', privgrp 'root'..
    Operation successful.
    Configuration for local CSS has been initialized

    Adding to inittab
    Startup will be queued to init within 90 seconds.
    Checking the status of new Oracle init process...
    Expecting the CRS daemons to be up within 600 seconds.
    CSS is active on these nodes.
    dbsvr
    CSS is active on all nodes.
    Oracle CSS service is installed and running under init(1M)

    建库时报ora-12547错误,需要安装如下包:

    [root@dbsvr tmp]# rpm -qa|grep libaio
    libaio-0.3.105-2
    libaio-0.3.105-2
    libaio-devel-0.3.105-2

    2,安装Oracle

    接下来,创建ASM数据库的工作就非常的简单了。执行dbca实用程序,在第六步“storage options”部分选择“Automatic Storage Management ”,在接下来的“ASM Disk Groups”步骤中,选择之前创建的“DGROUP1”,再按照普通建库的方式完成数据库的创建就OK了。

    在DBCA创建磁盘组过程中,找不到ASM硬盘解决方法:

    磁盘组名称

    输入磁盘组名称,如 DATA1。

    冗余

    - High 镜像数据两次。

    - Normal 镜像数据一次。

    - External 不镜像 ASM 中的数据。如果外部 RAID 阵列提供冗余,则通常使用此选项。

    选择成员磁盘

    必须手动指示 ASM 到什么地方查找 ASMLib 磁盘,因此,单击 Change Disk Discovery Path
    -
    弹出一个窗口,提示输入磁盘发现路径。如下所示将磁盘发现路径更改为“ORCL:*”。如果还找不到使用绝对路径 '/dev/oracleasm/disks/*'
    - 单击 OK 继续。

    • 您将返回到 Select Member Disks 窗口。您的所有 ASMLib 磁盘现在应显示在此窗口中。
      单击该行开头的框,选择加入磁盘组的磁盘。完成后单击 OK


    您将返回到 Select Member Disks 窗口。您的所有 ASMLib 磁盘现在应显示在此窗口中。

    单击该行开头的框,选择加入磁盘组的磁盘。完成后单击 OK。

    这个时候如果还发现不了 硬盘,可以使用RAW

    Add Disks: Enter /dev/raw as the disk recovery path. You can also clisk
    Disk Recovery Path and enter the required disk recovery path in the dialog
    box and clisk OK.



    3,,ora-15031 DBCA找不到ASM磁盘组解决方法:

    使用DBCA创建数据库,使用ASM存储。ASM实例已经创建,但是在创建磁盘组窗口,无法找到已经创建的ASM磁盘组。ORACLEASM显示正常。
    [yangwenchao@yangwenchao ~]$ /etc/init.d/oracleasm status
    Checking if ASM is loaded: [ OK ]
    Checking if /dev/oracleasm is mounted: [ OK ]
    [yangwenchao@yangwenchao ~]$ /etc/init.d/oracleasm listdisks
    VOL1
    VOL2
    VOL3
    VOL4
    VOL5
    [yangwenchao@yangwenchao ~]$ /etc/init.d/oracleasm scandisks
    Scanning system for ASM disks:

    请问怎样才能添加上ASM磁盘组?

    #/etc/init.d/oracleasm createdisk VOL1 /dev/sdb
    #/etc/init.d/oracleasm createdisk VOL2 /dev/sdc
    #/etc/init.d/oracleasm createdisk VOL3 /dev/sdd
    #/etc/init.d/oracleasm createdisk VOL4 /dev/sde
    #/etc/init.d/oracleasm createdisk VOL5 /dev/sdf

    解决方法一

    [root@racdb1 ~]# /etc/init.d/oracleasm scandisks
    Scanning system for ASM disks: [ OK ]
    [root@racdb1 disks]# /etc/init.d/oracleasm status
    Checking if ASM is loaded: [ OK ]
    Checking if /dev/oracleasm is mounted: [ OK ]
    注意mount在 /dev/oracleasm

    创建的时候路径要用全部路径(绝对路径)同时要要看
    *.asm_diskgroups='ORACLE','dgtest' -----这个地方要经常更改
    *.asm_diskstring='/dev/oracleasm/disks/VOL*' -----特别要注意这个地方
    *.background_dump_dest='/u01/app/oracle/admin/+ASM/bdump'
    *.core_dump_dest='/u01/app/oracle/admin/+ASM/cdump'
    *.instance_type='asm'
    *.large_pool_size=12M
    *.remote_login_passwordfile='SHARED'
    *.user_dump_dest='/u01/app/oracle/admin/+ASM/udump'

    SQL> create diskgroup dgtest1 normal redundancy
    2 failgroup dgtest_0001 disk '/dev/oracleasm/disks/VOL4' name dgtest_0003
    3 failgroup dgtest_0002 disk '/dev/oracleasm/disks/VOL5' name dgtest_0004;

    Diskgroup created.



    解决方法二

    修改$ORACLE_HOME/dbs/init+ASM.ora文件
    添加一行:asm_diskstring='ORCL:VOL*'

    启动实例
    报错,ORA-29701: unable to connect to Cluster Manager
    查google,查不到
    再查metalink,原来是因为安装完10g以后,就直接把/etc/inittab中的
    h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1   这句注释了
    原来这就是10g内置的cluster manager

    取消注释
    重新启动系统
    再次启动实例,OK

    三、手工创建ASM实例

    1.创建初始化文件

    $ su – oracle
    $ cd $ORACLE_HOME/dbs
    $ vi init+ASM.ora

    *.asm_diskstring='ORCL:VOL*'
    *.background_dump_dest='/oracle/admin/+ASM/bdump'
    *.core_dump_dest='/oracle/admin/+ASM/cdump'
    *.instance_type='asm'
    *.large_pool_size=12M
    *.remote_login_passwordfile='SHARED'
    *.user_dump_dest='/oracle/admin/+ASM/udump'

    如果找不到磁盘还 改成绝对路径


    #+ASM.asm_diskgroups='ASMDISK'#Manual Mount
    #*.asm_diskstring='ORCL:VOL*'
    #*.asm_diskgroups='ASMDISK'
    *. asm_diskstring='/dev/oracleasm/disks/*'
    *.background_dump_dest='/opt/app/oracle/admin/+ASM/bdump'
    *.core_dump_dest='/opt/app/oracle/admin/+ASM/cdump'
    *.instance_type='asm'
    *.large_pool_size=12M
    *.remote_login_passwordfile='SHARED'

    2.创建密码文件

    $ su – oracle
    $ cd $ORACLE_HOME/dbs
    $ orapwd file=orapw+ASM password=dba

    3. 创建目录结构
    $ su – oracle
    $ cd $ORACLE_HOME/dbs
    $ mkdir –p $ORALCE_BASE/admin/+ASM/udump
    $ mkdir –p $ORALCE_BASE/admin/+ASM/bdump
    $ mkdir –p $ORALCE_BASE/admin/+ASM/cdump

    4. 启动实例
    $ export ORACLE_SID=+ASM
    $ sqlplus / as sysdba
    SQL> startup
    ASM instance started

    Total System Global Area   100663296 bytes
    Fixed Size                   777616 bytes
    Variable Size              99885680 bytes
    Database Buffers                  0 bytes
    Redo Buffers                      0 bytes
    ORA-15110: no diskgroups mounted

    因为我们是首次启动asm实例,还没有创建diskgroup,所以显示15110错误是正常的。

    如果启动实例的时候碰到如下报错:
    ORA-29701: unable to connect to Cluster Manager
    那么请检查/etc/inittab 文件,看看是否有下面这行
    h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 </dev/null
    如果没有请添加,如果被注释了请取消注释。

    5. 创建 spfile,重新启动
    SQL> create spfile from pfile;
    SQL> shutdown immediate;
    SQL> startup;

    6. 创建 diskgroup
    SQL> create diskgroup dgroup1 external redundancy
    2 failgroup fgroup1 disk 'ORCL:VOL1';

    Diskgroup created.

    SQL> col name for a10
    SQL> select name,state from v$asm_diskgroup;

    NAME       STATE
    ---------- ----------------------
    DGROUP1    MOUNTED

    如果上述命令返回的 state是 DISMOUNTED,那么我们需要手工将挂载 diskgroup
    SQL> ALTER DISKGROUP dgroup1 MOUNT;

    Diskgroup altered.

    SQL> show parameter asm_diskgroups

    NAME                                 TYPE       VALUE
    ------------------------------------ ---------- ------------------------------
    asm_diskgroups                       string     DGROUP1


    四、ASM database简单管理

    开机启动:

    [oracle@asm dbs]$ lsnrctl start

    [oracle@asm dbs]$ export ORACLE_SID=+ASM

    [oracle@asm dbs]$ echo $ORACLE_SID

    +ASM

    [oracle@asm dbs]$ sqlplus / as sysdba

    SQL>startup

    [oracle@asm dbs]$ export ORACLE_SID=eagle

    [oracle@asm dbs]$ echo $ORACLE_SID

    eagle

    SQL>startup

    关机停止:

    [oracle@asm dbs]$ export ORACLE_SID=+ASM

    [oracle@asm dbs]$ echo $ORACLE_SID

    +ASM

    [oracle@asm dbs]$ sqlplus / as sysdba

    SQL>shutdown immediate

    [oracle@asm dbs]$ export ORACLE_SID=eagle

    [oracle@asm dbs]$ echo $ORACLE_SID

    eagle

    SQL>shutdown immediate

    附录:
    1,安装好ASM后,启动ASM数据的过程
    启动ASM 数据库的步骤
    由于启动ASM 数据库必须要先启动ASM 实例,所以基本上启动步骤如下。
    1. 以oracle 用户进入操作系统
    2. $ export ORACLE_SID=+ASM //ORACLE_SID一定要大写。
    3. SQL> sqlplus / as sysdba
    4. SQL> startup
    5. SQL> exit
    6. $ export ORACLE_SID=<your_real_db_sid>
    7. SQL> sqlplus / as sysdba
    8. SQL> startup
    需要重新启动2遍

    2,远程连接ASM数据配置listener.ora的情况

    listener.ora 这个文件的配置
    服务器端的配置
    [oracle@rs2600-2 admin]$ vi listener.ora

    # listener.ora Network Configuration File: /opt/app/oracle/product/10.2.0/server/network/admin/listener.ora
    # Generated by Oracle configuration tools.

    LSNRASM =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rs2600-2)(PORT = 1521))
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    )

    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (GLOBAL_DBNAME = +ASM)
    (ORACLE_HOME = /opt/app/oracle/product/10.2.0/server)
    (SID_NAME = +ASM)
    )
    (SID_DESC =
    (GLOBAL_DBNAME = danghj)
    (ORACLE_HOME = /opt/app/oracle/product/10.2.0/server)
    (SID_NAME = danghj)
    )
    (SID_DESC =
    (SID_NAME = PLSExtProc)
    (ORACLE_HOME = /opt/app/oracle/product/10.2.0/server)
    (PROGRAM = extproc)
    )
    )

    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rs2600-2)(PORT = 1521))
    )
    )

    客户端的配置
    ASM_172.22.11.124 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.22.11.124)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = danghj)
    )
    )

    3,Oracle 中删除 ASM 实例

      删除自动存储管理实例+ASM实例+ASM的删除是在数据库被卸载之后完成的,并删除/ORACLE_HOME/dbs目录下的所有文件(除了 与ASM相关的)。因此必须完成下列步骤:

      4.1在命令提示符中,设置oracle_sid环境变量为+ASM实例:

      # export oracle_sid=+ASM

      4.2启动SQL*Plus并以sys用户连接到自动存储管理+ASM实例:

      # sqlplus / as sysdba

      4.3使用下列命令来确定是否有数据库实例正在使用自动存储管理实例+ASM:

      SQL>select instance_name from v$asm_client;

      该命令结果列出所有正在运行并使用+ASM实例的数据库实例。只要+ASM包含正在支持的数据库实例,就不能删除该+ASM实例。(其实可以先 shutdown对应的数据库实例,然后从asmcmd进入磁盘组所在目录,删掉对应的数据库目录和文件就可以了)。

      4.4 如果没有与+ASM相关联的数据库实例,则删除与该实例相关联的磁盘组。

      首先,识别与+ASM相关联的磁盘组:

      SQL>select name from v$asm_diskgroup;

      其次,用下列命令删除每个要删除的磁盘组:

      SQL>drop diskgroup<disk_group_name>including contents;

      4.5 关闭+ASM实例并退出SQL*Plus:

      SQL>shutdown

      SQL>exit

      4.6 在命令提示符中输入下列命令,删除+ASM服务(我没找到这个命令,所以没有运行):

      oradim -delete -asmsid +ASM

    4,到ASM磁盘输入sys密码连接不上,显示网络问题

    需要启动istener就可以了

  • 相关阅读:
    sublime主题推荐
    安装JDK设置环境变量
    寻找灵感
    算法刷题3 PAT 1003 我要通过! (20 point(s))
    Java JDBC连接Mysql学习整理
    算法Day2-恶搞算法(网传88万代码生成)java实现
    算法刷题1:自测-1 打印沙漏 (20 point(s))
    Java I/O stream输入输出初整理
    Java this关键字初理解
    MD5加密算法
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400252.html
Copyright © 2011-2022 走看看