转载:Oracle 中 rac asm管理

 原文:https://www.5axxw.com/wenku/sa/1020944e.html

1.创建advm卷

alter diskgroup data add volume volume1 size 100m;
alter diskgroup data resize volume volume1 size 100m;
alter diskgroup data disable volume volume1 ;
alter diskgroup data disable volume all ;
alter diskgroup data enable volume volume1 ;
alter diskgroup data drop volume volume1;

2.删除指定asm文件

alter diskgroup data drop file '+data/payroll/compentsation.dbf';

3.创建表空间时显示指定asm文件名

create  tablespace mytablespace datafile '+data' size 200m autoextend on;

4.创建/删除目录

alter diskgroup data add directory '+data/orcl';
alter diskgroup data drop directory '+data/orcl' force; 使用force 可以删除包含别名的目录

5.管理asm实例

在sqlplus管理asm之前先设置oracle_sid环境变量为asm_id,单实例默认为+ASM ,集群为+ASMnode#.asm实例没有数据字典所以必须操作系统身份验证。检查所有节点asm完整性.

./cluvfy comp asm -allnodes
 ./cluvfy comp asm -n all
 ./cluvfy comp asm -n rac2 

6.查新asm 实例用户 

1)查询v$pwfile_users视图

select  *  from v$pwfile_users;

  2)asmcmd命令查看

lspwusr

7.管理asm实例

注意:

  • 管理asm实例使用grid主目录中的srvctl可执行文件,不能使用rac或oracle数据库目录中的srvctl文件管理
  • 如果ocr和表决盘存储在asm磁盘组中,则不能在oracle rac数据库系统中单独启动/关闭,必须使用crsctl命令启动停止ors,这也将自动启动停止asm 实例。

 

1).启动/停止asm

srvctl start/stop asm 

2).集群启动/停止单个节点

srvctl start/stop asm -node rac1

3).添加asm实例

srvctl add asm

4).删除asm实例

srvctl remove asm

5).检查asm实例配置

srvctl config asm -node rac1

6).asmcmd启动和关闭asm实例

asmcmd
startup --mount
shutdown --immediate

8.磁盘组的asm访问控制

1.启用文件访问控制

alter diskgroup data set attribute 'access_control.enable'='true';默认为false
alter diskgroup data set attribute 'access_control.umask'='026'; 默认为066

2)查看磁盘组的os用户

select   *  from v$asm_user;

3)添加磁盘组

alter diskgroup data add usergroup 'test_grp1' with member 'oracle1','oracle2';

4)添加用户到用户组

alter diskgroup data modify usergroup 'test_grp2' add member 'oracle3';

5)添加os账户到磁盘组

alter diskgroup data add user 'oracle1';

6)修改asm文件的权限

alter diskgroup data set permission owner=read,write,group=read only,other=none for file '+data/controlfile.f';

相关视图

v$asm:显示所连接的asm实例的实例信息。

v$asm_disk:显示asm实例在查询时执行磁盘发现后发现的磁盘。

v$asm_diskgroup:显示asm中磁盘组信息。

v$client:显示使用asm实例管理的数据库

v$asm_alias:显示asm当中的别名

v$asm_file:显示在v$asm_diskgroup视图中列出的磁盘组中创建的文件。

v$asm_dusk_iostat:查看asm_diskgroup视图中列出的磁盘组的性能。

v$asm_operation:显示磁盘组平衡信息。

v$asm_acfsvolumes:显示asm动态卷的元数据信息。

v$asm_user:显示已连接的数据库实例的操作系统用户名和文件所有者名称。

v$estimate:显示执行asm磁盘组重新平衡和重新同步操作的工作估计情况。

 

初始化参数

instance_type:实例类型,对于asm实例来说值是asm,而对于oracle实例来说这个值默认是rdbms

db_unique_name:参数默认值是+ASM,是集群中或但个节点上的ASM实例的唯一值。

asm_power_limit:此参数用来控制重新平衡操作的速度,此参数的值是1至11,最大值为11,最小值为1(默认值),可以根据系统繁忙程度来调整此值,既不对业务有太大影响,也可以增加平衡速度。

asm_diskstring:指定与操作系统相关字符串来限制asm实例寻找磁盘的位置,比如值为/dev/raw/*,那么asm实例就会去/dev/raw/目录下寻找asm可用的磁盘(注:还会自动去寻找asm自己可用的磁盘),如果此值为空,那么asm实例会自动去寻找自己可用的磁盘,可以指定双路径逗号进行分割

asm_diskgroups:此参数指定一个包含磁盘组名称的列表,在启动asm实例执行alter diskgroup all mount命令时会去挂载这个列表中的磁盘组,如果此列表为空,只能手动指定磁盘组并挂载用all mount则无效。

asm_preferred_read_failure_groups:此参数允许扩展集群配置中的asm实例,参数包含给定的数据库实例首选的故障组。此参数因实例而异:每个实例可以指定与实例节点最接近的故障组以提高性能.

 

管理asm磁盘组

1.创建磁盘组

create diskgroup data normal redundancy failgroup flgrp1 disk '/dev/disk3','/dev/disk4'
failgroup flgrp2 disk '/dev/disk5','/dev/disk6';

2.向磁盘组添加磁盘

alter diskgroup dga add disk '/dev/disk7'  name disk5;

     asmcmd命令添加磁盘

asmca -slient -addDisk -diskGroupName mydg -disk '/dev/disk04' -disk '/dev/disk5';

3.对磁盘组的中的磁盘执行drop,undrop,resize,rename

删除磁盘组

alter diskgroup DATA drop disk DATA1;

如果删除磁盘组的操作被挂起,可以执行如下操作,取消删除操作

alter diskgroup dga undrop disk;

         替换磁盘组中的磁盘12c语句      disk6替换disk5

alter diskgroup dga replace disk disk5 with disk6;
alter diskgroup dga replace  power 5 disk disk5 with disk6; #替换并且执行再平衡操作

       执行磁盘的重置大小操作(此操作用于创建磁盘时,定义的容量小于实际硬盘容量,后期需要扩充)

alter diskgroup dga resize disk '/dev/raw/raw6' size 500m;

     4.重命名磁盘组

(1)重命名磁盘组   

su  - grid
renamedg dgname=dgroup1 newdgname=dgroup2 asm_diskstring='/dev/disk1' verbose=true;

(2)由于renamedg命令不会更新数据库中对应磁盘的引用信息,因此需要执行如下命令检查/删除旧磁盘组的状态

检查旧磁盘组状态

crsctl status res -t

(3)删除旧的磁盘组资源

srvctl remove diskgroup dgroup1

(4)重命名磁盘组中的磁盘

alter diskgroup dgroup2 mount restricted;
alter diskgroup dgroup2 rename all;

创建ACFS(11gR2之后版本)

磁盘组创建完毕之后就可以创建asm动态卷

asmcmd创建动态卷

volcreate -G data -s 10G volumel

创建os目录,挂载asm动态卷

mkdir /acfsmounts/acfs1

mkfs 创建acfs文件系统

/sbin/mkfs -t acfs /dev/asm/volumel

acfsutil registry命令注册创建的文件系统

/acfsmount/acfs1是上面os创建的目录,用于挂在asm动态卷,这是可选的,但是此种方式可以带来2个好处,

首先,无须再每个集群节点上手动挂在新的文件系统,其次,当集群软件或者服务器重启时,新创建的文件系统会自动挂载。

/sbin/acfsutil registery -a /dev/asm/volumel /acfsmount/acfs1

mount命令挂载新的创建的文件系统

确保使用acfs文件类型

/bin/mount -t acfs /dev/asm/volumel /acfsmounts/acfs1

修改访问权限

chown -R oracle:dba /acfsmounts/acfs1

创建acfs快照

asmcmd创建快照

acfsutil snap create acfs_snap_01 /app/oracle/myfirstacfs

创建acfs快照的过程会创建一个隐藏目录(./acfs),并再该隐藏目录中创建目录结构snap/<快照名称>。

尽管acfs在动态卷可以创建其他文件系统,但是oracle在asm动态卷只支持acfs作文集群文件系统,不支持对asm动态卷进行分区。可以使用多路径来创建asm磁盘组,但是asm动态卷上不能使用多路径。

asm磁盘组再平衡

再平衡操作语句

alter diskgroup dgroup2 rebalance power 5;

指定wait关键字,让再平衡操作执行完毕之后才返回。

alter diskgroup dgroup2 rebalance power 5 wait;

修改正在执行的再平衡命令的并行度

alter diskgroup data2 rebalance modify power 10;

修改并行度为默认设置

alter diskgroup data2 rebalance modify power;

当为磁盘组执行再平衡操作时,可以指定with或者without关键字选择不同阶段。

restore 阶段    这个阶段不能排除。

balance阶段    该阶段还原磁盘组中的所有冗余数据,实现磁盘之间扩展块的再平衡。

prepare      该阶段只适用与flex或者extend冗余磁盘组,完成的工作与sql操作中的"准备"阶段相关。

compact     该阶段完成所有扩展块的碎片整理和压缩动作。

示例sql

alter  diskgroup data2  rebalance with compact;
alter  diskgroup data2  rebalance without balance;

 

再平衡性能监控

可以查询v$asm_disk_stat和v$asm_diskgroup_stat视图获取性能的统计信息,包括v$filestat.

select   path,reads,writes,read_time,write_time,read_time/decode(reads,0,1,reads) "avgrdtime",
write_time/decode(writes,0,1,writes) "avgwrtime" from v$asm_disk_stat;

 

优化磁盘再平衡操作

可以查询v$asm_operation视图检查再平衡操作状态,可以使用explan  work语句创建像Oracle sql 语句的执行计划,在执行之前确定一次再平衡操作所包含的工作量,提交之后可以查询v$asm_estimate。

select   *   from v$asm_operation;

 

explain work for alter   diskgroup    data rebalance  power 5  ;

est_work列用于评估再平衡操作期间,oracle将会移动的asm分配单元的数量。

select  * from v$asm_estimate;

 

擦洗(scrub)磁盘组12c之后版本

检测逻辑损坏

alter  diskgroup dga scrub power low;

自动修复磁盘损坏

alter diskgroup dga scrub file '+data/datafile/example.123.456' repair power high;

 

创建oracle flex  asm

 

asmca命令创建

asmca -slient
-convertToFlexASM
-asmNetworks eth1/10.10.10.0
-asmListenerPort 1521

查看是否启用oracle flex asm

asmcmd命令查看

asmcmd showclustermode

srvctl  命令查看

srvctl status asm -detail
ASM is running on olrac2,olrac1
ASM is enabled.
ASM instance +ASM1 is running on node olrac1
Number of connected clients: 2
Client names: -MGMTDB:_mgmtdb:olrac-cluster olrac1:_OCR:olrac-cluster
ASM instance +ASM2 is running on node olrac2
Number of connected clients: 1
Client names: olrac2:_OCR:olrac-cluster

srvctl  查看实例监听

srvctl config asm

ASM home: 
Password file: +DATA/orapwASM
Backup of Password file: +DATA/orapwASM_backup
ASM listener: LISTENER
ASM instance count: 3
Cluster ASM listener: ASMNET1LSNR_ASM

修改asm实例个数

srvctl  modify asm -count 4

手动切换asm实例

alter system relocate client 'asm1:racdb2';

 

管理asm弹性组

create diskgroup flex_date flex redundancy disk data;

迁移正常冗余磁盘到弹性磁盘组

alter diskgroup data mount restricted;
alter diskgroup data covert redundancy to flex;

将配额组添加到磁盘组

alter diskgroup data add quotagroup quotadata set 'quota'=100m;

创建文件组

注意:将文件组分配给配额组之前,必须先创建配额组

alter diskgroup diskgroup1 add filegroup filegroup_pdb1 database pdb1 set 'quota group'='quotagroup_qgrp1';

 

 
posted @ 2023-03-07 18:20  RedArmy  阅读(252)  评论(0编辑  收藏  举报