Oracle-29-ASM的使用和管理

ASM(自动存储管理)是oracle10g后引入的一种存储手段,是oracle自己开发的一种卷管理器,可以使多个裸设备以卷组的形式组织在一起,实现了利用oracle进程管理的系统级别的vg的管理。用ASM使得我们使用裸设备更加灵活,

我们查看ASM实例信息(这里我们用grid用户)

[grid@RHEL6 ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.1.0 Production on Fri May 25 06:18:08 2018

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Automatic Storage Management option

SQL> 
SQL> show parameter instance;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database_instances           integer     1
instance_name                        string      +ASM
instance_number                      integer     1
instance_type                        string      asm
SQL> 
SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/asm/asmparameterfile/reg
                                                 istry.253.974077643
SQL> create pfile='/home/grid/init.ora' from spfile;

File created.
SQL> !cat /home/grid/init.ora
+ASM.__oracle_base='/u01/app/grid'#ORACLE_BASE set from in memory value
+ASM.asm_diskgroups='FLASH'#Manual Mount
*.asm_power_limit=1
*.diagnostic_dest='/u01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='EXCLUSIVE'

ASM实例的启动和停止

我们停止ASM实例,注意:由于ASM实例运行在RDBMS实例下层,要求在停ASM实例时要讲RDBMS实例先停掉。

查看是否有数据库实例连接到ASM实例下

SQL> desc v$asm_client
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 GROUP_NUMBER                                       NUMBER
 INSTANCE_NAME                                      VARCHAR2(64)
 DB_NAME                                            VARCHAR2(8)
 STATUS                                             VARCHAR2(12)
 SOFTWARE_VERSION                                   VARCHAR2(60)
 COMPATIBLE_VERSION                                 VARCHAR2(60)
SQL> col INSTANCE_NAME for a30
SQL> select GROUP_NUMBER,INSTANCE_NAME,DB_NAME from v$asm_client;

GROUP_NUMBER INSTANCE_NAME                  DB_NAME
------------ ------------------------------ --------
           1 +ASM                           +ASM
           1 orcl                           orcl
           2 orcl                           orcl
SQL> select group_number,name,state from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           1 DATA                           MOUNTED
           2 FLASH                          MOUNTED

这时发现有数据库实例挂载磁盘组,因此无法停止ASM实例

SQL> shutdown
ORA-15097: cannot SHUTDOWN ASM instance with connected client

我们先停掉数据库后再停ASM实例,这里注意用户切换

[oracle@RHEL6 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri May 25 23:46:00 2018

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SYS@ orcl>shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> shutdown
ASM diskgroups dismounted
ASM instance shutdown

重新启动ASM实例

SQL> startup
ASM instance started

Total System Global Area  283930624 bytes
Fixed Size                  2212656 bytes
Variable Size             256552144 bytes
ASM Cache                  25165824 bytes
ASM diskgroups mounted

下面我们用命令行的方式对磁盘组进行管理

首先在主机环境下查看ASM磁盘组文件

[oracle@RHEL6 ~]$ ll /dev/raw
total 0
crw-rw----. 1 grid asmadmin 162, 1 Jul 22 18:47 raw1
crw-rw----. 1 grid asmadmin 162, 2 Jul 22 18:46 raw2
crw-rw----. 1 grid asmadmin 162, 3 Jul 22 18:47 raw3
crw-rw----. 1 grid asmadmin 162, 5 Jul 22 18:41 raw5
crw-rw----. 1 grid asmadmin 162, 6 Jul 22 18:38 raw6
crw-rw----. 1 grid asmadmin 162, 7 Jul 22 18:38 raw7
crw-rw----. 1 grid asmadmin 162, 8 Jul 22 18:47 raw8
crw-rw----. 1 root disk     162, 0 Jul 22 18:38 rawctl
[oracle@RHEL6 ~]$ 

在ASM中查看

SYS@ orcl>col path for a50
SYS@ orcl>select group_number,path from v$asm_disk order by path;

GROUP_NUMBER PATH
------------ --------------------------------------------------
           1 /dev/raw/raw1
           1 /dev/raw/raw2
           2 /dev/raw/raw3
           2 /dev/raw/raw5
           0 /dev/raw/raw6
           0 /dev/raw/raw7
           2 /dev/raw/raw8

7 rows selected.

Elapsed: 00:00:00.08

这里如果磁盘组的编号是0,说明还没有被使用,如果磁盘组的编号不是0,说明已经被使用

创建新的磁盘组

SQL> select group_number,name,state from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           1 DATA                           MOUNTED
           2 FLASH                          MOUNTED
SQL> create diskgroup dg1 external redundancy disk '/dev/raw/raw6';

Diskgroup created.

SQL> select group_number,name,state from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           1 DATA                           MOUNTED
           2 FLASH                          MOUNTED
           3 DG1                            MOUNTED

查看磁盘组信息

SQL> select group_number,path from v$asm_disk order by path;

GROUP_NUMBER PATH
------------ --------------------------------------------------
           1 /dev/raw/raw1
           1 /dev/raw/raw2
           2 /dev/raw/raw3
           2 /dev/raw/raw5
           3 /dev/raw/raw6
           0 /dev/raw/raw7
           2 /dev/raw/raw8

7 rows selected.

使用命令将磁盘加入到磁盘组中

SQL> alter diskgroup dg1 add disk '/dev/raw/raw7';

Diskgroup altered.
SQL> select group_number,path from v$asm_disk order by path;

GROUP_NUMBER PATH
------------ --------------------------------------------------
           1 /dev/raw/raw1
           1 /dev/raw/raw2
           2 /dev/raw/raw3
           2 /dev/raw/raw5
           3 /dev/raw/raw6
           3 /dev/raw/raw7
           2 /dev/raw/raw8

7 rows selected.

修改磁盘组状态

SQL> select group_number,name,state from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           1 DATA                           MOUNTED
           2 FLASH                          MOUNTED
           3 DG1                            MOUNTED
SQL> alter diskgroup DG1 dismount;

Diskgroup altered.
SQL> select group_number,name,state from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           1 DATA                           MOUNTED
           2 FLASH                          MOUNTED
           0 DG1                            DISMOUNTED

再次挂起磁盘组

SQL> alter diskgroup DG1 mount;

Diskgroup altered.
SQL> select group_number,name,state from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE
------------ ------------------------------ -----------
           1 DATA                           MOUNTED
           2 FLASH                          MOUNTED
           3 DG1                            MOUNTED

删除磁盘组

SQL> drop diskgroup dg1 including contents;

Diskgroup dropped.
SQL> select group_number,path from v$asm_disk order by path;

GROUP_NUMBER PATH
------------ --------------------------------------------------
           1 /dev/raw/raw1
           1 /dev/raw/raw2
           2 /dev/raw/raw3
           2 /dev/raw/raw5
           0 /dev/raw/raw6
           0 /dev/raw/raw7
           2 /dev/raw/raw8

7 rows selected.

重新建立带有兼容版本信息的磁盘组

SQL> create diskgroup dg1 external redundancy disk '/dev/raw/raw6';

Diskgroup created.

查看兼容版本信息

SQL> col compatibility for a30
SQL> select name,compatibility from v$asm_diskgroup;

NAME                           COMPATIBILITY
------------------------------ ------------------------------
DATA                           11.2.0.0.0
FLASH                          11.2.0.0.0
DG1                            10.1.0.0.0

由于兼容版本不一致会导致数据回写失败,所以我们尽量要保持磁盘组的版本信息一致

SQL> alter diskgroup dg1 set attribute 'compatible.asm'='11.2.0.0.0';

Diskgroup altered.
SQL> select name,compatibility from v$asm_diskgroup;

NAME                           COMPATIBILITY
------------------------------ ------------------------------
DATA                           11.2.0.0.0
FLASH                          11.2.0.0.0
DG1                            11.2.0.0.0

下面我们检索下ASM磁盘组的数据

[grid@RHEL6 ~]$ asmcmd -p
ASMCMD [+] > ls
DATA/
DG1/
FLASH/
ASMCMD [+] > ls -l +data/orcl/controlfile
Type         Redund  Striped  Time             Sys  Name
CONTROLFILE  UNPROT  FINE     JUL 22 18:00:00  Y    Current.260.982157551

猜你喜欢

转载自blog.csdn.net/Paul_George/article/details/81113860
今日推荐