Oracle 12c ASM专题|我的第一个Flex Diskgroup
sinye56 2024-10-03 00:40 14 浏览 0 评论
作者 周天鹏(译)
原文链接 https://martincarstenbach.wordpress.com/2017/07/06/12-2-new-feature-the-flex-asm-disk-group-part-1/
之前笔者都是从其他分享者那里了解了12.2的flex diskgroup,但直到现在都没能亲自探索下它有多cool。笔者相信它真的非常cool而且很值得拿出来分享下。关于这个特性和下面这些测试,有非常多的东西值得一提,所以笔者选择把它分解成了多个部分,将每周定期与大家进行分享。
背 景
在GI/ASM之前的版本中,尤其是两者都是用的环境,有一些我想做的操作几乎是不可能轻易完成的。许多磁盘组的属性(例如冗余度等)是对这个磁盘组里所有文件都生效的。例如,你想创建一个normal冗余度的磁盘组给某个数据库,high冗余度的磁盘组给其他库,这时你就必须创建两个用于存放数据的磁盘组。ASM 12.2中,Oracle减少了ASM的限制来提供更好的定制化服务,这一点在12.1中可见一斑。可以看下63 ASM disk groups in 11.2(https://docs.oracle.com/cd/E11882_01/server.112/e18951/asmdiskgrps.htm#OSTMG94134)和511 in 12.1(https://docs.oracle.com/database/121/OSTMG/GUID-BC6544D7-6D59-42B3-AE1F-4201D3459ADD.htm#OSTMG94136),虽然这也允许一些定制化,但还是增加了维护的开销。
12.1中人们可以更细粒度的管理存储而且引入了CDB的概念。在创建PDB时,管理员可以指定pdbstorageclause子句来对PDB做一些限制,例如:
SQL> create pluggable database pdb1
2 admin user someone identified by somepassword
3 ...
4 storage (maxsize 200G);
Pluggable database created.
但是,如果数据库建在了一个high冗余度的磁盘组上,该磁盘组上所有文件都继承这个属性。我无法将一个存放在high冗余度磁盘组上的PDB定义为normal冗余度,至少我在12.1中没意识到如何达到这个效果。
Flex Disk Group
Flex Diak Group允许磁盘组内的更细粒度的管理。你可以强化磁盘组内的配额限制(以数据库为粒度比较靠谱),而且你可以给不同的文件组定义不同的冗余度(即不同的数据库、PDB可以有不同的冗余度)。换句话说就是,你可以在同一个磁盘组里建两个库,数据库1是normal冗余度,数据库2是high冗余度。如果数据库2是一个CDB,你甚至可以以PDB为粒度再去管理一些设置(例如冗余度)。
在我的实验环境中,我创建了一个Flex冗余度的磁盘组。该环境为两节点RAC,Oracle版本为12.2.0.1.170620,操作系统版本为Oracle Linux 7.3 with UEK4。我把这个磁盘组取名为FLEX,下面是它的创建命令:
CREATE DISKGROUP FLEX FLEX REDUNDANCY
DISK 'AFD:FLEX1'
DISK 'AFD:FLEX2'
DISK 'AFD:FLEX3'
DISK 'AFD:FLEX4'
DISK 'AFD:FLEX5'
ATTRIBUTE
'compatible.asm'='12.2.0.1',
'compatible.rdbms'='12.2.0.1',
'compatible.advm'='12.2.0.1',
'au_size'='4M’;
注意这里用了AFD(ASM Filter Driver),为了笔者的实验配置的。在安装ASM 12.2时这个特性是默认启用的。看看样例代码,自己确实也意识到了磁盘组名字取得不是很理想……例子中的重点是使用了“FLEX REDUNDANCY”,5个隐式创建的故障组和兼容性设置为了12.2。
[这篇文章](https://docs.oracle.com/database/122/OSTMG/asm-filegroups.htm)提到了,Flex Disk Group一般可以容忍两个故障组丢失。但是,容忍两个故障组丢失的前提是该磁盘组至少有5个故障组,如果故障组少于5个,则只允许一个故障组丢失。Flex Disk Group最少需要3个故障组。
如果你现在觉得这个新特性很牛逼,这里有个大大的警告:你必须使用12.2的数据库实例才能使用这个特性。
你可以捕获日志输出(从命令开始到结束),因为在12.2 ASM中当你创建新的磁盘组时,观察下磁盘组创建期间到底发生了啥真的很有意思。如果你对详细的信息并不是很感兴趣,可以直接跳过下面这部分。
SQL> CREATE DISKGROUP FLEX FLEX REDUNDANCY DISK 'AFD:FLEX1' SIZE 10239M
DISK 'AFD:FLEX2' SIZE 10239M
DISK 'AFD:FLEX3' SIZE 10239M
DISK 'AFD:FLEX4' SIZE 10239M
DISK 'AFD:FLEX5' SIZE 10239M
ATTRIBUTE 'compatible.asm'='12.2.0.1','compatible.rdbms'='12.2.0.1','compatible.advm'='12.2.0.1','au_size'='4M'
NOTE: Assigning number (5,0) to disk (AFD:FLEX1)
NOTE: Assigning number (5,1) to disk (AFD:FLEX2)
NOTE: Assigning number (5,2) to disk (AFD:FLEX3)
NOTE: Assigning number (5,3) to disk (AFD:FLEX4)
NOTE: Assigning number (5,4) to disk (AFD:FLEX5)
2017-07-03 10:38:53.811000 +01:00
NOTE: initializing header (replicated) on grp 5 disk FLEX1
NOTE: initializing header (replicated) on grp 5 disk FLEX2
NOTE: initializing header (replicated) on grp 5 disk FLEX3
NOTE: initializing header (replicated) on grp 5 disk FLEX4
NOTE: initializing header (replicated) on grp 5 disk FLEX5
NOTE: initializing header on grp 5 disk FLEX1
NOTE: initializing header on grp 5 disk FLEX2
NOTE: initializing header on grp 5 disk FLEX3
NOTE: initializing header on grp 5 disk FLEX4
NOTE: initializing header on grp 5 disk FLEX5
NOTE: Disk 0 in group 5 is assigned fgnum=1
NOTE: Disk 1 in group 5 is assigned fgnum=2
NOTE: Disk 2 in group 5 is assigned fgnum=3
NOTE: Disk 3 in group 5 is assigned fgnum=4
NOTE: Disk 4 in group 5 is assigned fgnum=5
GMON updating for reconfiguration, group 5 at 657 for pid 45, osid 25857
NOTE: group 5 PST updated.
NOTE: initiating PST update: grp = 5
GMON updating group 5 at 658 for pid 45, osid 25857
NOTE: set version 0 for asmCompat 12.2.0.1.0 for group 5
NOTE: group FLEX: initial PST location: disks 0000 0001 0002 0003 0004
NOTE: PST update grp = 5 completed successfully
NOTE: cache registered group FLEX 5/0x0A58F009
NOTE: cache began mount (first) of group FLEX 5/0x0A58F009
NOTE: cache is mounting group FLEX created on 2017/07/03 10:38:52
NOTE: cache opening disk 0 of grp 5: FLEX1 label:FLEX1
NOTE: cache opening disk 1 of grp 5: FLEX2 label:FLEX2
NOTE: cache opening disk 2 of grp 5: FLEX3 label:FLEX3
NOTE: cache opening disk 3 of grp 5: FLEX4 label:FLEX4
NOTE: cache opening disk 4 of grp 5: FLEX5 label:FLEX5
* allocate domain 5, valid ? 0
kjbdomatt send to inst 2
NOTE: attached to recovery domain 5
NOTE: cache creating group 5/0x0A58F009 (FLEX)
NOTE: cache mounting group 5/0x0A58F009 (FLEX) succeeded
NOTE: allocating F1X0 (replicated) on grp 5 disk FLEX1
NOTE: allocating F1X0 (replicated) on grp 5 disk FLEX2
NOTE: allocating F1X0 (replicated) on grp 5 disk FLEX3
NOTE: allocating F1X0 on grp 5 disk FLEX1
NOTE: allocating F1X0 on grp 5 disk FLEX2
NOTE: allocating F1X0 on grp 5 disk FLEX3
2017-07-03 10:38:56.621000 +01:00
NOTE: Created Used Space Directory for 1 threads
NOTE: Created Virtual Allocation Locator (1 extents) and Table (5 extents) directories for group 5/0x0A58F009 (FLEX)
2017-07-03 10:39:00.153000 +01:00
NOTE: VAM migration has completed for group 5/0x0A58F009 (FLEX)
NOTE: diskgroup must now be re-mounted prior to first use
NOTE: cache dismounting (clean) group 5/0x0A58F009 (FLEX)
NOTE: messaging CKPT to quiesce pins Unix process pid: 25857, image: oracle@rac122pri1 (TNS V1-V3)
2017-07-03 10:39:01.805000 +01:00
NOTE: LGWR not being messaged to dismount
kjbdomdet send to inst 2
detach from dom 5, sending detach message to inst 2
freeing rdom 5
NOTE: detached from domain 5
NOTE: cache dismounted group 5/0x0A58F009 (FLEX)
GMON dismounting group 5 at 659 for pid 45, osid 25857
GMON dismounting group 5 at 660 for pid 45, osid 25857
NOTE: Disk FLEX1 in mode 0x7f marked for de-assignment
NOTE: Disk FLEX2 in mode 0x7f marked for de-assignment
NOTE: Disk FLEX3 in mode 0x7f marked for de-assignment
NOTE: Disk FLEX4 in mode 0x7f marked for de-assignment
NOTE: Disk FLEX5 in mode 0x7f marked for de-assignment
SUCCESS: diskgroup FLEX was created
NOTE: cache deleting context for group FLEX 5/0x0a58f009
NOTE: cache registered group FLEX 5/0x4718F00C
NOTE: cache began mount (first) of group FLEX 5/0x4718F00C
NOTE: Assigning number (5,0) to disk (AFD:FLEX1)
NOTE: Assigning number (5,1) to disk (AFD:FLEX2)
NOTE: Assigning number (5,2) to disk (AFD:FLEX3)
NOTE: Assigning number (5,3) to disk (AFD:FLEX4)
NOTE: Assigning number (5,4) to disk (AFD:FLEX5)
2017-07-03 10:39:08.161000 +01:00
NOTE: GMON heartbeating for grp 5 (FLEX)
GMON querying group 5 at 663 for pid 45, osid 25857
NOTE: cache is mounting group FLEX created on 2017/07/03 10:38:52
NOTE: cache opening disk 0 of grp 5: FLEX1 label:FLEX1
NOTE: 07/03/17 10:39:07 FLEX.F1X0 found on disk 0 au 10 fcn 0.0 datfmt 1
NOTE: cache opening disk 1 of grp 5: FLEX2 label:FLEX2
NOTE: 07/03/17 10:39:07 FLEX.F1X0 found on disk 1 au 10 fcn 0.0 datfmt 1
NOTE: cache opening disk 2 of grp 5: FLEX3 label:FLEX3
NOTE: 07/03/17 10:39:07 FLEX.F1X0 found on disk 2 au 10 fcn 0.0 datfmt 1
NOTE: cache opening disk 3 of grp 5: FLEX4 label:FLEX4
NOTE: cache opening disk 4 of grp 5: FLEX5 label:FLEX5
NOTE: cache mounting (first) flex redundancy group 5/0x4718F00C (FLEX)
* allocate domain 5, valid ? 0
kjbdomatt send to inst 2
NOTE: attached to recovery domain 5
start recovery: pdb 5, passed in flags x4 (domain enable 0)
validate pdb 5, flags x4, valid 0, pdb flags x204
* validated domain 5, flags = 0x200
NOTE: cache recovered group 5 to fcn 0.0
NOTE: redo buffer size is 512 blocks (2105344 bytes)
NOTE: LGWR attempting to mount thread 1 for diskgroup 5 (FLEX)
NOTE: LGWR found thread 1 closed at ABA 0.11262 lock domain=0 inc#=0 instnum=0
NOTE: LGWR mounted thread 1 for diskgroup 5 (FLEX)
NOTE: setting 11.2 start ABA for group FLEX thread 1 to 2.0
NOTE: LGWR opened thread 1 (FLEX) at fcn 0.0 ABA 2.0 lock domain=5 inc#=12 instnum=1 gx.incarn=1192816652 mntstmp=2017/07/03 10:39:08.437000
NOTE: cache mounting group 5/0x4718F00C (FLEX) succeeded
NOTE: cache ending mount (success) of group FLEX number=5 incarn=0x4718f00c
NOTE: Instance updated compatible.asm to 12.2.0.1.0 for grp 5 (FLEX).
NOTE: Instance updated compatible.asm to 12.2.0.1.0 for grp 5 (FLEX).
NOTE: Instance updated compatible.rdbms to 12.2.0.1.0 for grp 5 (FLEX).
NOTE: Instance updated compatible.rdbms to 12.2.0.1.0 for grp 5 (FLEX).
SUCCESS: diskgroup FLEX was mounted
NOTE: diskgroup resource ora.FLEX.dg is online
SUCCESS: CREATE DISKGROUP FLEX FLEX REDUNDANCY DISK 'AFD:FLEX1' SIZE 10239M
DISK 'AFD:FLEX2' SIZE 10239M
DISK 'AFD:FLEX3' SIZE 10239M
DISK 'AFD:FLEX4' SIZE 10239M
DISK 'AFD:FLEX5' SIZE 10239M
ATTRIBUTE 'compatible.asm'='12.2.0.1','compatible.rdbms'='12.2.0.1','compatible.advm'='12.2.0.1','au_size'='4M'
2017-07-03 10:39:09.429000 +01:00
NOTE: enlarging ACD to 2 threads for group 5/0x4718f00c (FLEX)
2017-07-03 10:39:11.438000 +01:00
SUCCESS: ACD enlarged for group 5/0x4718f00c (FLEX)
NOTE: Physical metadata for diskgroup 5 (FLEX) was replicated.
adrci>
一条命令引发了如此多的活动……笔者检查了磁盘组的属性,它看起来并没有很让我费解的地方。
SQL> select name, value from v$asm_attribute
2 where group_number = 5
3 and name not like 'template%';
NAME VALUE
------------------------------ ------------------------------
idp.type dynamic
idp.boundary auto
disk_repair_time 3.6h
phys_meta_replicated true
failgroup_repair_time 24.0h
thin_provisioned FALSE
preferred_read.enabled FALSE
sector_size 512
logical_sector_size 512
content.type data
content.check FALSE
au_size 4194304
appliance._partnering_type GENERIC
compatible.asm 12.2.0.1.0
compatible.rdbms 12.2.0.1.0
compatible.advm 12.2.0.1.0
cell.smart_scan_capable FALSE
cell.sparse_dg allnonsparse
access_control.enabled FALSE
access_control.umask 066
scrub_async_limit 1
scrub_metadata.enabled FALSE
22 rows selected.
我没制定任何故障组,所以隐式的将每块盘做成了一个故障组。
SQL> select name, os_mb, failgroup, path from v$asm_disk where group_number = 5;
NAME OS_MB FAILGROUP PATH
---------- ---------- ------------------------------ --------------------
FLEX1 10239 FLEX1 AFD:FLEX1
FLEX2 10239 FLEX2 AFD:FLEX2
FLEX3 10239 FLEX3 AFD:FLEX3
FLEX4 10239 FLEX4 AFD:FLEX4
FLEX5 10239 FLEX5 AFD:FLEX5
下面的是笔者的新磁盘组。你可以看到其中把Grid Infrastructure Management Repository (GIMR)单独分了个磁盘组叫+MGMT。此外笔者有一个磁盘组叫+OCR,笔者用它存放OCR和voting files。除了两个大家看名字就能猜出来干什么用的磁盘组+DATA和+RECO,还有刚刚新建的+FLEX磁盘组。
[oracle@rac122pri1 ~]$ asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 4194304 20476 17068 0 17068 0 N DATA/
MOUNTED FLEX N 512 512 4096 4194304 51180 50676 0 0 0 N FLEX/
MOUNTED EXTERN N 512 512 4096 4194304 40956 6560 0 6560 0 N MGMT/
MOUNTED NORMAL N 512 512 4096 4194304 15348 14480 5116 4682 0 Y OCR/
MOUNTED EXTERN N 512 512 4096 4194304 15356 15224 0 15224 0 N RECO/
[oracle@rac122pri1 ~]$
+FLEX的required_mirror_free_mb和 useable_file_mb值为0并不是bug,因为Flex冗余度的磁盘组就应该是这样。后面我们会使用其他查询方法来确定你的数据库的空间使用情况(下次更新会介绍)。
小 结
Flex ASM Disk Group非常的有趣,而且在读者测试Oracle 12.2时这个特性绝对值得关注。笔者承认12.2依然非常的新,而且笔者相信在第一个大补丁发布前,谨慎的人不会用它做生产使用。笔者依然非常好奇如何使用ADF才能改变自己与ASM相关的工作方式。它或许和ASMLib有点像,但目前还没搞清这个问题。
下一章将会讲一些理解Flex ASM disk group所需要的一些额外的概念。
相关推荐
- linux 查看当前应用内存状况,以及内存参数含义
-
1、查看进程号ps-ef|greptomcat2、查看当前内存分配,200ms打印一次jstat-gc进程号2001jstat-gc344802001S0CS1C...
- 如何显示 Linux 系统上的可用内存?这几个命令很好用!
-
在Linux系统中,了解可用内存是优化系统性能、故障排查以及资源管理的重要一环。本文将详细介绍如何在Linux系统上显示可用内存,包括多种方法和工具的使用。在讨论可用内存之前,我们需要了解一些...
- Linux 下查看内存使用情况方法总结
-
Q:我想监视Linux系统的内存使用情况,在Linux下有哪些视图或者命令行工具可用呢?在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内...
- 2、linux命令-用户管理
-
linux命令-用户管理用户切换[root@eric~]#sueric#切换到用户eric[eric@ericroot]$[eric@ericroot]$su#切换到rootPas...
- Centos 7 进入单用户模式详解
-
1、开机在启动菜单按e进入编辑模式找到linux16行,在最后添加init=/bin/sh编辑完后,按ctrl+x退出2、进单用户模式后,使用passwd修改密码,提示以下错误:passwd:Aut...
- 每日一个Linux命令解析——newusers
-
newusers:在Linux系统中,newusers是一个用于批量创建用户的命令。它从一个文件中读取多行用户信息,每行描述一个用户的详细信息,并根据这些信息创建多个用户或对现有用户进行批量修改。一...
- openEuler操作系统管理员指南:管理用户与用户组
-
在Linux中,每个普通用户都有一个账户,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义,其中最重要的是管理员账户,默认用户名是root。同时Linux也...
- Linux用户管理
-
1、用户信息文件/etc/passwdroot:x:0:0:root:/root:/bin/bash第一列:用户名第二列:密码位第三列:用户ID0超级用户UID。如果用户UID...
- centos7基础-用户、组、权限管理
-
用户和组(1)用户、组、家目录的概念linux系统支持多用户,除了管理员,其他用户一般不应该使用root,而是应该向管理员申请一个账号。组类似于角色,系统可以通过组对有共性的用户进行统一管理。每个用户...
- LINUX基础 ----------组及用户的概念
-
在Linux中,用户和组都是非常重要的概念,可以控制文件访问权限和资源的管理。用户是标识一个进程、应用程序或系统管理员的账号,Linux中每个用户用一个用户ID(UID)来标识。对于一个...
- 从零入门Linux(四)用户与权限管理
-
在Linux系统中,用户和权限管理是系统安全的重要组成部分。通过合理配置用户和权限,可以确保系统的安全性和资源的合理分配。以下是一些与用户和权限管理相关的常用命令和概念。1.用户管理1.1添加...
- 如何在 Linux 中管理用户?
-
在Linux系统中,用户是系统资源的主要使用者,每个用户都有一个唯一的标识符(用户ID)。为了更好地组织和管理用户,Linux还引入了用户组的概念。用户组是用户的集合,有助于更有效地分配权限和资...
- 在 Linux 中将用户添加到特定组的四种方法
-
在Linux多用户操作系统中,用户组管理是系统安全架构的基石。通过合理的组权限分配,管理员可以实现:精确控制文件访问权限(chmod775project/)简化批量用户权限管理(setfacl-...
- 我不是网管 - 如何在Ubuntu Linux下创建sudo用户
-
Sudo用户是Linux系统的普通用户,具有一定的管理权限,可以对系统执行管理任务。在Linux中,root是超级用户,拥有完全的管理权限,但不建议将root凭证授予其他用户或作为r...
- Linux创建普通用户,为密钥方式登录做准备
-
Hi,我是聪慧苹果8,就是江湖上人见人爱、花见花开,土到掉榨的Linux爱好者,一起学习吧!上一篇关于SSH安全加固的文字,有网友点评通过密钥登录更加安全,先创建一个普通用户,拒绝直接使用密码登录,这...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)