oracle数据库存储管理,oracle数据库存储管理--ASM

说明:文章是用windows live writer自动上载的,有些特殊符号显示不正确,如“>”显示为“>”。须修改之处太多,无暇修改。阅读不便之处,请见谅!

特点:

ASM能代替外部LVM或FS的功能,不依赖外部数据存储结构。

ASM内含多种存储冗余功能如镜像,不依赖外部数据冗余功能。

能够自动将数据均衡分布在磁盘组内所有磁盘中,从而提高系统性能。

跨平台使用,配置和管理界面统一,简化了用户管理。

1、在linux下须安装相应补丁包和驱动程序(按以下顺序安装):

# rpm -ivh oracleasm-support-2.1.3-1.el5.i386.rpm

# rpm -ivh oracleasm-2.6.18-164.el5-2.0.5-1.el5.rpm

# rpm -ivh oracleasmlib-2.0.4-1.el5.i386.rpm

在商用unix下是不用安装这些驱动程序的,如AIX下直接使用rhdisk。实际上,在linux下也可以直接使用磁盘或磁盘分区(须转换为裸设备),后面会有介绍。

2、配置ASM环境

# /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 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 []: oinstall

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]:

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver: [ OK ]

Scanning the system for Oracle ASMLib disks: [ OK ]

若配置后显示失败(failure),则检查oracleasm的版本是否与操作系统内核版本一致。

检查方法:#uname –r是否与oracleasm-2.6.18-164.el5-2.0.5-1.el5.rpm 是否对应,若不一致则到下面网站下载:http://www.oracle.com/technetwork/topics/linux/downloads/rhel5-084877.html。若检查版本是一致的,则可尝试执行如下命令:# oracleasm update-driver。

3、创建和删除ASM磁盘

创建ASM磁盘:

# /etc/init.d/oracleasm createdisk data_vol01_sdb5 /dev/sdb5

Marking disk "data_vol01_sdb5" as an ASM disk:             [  OK  ]

# /etc/init.d/oracleasm createdisk data_vol02_sdb6 /dev/sdb6

Marking disk "data_vol02_sdb6" as an ASM disk:             [  OK  ]

列出ASM磁盘:

# /etc/init.d/oracleasm listdisks

DATA_VOL01_SDB5

DATA_VOL02_SDB6

FLASH_VOL_SDB1

删除ASM磁盘:

# /etc/init.d/oracleasm deletedisk FLASH_VOL_SDB1

Removing ASM disk "FLASH_VOL_SDB1":                        [  OK  ]

4、创建ASM磁盘组:

(1)启动dbca

# su - oracle

$ dbca

2f5a5b9b4d45c04cdaf0142923b0fd9c.png

(2)启动CSS服务

ccbb8b4ced2fb5d06c9d2ac6ceba63af.png

提示用root用户运行$ORACLE_HOME/bin/localconfig add,使CSS(Oracle Cluster Synchronization Service,集群同步服务)启动并加入inittab文件,使其开机自动启动。

4d8b7f8a872f64c87d4aa1db167400b7.png

# /u01/db_1/bin/crsctl check cssd

CSS appears healthy

css服务正常。

(3)设置ASM实例的sys用户密码

ba8b7530dd1be8b9f5b434e05b1b2076.png

(4)启动ASM实例

c993093fca5a5ccfc0d2312534d6b80b.png

af20741d6225c41d7e9fbca3dfe5930a.png

(5)创建磁盘组

fdd114d5676c5c7b5a3df4b07fcd6ab6.png

9ff56d8b684beef5d429e5dd36b31339.png

三种冗余模式:

High:数据将镜像两份,磁盘组中至少3个磁盘。

Normal:数据镜像一份,磁盘组中至少2个磁盘。

Extenal:外部提供数据保护,如:RAID盘。

磁盘的八种状态:

UNKNOWN - Automatic Storage Management disk header has not been read

CANDIDATE - Disk is not part of a disk group and may be added to a disk group with the ALTER DISKGROUP statement

INCOMPATIBLE - Version number in the disk header is not compatible with the Automatic Storage Management software version.

PROVISIONED - Disk is not part of a disk group and may be added to a disk group with the ALTER DISKGROUP statement. The PROVISIONED header status is different from the CANDIDATE header status in that PROVISIONED implies that an additional platform-specific action has been taken by an administrator to make the disk available for Automatic Storage Management.

MEMBER - Disk is a member of an existing disk group. No attempt should be made to add the disk to a different disk group. The ALTER DISKGROUP statement will reject such an addition unless overridden with the FORCE option

FORMER - Disk was once part of a disk group but has been dropped cleanly from the group. It may be added to a new disk group with the ALTER DISKGROUP statement.

CONFLICT - Automatic Storage Management disk was not mounted due to a conflict

FOREIGN - Disk contains data created by an Oracle product other than ASM. This includes datafiles, logfiles, and OCR disks.

eaf9328a59b944fc1ad23b22f6360ab7.png

冗余方式为normal,成员盘两个,则取两盘中容量最小为可用空间。但在normal和high方式下,磁盘组的可用容量还与failgroup组中的磁盘有关,后面会详细介绍。

5、使用裸设备创建ASM磁盘组:

(1)创建裸设备

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

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"

ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"

ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"

ACTION=="add", KERNEL=="sdb5", RUN+="/bin/raw /dev/raw/raw4 %N"

KERNEL=="raw[1-4]",OWNER="oracle",GROUP="oinstall",MODE="640"

注:阴影部分,不可以有超过大于10的数。也就是说如果用这种方法改变裸设备的所主,设备编号则不能有大于10,如:raw10,raw11…等这样的设备名。如果有可用chown改变。

# start_udev

Starting udev:                                             [  OK  ]

# ls –l /dev/raw

total 0

crw-r----- 1 oracle oinstall 162, 1 Jan 31 17:02 raw1

crw-r----- 1 oracle oinstall 162, 2 Jan 31 17:02 raw2

crw-r----- 1 oracle oinstall 162, 3 Jan 31 17:02 raw3

crw-r----- 1 oracle oinstall 162, 4 Jan 31 17:02 raw4

(2)创建磁盘组

# su - oracle

$ dbca

05ede05f3f13def94bee7bba9f66d774.png

由于/dev/sdb5即raw4已经是data_grp01的成员盘,所以不会显示。

378089efcb9cf4622568d9a66167389c.png

冗余方式为external,成员盘两个,则磁盘组可用容量为两盘容量之和(不包括开销)。

6、使用ASM磁盘组

创建数据库(截图步骤中部分省略):

$ export ORACLE_SID=+ASM

$ lsnrctl start

2a4a28f2d4547b778a91f7edd42aa23b.png

fbc499e2e86aabb36609d5808f650ca6.png

82e1793f23f91af8845885cf094ce5c0.png

2d05b41c93ba2f24a60602d34e305fbc.png

7898ce6ed88e6640f995e85217adeae4.png

1bc40dfdf7b5483cf60924e8b00d63a1.png

bf30b2fd6432ecbcec7315371fa851ca.png

107ccbb64edf1b4b844f0f3a0f07cb77.png

550daf0e6724e3f2e91c5fe14fa1242d.png

7、ASM磁盘维护

(1)数据库启动顺序:CSS服务—>ASM实例—>Oracle数据库实例

数据库关闭顺序:Oracle数据库实例—>ASM实例—>CSS服务

(2)登入ASM实例

$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

SQL> show parameter name;

NAME                     TYPE            VALUE

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

db_name                  string

db_unique_name                 string            +ASM

global_names                 boolean            FALSE

instance_name                 string            +ASM

service_names                 string            +ASM

(3)登录数据库

$export ORACLE_SID=asmora10

$ sqlplus / as sysdba

SQL> show parameter instance_name;

NAME                     TYPE     VALUE

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

instance_name                 string     asmora10

SQL> show parameter spfile;

NAME                     TYPE     VALUE

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

spfile                     string     +DATA_GRP01/asmora10/spfileasm

ora10.ora

SQL> select name from v$datafile

2  union

3  select member from v$logfile

4  union

5  select name from v$controlfile

6  union

7  select name from v$tempfile;

NAME

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

+DATA_GRP01/asmora10/controlfile/current.260.741893725

+DATA_GRP01/asmora10/datafile/sysaux.257.741893599

+DATA_GRP01/asmora10/datafile/system.256.741893597

+DATA_GRP01/asmora10/datafile/undotbs1.258.741893599

+DATA_GRP01/asmora10/datafile/users.259.741893599

+DATA_GRP01/asmora10/onlinelog/group_1.261.741893725

+DATA_GRP01/asmora10/onlinelog/group_2.262.741893737

+DATA_GRP01/asmora10/onlinelog/group_3.263.741893745

+DATA_GRP01/asmora10/tempfile/temp.264.741893765

+FLASH_GRP01/asmora10/controlfile/current.256.741893725

+FLASH_GRP01/asmora10/onlinelog/group_1.257.741893731

+FLASH_GRP01/asmora10/onlinelog/group_2.258.741893743

+FLASH_GRP01/asmora10/onlinelog/group_3.259.741893751

13 rows selected.

(4)查看磁盘组及ASM磁盘

$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

查看磁盘组状况:

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

NAME          STATE             TYPE        TOTAL_MB    FREE_MB USABLE_FILE_MB OFFLINE_DISKS

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

DATA_GRP01    MOUNTED             NORMAL        4784       2766       1383           0

FLASH_GRP01   MOUNTED             EXTERN        3826       3597       3597           0

手动mount磁盘组:

SQL> alter diskgroup data_grp01 mount;

手动卸载磁盘组(在数据库关闭情况下):

SQL> alter diskgroup flash_grp01 dismount;

查看磁盘状况:

SQL> select name,header_status,mount_status,state,total_mb,path from v$asm_disk;

72211eda6d67fd0520f66416e73bd783.png

(5)添加、删除磁盘组

2e264ab58c4a9f8223896f995061c08f.png

添加磁盘组:

SQL> create diskgroup data_grp02 high redundancy disk 'ORCL:DATA_VOL03_SDB7','ORCL:DATA_VOL04_SDB8','ORCL:DATA_VOL03_SDB9';

e00102182f9b59a8385793fe4fe62821.png

删除磁盘组:

SQL> drop diskgroup data_grp02;

(6)向external磁盘组中添加、删除磁盘

添加磁盘到磁盘组

SQL> alter diskgroup flash_grp01 add disk '/dev/raw/raw3' name flash_grp01_03;

fa1c964e2391027386ecb9c01710f23f.png

查看磁盘组中磁盘重新平衡状况:

SQL> select group_number,operation,state,est_work,sofar,est_rate,est_minutes from v$asm_operation;

e9a2e1d3b132cb0580cb6fb9d09cabe9.png

SQL> show parameter power

NAME                     TYPE            VALUE

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

asm_power_limit              integer            1

这参数指定重新平衡磁盘数据时暂用带宽的力度。取值为0~11。数值越大,对系统占用的I/0资源越多,重新平衡动作将越快完成。此参数也可以在添加或删除磁盘动作时指定,如:

SQL> alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL03_SDB7' rebalance power 11;

从磁盘组中删除磁盘:

SQL> alter diskgroup flash_grp01 drop disk flash_grp01_03;

f831605d7b80763e29153ad3f183301f.png

06ac1d732b233c021b1b47f68222a2ed.png

(7)向磁盘组中添加、删除磁盘

添加磁盘:

SQL> alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL03_SDB7','ORCL:DATA_VOL04_SDB8';

df30bd532490e75b1dc750f50cd27fd5.png

删除磁盘:

SQL> alter diskgroup data_grp01 drop disk 'DATA_VOL01_SDB5';

注意:如果删除normal或high磁盘组中的磁盘,删除磁盘后磁盘组中磁盘的数量必须不少于2个或3个。若不能满足这个要求,则被删除的磁盘会处于hung状态。如下所示:

e8c68a350bfe23b2b59aad9b50039e38.png

这种情况下应先放弃drop操作:

SQL> alter diskgroup data_grp01 undrop disks;

如果确定要删除磁盘,则应先向组内添加一块新的磁盘后再删除:

SQL> alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL02_SDB6' drop disk 'DATA_VOL03_SDB7';

8、Failgroup故障组

(1)概念

在normal和high保护模式下,ASM会将数据镜像2份或三份,如(以normal磁盘组为例):

67d5dd0b957e451aaf3651627fd0372d.png

两个磁盘的情况下,数据A,B,C,D在两个磁盘上互为镜像。

a3c8e97f598f0b1d17cf5e81ddfb22ec.png

三个磁盘的情况下,数据A,B,C,D和镜像在不同磁盘,并均匀分布。

b1efdd4db948bcd5541f7bac548c4fdd.png

四个磁盘情况下,数据均匀分布。考虑如下情况:

91cb82ac60a7a3ef027ba8166aa52730.png

两块磁盘损坏,则数据A将面临丢失。为解决这个问题,引出failgroup的概念:在同一ASM磁盘组内,一个或多个磁盘组成一个failgroup,镜像在不同failgroup间进行,同样一个failgroup的不同磁盘间不允许做镜像。这样,如果同一个failgroup组内的磁盘处于同一磁盘控制器的情况下(比如,上图中上面两块受损的磁盘由同一个SCSI控制器掌管),可以避免磁盘控制器损坏导致的数据损失。也就是说,同一ASM磁盘组内任意一个failgroup内的磁盘损坏都不会造成数据丢失。当然,这种情况在external模式下是不成立的。

所以,上述情况如果在每两块磁盘为一个failgroup的情况下,数据分布应该是这样的:

9464ac639ef0d4b1145d4be18558b9e0.png

(2)查看failgroup

SQL>  select name,header_status,mount_status,total_mb,failgroup,path from v$asm_disk;

d3fb109b67c025ac64659910ef25c276.png

默认情况下,在创建ASM磁盘组时,每个磁盘均属于以该磁盘名命名的failgroup。

(3)指定磁盘的failgroup

0d4e7d9c827c47a4c3e7ec1267a0d7b2.png

在normal/high保护模式下,failgroup至少有2/3个。

SQL> create diskgroup data_grp02 normal redundancy failgroup fg01 disk '/dev/raw/raw3' failgroup fg02 disk '/dev/raw/raw4';

f526a09962a3258629b6928638c1f964.png

SQL> alter diskgroup data_grp02 add failgroup fg01 disk 'ORCL:DATA_VOL03_SDB9' name data_grp02_0002;

62b91a73225b885180db5ea9365ecee6.png

从上面data_grp02磁盘组的可用空间可以看出,由于镜像的原因,failgroup中磁盘的分配情况也会影响到磁盘组的可用空间。如下图所示:

20f929a9a348f34e61ec88c67c2b233a.png

(4)删除failgroup中磁盘

SQL> alter diskgroup data_grp02 drop disk 'DATA_GRP02_0001';

637b24efad6dd4c05a1b0e1ec9590f8a.png

failgroup中最后一个磁盘不能被删除。

SQL> alter diskgroup data_grp02 undrop disks;

9、手工控制ASM

$ export ORACLE_SID=+ASM

$ asmcmd

ASMCMD> ?

commands:

--------

cd

du

find

help

ls

lsct

lsdg

mkalias

mkdir

pwd

rm

rmalias

ASMCMD> ls -l

State       Type    Rebal  Unbal  Name

MOUNTED     NORMAL  N      N      DATA_GRP01/

MOUNTED     NORMAL  N      N      DATA_GRP02/

DISMOUNTED          N      N      FLASH_GRP01/

ASMCMD> cd data_grp02

ASMCMD> ls

ASMCMD> mkdir ttt

ASMCMD> ls -l

Type  Redund  Striped  Time             Sys  Name

N    ttt/

ASMCMD> lsdg

State       Type    Rebal  Unbal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Name

MOUNTED     NORMAL  N      N         512   4096  1048576      7176     5093             2392            1350              0  DATA_GRP01/

MOUNTED     NORMAL  N      N         512   4096  1048576      7175     7071             2870            2100              0  DATA_GRP02/

DISMOUNTED          N      N         512   4096  1048576         0        0                0               0

10、裸设备迁移至ASM环境

待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值