首 页 关于我们 新闻中心 网建建设 主机域名 推广优化 解决方案 微信营销 软件开发 成功案例 技术分享 联系我们
您当前位置:太原网站制作 >> 技术分享 >> 浏览文章
  技术分享

八、创建asm磁盘



  发布时间:2018-10-15 18:31:36 浏览次数:次 来源:太原网站制作 作者:太原服务器虚拟化 字体:

 

导读:

系统启动的时候会锁定磁盘,所以当启动linux1后共享磁盘被锁定了,linux2就起不来了,因此需要加入disk.locking="false"  ASM磁盘名称及空间大小操作系统上的磁盘对应ASM的disk大小描述/dev/sdb1CRS2GASM磁盘组,用于CRS...


 

系统启动的时候会锁定磁盘,所以当启动linux1后共享磁盘被锁定了linux2就起不来了,因此需要加入disk.locking = "false" 

 

ASM磁盘名称及空间大小

操作系统上的磁盘

对应ASMdisk

大小

描述

/dev/sdb1

CRS

2G

ASM磁盘组,用于CRS

/dev/sdb2

DATA

10G

ASM磁盘组,用于DB

/dev/sdb3

FRA

2G

ASM磁盘组,闪回恢复区

 

安装Grid时,其中ASM选项中只选择CRS为一个磁盘组,另外的DATAFRA不勾选

 

 

 

ASM的磁盘创建过程的全面总结

 

1)、名词解释

1ASM

Grid集群基础软件配置存储(使用ASM) Oracle所允许的存储主要有ASM、NFS和ACFS等

ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成, 也可以通过sqlplus 工具来维护。 ASM 实例的管理除了sqlplus, Oracle 还提供了asmcmd 命令ASM软件-Grid Infrastructure 

ASM 实例的创建和删除也可以用DBCA 这个命令来操作。在dbca 的第一个界面选择配置自动存储管理就可以了。 ASM 实例需要CSS 进程, 如果是非RAC 环境, 在启动ASM 实例之前会提示用脚本

$ORACLE_HOME/bin/localconfig add 启动CSS

ASM 实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。

ASM 可以使用裸设备 或者ASMLib 方式, 因为裸设的维护比较复杂,在此只讲解ASMLib 方式。

2ASM 不是一个通用的文件系统

ASM 不是一个通用的文件系统,并只能用于 Oracle 数据文件、重做日志以及控制文件。ASM 中的文件既可以由数据库自动创建和命名(通过使用 Oracle 管理文件特性),也可以由 DBA 手动创建和命名。由于操作系统无法访问 ASM 中存储的文件,因此对使用 ASM 文件的数据库执行备份和恢复操作的唯一途径就是通过恢复管理器 (RMAN)。

3ASM 作为单独的 Oracle 实例实施

ASM 作为单独的 Oracle 实例实施,只有它在运行时其他数据库才能访问它。在 Linux 上,只有运行 OCSSD 服务(由 Oracle 通用安装程序默认安装)才能使用 ASMASM 需要的内存不多:对大多数系统,只需 64 MB。

4ASM提供了3种冗余方法

external redundancy     表示Oracle不帮你管理镜像,功能由外部存储系统实现,比如通过RAID技术。

normal redundancy       (默认方式)表示Oracle提供2路镜像来保护数据。

high redundancy           表示Oracle提供3路镜像来保护数据。

 

oracle 通过failure group 来提供高可用性。

ASM的镜像算法是extent级别,而不是整个磁盘级别。这里面有个primary copy 和second copy的概念;写入的时候依据primary copy,最终实现写入随机有序读取,来完成平衡数据读取的目的。

5ASM实例只需要初始参数文件,不需要其它物理文件

[oracle@kk dbs]$ cat  /opt/oracle/product/10.2.0/db_1/dbs/spfile+ASM.ora  <==初始化参数文件的位置

6ASM的实例的名称是+ASMINSTANCE_TYPE=ASM

SQL> select instance_name from v$instance;

ASM实例的控制文件

SQL> SHOW parameter control

7、此次实验是基于CentOS7系统的实验。

这里用到的是asmlib来做磁盘设备管理的,这里大家也可以使用UDEV来管理,在RHEL6中asmlib 已经被废弃了,以后就是UDEV的天下????????????????

 

2)Oracleasm下载及安装顺序

1、下载

下载地址:http://www.oracle.com/technetwork/topics/linux/asmlib/index-101839.html 

对应不同的操作系统, 需要不同的包,下载的时候一定要和操作系统内核一致。每个 Linux 发行套件都有其自己的 ASMLib 程序包集。在每个发行套件中,每个内核版本都有一个相应的 oracleasm 程序包。

会根据当前的kernel和OS的版本下载三个包

但是自Red Hat 6.x系列之后,Oracle宣布不会再提供高版本的ASM驱动程序包。针对使用Oracle Linux的用户,只有通过购买官方订阅的方式,才能获得ASM驱动支持。

针对这种商业竞争关系,Red Hat也提出了一定的应对策略。Red Hat推荐使用DM-Multipath这种系统级别支持ASM Diskgroup创建,如果用户一定要使用ASM,官方可以使用kmod工具驱动包,来进行安装工作

当然,和Oracle一样,kmod只允许购买Red Hat官方订阅的用户才能下载。

本篇介绍kmod模式下如何创建ASM Disk和一些配置步骤

Library and Tools:

1、oracleasmlib-2.0.12-1.el7.x86_64.rpm ------------ASM库

2、oracleasm-support-2.1.8-3.el7.x86_64.rpm --------用于管理 ASMLib 的实用程序

别外一个需要寻找:

[root@racnode1 ~]# yum search oracleasm -----------ASM库的内核模块

2、安装

使用root用户安装,这三个包之间有依赖关系,安装顺序如下:两台机子上均要安装

# rpm -ivh oracleasm-support-2.1.8-3.el7.x86_64.rpm

# yum install kmod-oracleasm.x86_64

# rpm -ivh oracleasmlib-2.0.12-1.el7.x86_64.rpm

3)配置ASM的库文件

使用ASMlib之前,必须运行配置脚本准备驱动程序root用户使用以下命令配置ASM

#/etc/init.d/oracleasm configure

注意:直接使用oracleasm configure是不能配置ASM的

详细说明看官网:

https://oracle-base.com/articles/11g/oracle-db-11gr2-rac-installation-on-ol5-using-vmware-server-2#introduction

1、运行配置脚本,准备ASMLib驱动程序

配置asm启动方式和所属用户,这里假设oracledba组已经建立

 

[root@orahost01 home]#/etc/init.d/oracleasm configure 

------这个在两个节点上都要做,否则会报:ASMLib installation and configuration verification 错误。检测报错:Asmlib installation and configuration verification 答:oracleasm configure –i

重新配置ORACLEASM_UID,ORACLEASM_GID grid.asmadmin 所有节点都要配置。
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 []: grid <<< 在这里,指定asm磁盘的owner
Default group to own the driver interface []: asmadmin <<< 在这里,指定磁盘的group
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: [  OK  ]
Creating /dev/oracleasm mount point: [  OK  ]
Loading module "oracleasm": [  OK  ]
Mounting ASMlib driver filesystem: [  OK  ]
Scanning system for ASM disks: [  OK  ]

以上操作会加载和ASM相关的一些驱动.并且mount上asm的文件系统。注意:之所以指出来上面的asm 磁盘的owner 和 group, 是因为从11gR2 开始oracle引入了任务角色分离(job role separation)特性。这里面指定的值和之后安装GI时的步骤“Privileged Operation System Groups”中指定的值是对应的。所以,确认您的选择是正确的。

 

2启用ASMLib驱动程序

状态[root@orahost01 home]#/etc/init.d/oracleasm status

 

[root@orahost01 home]#/etc/init.d/oracleasm disable
Writing Oracle ASM library driver configuration: [  OK  ]
Unmounting ASMlib driver filesystem: [  OK  ]
Unloading module "oracleasm": [  OK  ]
[root@orahost01 home]#/etc/init.d/oracleasm enable ----启用 ASMLib 驱动程序

改为了: systemctl enable oracleasm.service
Writing Oracle ASM library driver configuration: [  OK  ]
Loading module "oracleasm": [  OK  ]
Mounting ASMlib driver filesystem: [  OK  ]
Scanning system for ASM disks: [  OK  ]

3创建ASM磁盘

[root@orahost01 home]# /etc/init.d/oracleasm createdisk vol1 /dev/sdb
Marking disk "/dev/sdb" as an ASM disk: asmtool: Device "/dev/sdb" is not a partition
[FAILED]
这里出现错误的原因是由于我们还没有对/dev/sdb这个设备文件所加载的磁盘进行分区,而且sdb也不是一个partition因此我们先对sdb磁盘进行分区
[root@orahost01 dev]#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.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

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

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

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

这个时候系统中会出现一个sdb1这个设备文件

之后我们继续对sdc,sdd,sde以上面同样的方法来进行分区。
------------------------------------------------------
重新创建ASM磁盘(/usr/sbin/oracleasm 也对)
[root@orahost01 dev]# /etc/init.d/oracleasm createdisk vol1 /dev/sdb1
Marking disk "/dev/sdb1" as an ASM disk: [  OK  ]
[root@orahost01 dev]# /etc/init.d/oracleasm listdisks
vol1
[root@orahost01 dev]# /etc/init.d/oracleasm createdisk vol2 /dev/sdc1
Marking disk "/dev/sdc1" as an ASM disk: [  OK  ]
[root@orahost01 dev]# /etc/init.d/oracleasm createdisk vol3 /dev/sde1
Marking disk "/dev/sde1" as an ASM disk: [  OK  ]
[root@orahost01 dev]# /etc/init.d/oracleasm createdisk vol4 /dev/sdd1
Marking disk "/dev/sdd1" as an ASM disk: [  OK  ]

[root@rac2 ~]# oracleasm listdisks
DATA
FLA
OCR
VOTE

4、查看已标记为ASMLib的硬盘

[root@orahost01 dev]#/etc/init.d/oracleasm listdisks

vol1

vol2

vol3

vol4

需要注意的是如果是在RAC环境中呢,如果在一个节点添加了ASM磁盘,在其他节点上要用过scandisks命令来获得这种变化。---而且有可能需要重启电脑后,再scandisks后才能看到。

如:

[root@orahost01 dev]#/etc/init.d/oracleasm scandisks

Scanning system for ASM disks: [  OK  ]

就此ASM环境的物理基础就已经搭建成功.

其他OS类似于此,很简单,只要按照这个思路走就可以了:)

5、创建diskgroup

后面安装时可以再创建

冗余

- High 镜像数据两次。

- Normal 镜像数据一次。

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

 

SQL> select name,path,group_number from v$asm_disk;   <==查询asm_disk的名称和路径,一会创建时要用

 

NAME                          PATH               GROUP_NUMBER

----------------------------------  ----------------------------------------------          

                               ORCL:VOL4         0  <==0说明该磁盘不属于任何组

VOL1                           ORCL:VOL1         1

VOL2                           ORCL:VOL2         1

VOL3                           ORCL:VOL3         1

 

SQL> create diskgroup DISKGRP2 external redundancy disk  'ORCL:VOL4';

Diskgroup created.

启动/关闭ASM实例

【原则】先关闭其它例程,最后关闭ASM例程

否则会报下面的错误

SQL> shutdown immediate;

ORA-15097: cannot SHUTDOWN ASM instance with connected RDBMS instance

 

启动顺序

案例:这里强调ASM实例启动只需要spfile.ora不需要其它任何物理数据文件!

SQL> startup

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/opt/oracle/product/10.2.0/db_1/dbs/init+ASM.ora'

 

[oracle@kk ~]$ export ORACLE_SID=+ASM

[oracle@kk ~]$ sqlplus "/ as sysdba"

 

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Mar 13 07:54:58 2010

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SQL> startup

ASM instance started

 

Total System Global Area   83886080 bytes

Fixed Size                  1217836 bytes

Variable Size              57502420 bytes

ASM Cache                  25165824 bytes

ASM diskgroups mounted

 

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

[oracle@kk ~]$ exit

logout

[root@kk ~]# su - oracle

[oracle@kk ~]$ sqlplus "/ as sysdba"

 

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Mar 13 07:55:36 2010

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SQL> startup

ORACLE instance started.

 

Total System Global Area  608174080 bytes

Fixed Size                  1220844 bytes

Variable Size             176164628 bytes

Database Buffers          427819008 bytes

Redo Buffers                2969600 bytes

Database mounted.

Database opened.

SQL>

 

正文:

四,ASM相关视图及内部命令

 

1,查看asm diskgroup的名字、状态、复制类型、总大小、空闲空间

 

SQL> select name, state, type, total_mb, free_mb from v$asm_diskgroup;

 

NAME                 STATE            TYPE           TOTAL_MB    FREE_MB

--------------------    -----------------------       -----------------      -------------------   ----------

ASMGRP1          MOUNTED            NORMAL           6273         3616

DISKGRP2          MOUNTED            EXTERN           1913         1863

 

 

2,查看ASM 磁盘的名字、路径、挂载状态、磁盘号

 

SQL> select name, path, mode_status, state, disk_number from v$asm_disk;

 

NAME     PATH           MODE_STATUS     STATE               DISK_NUMBER

---------------------------------------------------------------------------------------------------------------------------------

VOL1     ORCL:VOL1       ONLINE          NORMAL                     0

VOL2     ORCL:VOL2       ONLINE          NORMAL                     1

VOL3     ORCL:VOL3       ONLINE          NORMAL                     2

VOL4     ORCL:VOL4       ONLINE          NORMAL                     0

 

3,数据文件命名含义 dba_data_files

 

SQL> select file_name from dba_data_files;

 

FILE_NAME

--------------------------------------------------------------------------------

+ASMGRP1/boy/datafile/users.259.713439439

+ASMGRP1/boy/datafile/sysaux.257.713439427

+ASMGRP1/boy/datafile/undotbs1.258.713439433

+ASMGRP1/boy/datafile/system.256.713439419

+ASMGRP1/boy/datafile/example.269.713440119

+DISKGRP2/boy/datafile/erp.256.713522125

 

格式说明:

+ASMGRP1/boy /datafile/tbs_name.asm_filenumber.incarnation_number

 

   + ASMGRP1:  diskgroup名

             boy:  该数据库名

 datafile:  文件类型,表示是数据文件

tbs_name:  表空间名

asm file#:  表示ASM file编号,v$asm_file.file_number

incarnation number:  从时间戳提取,唯一值  。

 

4,在ASM实例中查询文件编号和大小

 

[oracle@kk ~]$ export ORACLE_SID=+ASM

[oracle@kk ~]$ sqlplus '/as sysdba'

SQL> select file_number,bytes/1024/1024 from v$asm_file;

 

FILE_NUMBER BYTES/1024/1024

----------- ---------------

        256      480.007813

        257      250.007813

        258      25.0078125

        259      70.0078125

        260        6.734375

        261        6.734375

        262      50.0004883

        263      50.0004883

        264      50.0004883

        265      50.0004883

        266      50.0004883

        267      50.0004883

        268      20.0078125

        269      100.007813

        270      .002441406

        256      800.007813

 

SQL> select member from v$logfile;

 

MEMBER

--------------------------------------------------------------------------------

+ASMGRP1/boy/onlinelog/group_3.266.713439655

+ASMGRP1/boy/onlinelog/group_3.267.713439663

+ASMGRP1/boy/onlinelog/group_2.264.713439635

+ASMGRP1/boy/onlinelog/group_2.265.713439643

+ASMGRP1/boy/onlinelog/group_1.262.713439615

+ASMGRP1/boy/onlinelog/group_1.263.713439627

 

16 rows selected.

 

所查询到的值,与dba_data_files相匹配。

 

查询文件号及其大小

 

+ASM (ASM instance)

SQL> select file_number , sum(bytes)/(1024*1024)  MB from v$asm_file group by file_number;

 

FILE_NUMBER SUM(BYTES)/(1024*1024)

----------- ----------------------

        256             360.007813

        257             35.0078125

 

BOY (database instance)

SQL> select name from v$datafile

 

NAME

----------------------------------------

+DATA/orcl/datafile/sysaux.256.3

+DATA/orcl/datafile/system.258.3

+DATA/orcl/datafile/undotbs1.257.3

+DATA/orcl/datafile/users.265.3

+DATA/orcl/datafile/nitin.263.3

 

5,查询相关的物理文件的大小

 

select sum(bytes)/(1024*1024*1024) from v$datafile;

 

select sum(bytes)/(1024*1024*1024) from v$logfile a, v$log b where a.group#=b.group#;  

 

select sum(bytes)/(1024*1024*1024) from v$tempfile where status='ONLINE';

 

6,ASM的内部命令 asmcmd

 

[oracle@kk ~]$ export ORACLE_SID=+ASM

[oracle@kk ~]$ asmcmd

perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

        LANGUAGE = (unset),

        LC_ALL = (unset),

        LANG = "AMRICAN"

    are supported and installed on your system.

perl: warning: Falling back to the standard locale ("C").

perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

        LANGUAGE = (unset),

        LC_ALL = (unset),

        LANG = "AMRICAN"

    are supported and installed on your system.

perl: warning: Falling back to the standard locale ("C").

ASMCMD> ls -l

State    Type    Rebal  Unbal  Name

MOUNTED  NORMAL  N      N      ASMGRP1/

MOUNTED  EXTERN  N      N      DISKGRP2/

ASMCMD [+ASMGRP1] > help

        commands:

        --------

        cd

        du

        find

        help

        ls

        lsct

        lsdg

        mkalias

        mkdir

        pwd

        rm

        rmalias

 

 

五,高级操作

 

1,创建或更改表空间

 

a,查询asm_diskgroup信息

 

SQL> select group_number,name, total_mb,free_mb from v$asm_diskgroup

 

GROUP_NUMBER     NAME                                 TOTAL_MB    FREE_MB

------------ ------------------------------------------------------------       ----------       ----------

           1        ASMGRP1                                   6273         3616

           2        DISKGRP2                                  1913          1863

 

b. 创建表空间erp

 

SQL> create tablespace erp datafile '+DISKGRP2' size 800m;

 

Tablespace created.

 

c,观察磁盘组空间变化

 

SQL> select group_number,name, total_mb,free_mb from v$asm_diskgroup;

 

GROUP_NUMBER   NAME                         TOTAL_MB  FREE_MB

------------ ------------------------------------------------------------   ----------     ----------

           1      ASMGRP1                         6273       3616

           2      DISKGRP2                         1913       1060

d,dba_data_files中关于文件名称和大小的信息

 

SQL>  select file_name,tablespace_name,bytes/1024/1024 MB,autoextensible from dba_data_files

FILE_NAME                               TABLESPACE_NAME         MB  AUTOEX

------------------------------------------------------------- ------------------------------------------------------------ ---------- ------

+ASMGRP1/boy/datafile/users.259.713439439     USERS                      5     YES

+ASMGRP1/boy/datafile/sysaux.257.713439427    SYSAUX                    240         YES

+ASMGRP1/boy/datafile/undotbs1.258.713439433  UNDOTBS1                 25    YES

+ASMGRP1/boy/datafile/system.256.713439419    SYSTEM                    480 YES

+ASMGRP1/boy/datafile/example.269.713440119   EXAMPLE                  100  YES

+DISKGRP2/boy/datafile/erp.256.713522125       ERP                        800  NO

 

e,resize 文件大小

 

SQL> alter database datafile '+ASMGRP1/boy/datafile/users.259.713439439' resize 70M;

 

Database altered.

 

SQL> select file_name,tablespace_name,bytes/1024/1024 MB,autoextensible from dba_data_files;

 

FILE_NAME                                  TABLESPACE_NAME       MB                  AUTOEX

----------------------------------------------------------------- ------------------------------------------------------------ ---------- ------

+ASMGRP1/boy/datafile/users.259.713439439        USERS                   70         YES

 

2,删除disk

 

SQL> select group_number, name from v$asm_diskgroup;

SQL> select path, name from v$asm_disk where group_number=1;

SQL> alter diskgroup DISKGRP2 drop disk VOL4;

 

Diskgroup altered.

 

3,添加新硬盘并重新负载均衡

 

SQL> alter diskgroup DATA add disk '/dev/rdsk/c3t19d39s4' rebalance power 11  <==power:允许使用系统资源的一个参数

 

SQL> select * from v$asm_operation

 

 

 

asmcmd -p,加上“-p”参数,可以显示当前路径

 

ASM动态性能视图

有一些新的动态性能视图与ASM实例有关。这些视图的内容在ASM实例和数据库实例中内容各不相同,见下表:

视图

ASM实例中的内容

RDBMS实例中内容

V$ASM_DISK

没一行记录ASM实例发现的一个磁盘,不论是否用于磁盘组

每一行记录实例使用的每一个磁盘

V$ASM_DISKGROUP

每一行记录一个磁盘组信息,包含该磁盘组的一般特征

每一行记录使用的每一个磁盘组,不管它是否已经安装了

V$ASM_FILE

每一行记录在每个安装过的磁盘组中的每一个文件

未用

V$ASM_OPERATION

每一行记录ASM实例中正在运行的一个长时间运行的操作

未用

V$ASM_TEMPLATE

每一行记录ASM实例中每个安装过的磁盘组中的一个模板

每一行记录每个安装过的磁盘中的一个模板

V$ASM_CLIENT

每一行记录每一个使用ASM实例管理的磁盘组的每一个数据库

如果由任何ASM文件打开了,那么为ASM实例添加一行

V$ASM_ALIAS

没一行记录每个安装过的磁盘组的每一个别名

未用


 
下一篇文章:没有了 

技术分享

 
 
太原网站建设,太原网站制作优秀公司祝您网站成功!    网站地图    
电话:139-3513-1207 邮箱:kefu@haoat.com 晋ICP备05008220号
版权所有©太原星湾网络科技有限公司 All Rights Reserved 太原网站制作
本站关键字:太原网站建设/太原做网站/太原网站制作/山西网站建设