【Oracle 12c ASM专题】配额组的配额真的管用吗?
来源:互联网 发布:钓鱼网络是什么意思 编辑:程序博客网 时间:2024/04/28 16:50
原文连接:https://martincarstenbach.wordpress.com/2017/07/21/12-2-new-feature-the-flex-asm-disk-group-part-3/
本专题的上一部分中,我介绍了Flex ASM Diskgroup的两个相关概念,配额组和文件组。但配额组的配额是否真的写多少就是多少呢?(还是超出个百分之多少也没关系)我对此非常好奇。
幸运的是,我又发现了12c ASM相关的值得写博客跟大家分享的一些点,所以:
* 这并不是本专题的最后一章
* 这篇文章可能比前两篇稍短(因为把这篇文章和我想写的下一篇文章结合在一起真的太长了……)
配额组的配额是强制的吗?
其实配额组的目的就是限制磁盘组的配额,就像文件系统那样。这非常有意思,因为对于存放在某磁盘组中的某CDB/PDB(即使是non-CDB),你都可以给一个硬的限制来限制这个库在这个磁盘组上可使用的存储空间。
我将要回答的问题是:这个配额真的管用吗?如果你看了前两部分,你应该知道,我在Flex ASM Diskgroup上创建了两个数据库:ORCL和CDB,都是容器数据库。
我的文件组当前状态是酱紫的:
ASMCMD> lsfgFile Group Disk Group Quota Group Used Quota MB Client Name Client Type DEFAULT_FILEGROUP FLEX GENERIC 2488 CDB_CDB$ROOT FLEX QG_CDB 6744 CDB_CDB$ROOT DATABASE CDB_PDB$SEED FLEX QG_CDB 1656 CDB_PDB$SEED DATABASE PDB1 FLEX QG_CDB 1784 PDB1 DATABASE ORCL_CDB$ROOT FLEX GENERIC 9104 ORCL_CDB$ROOT DATABASE ORCL_PDB$SEED FLEX GENERIC 1616 ORCL_PDB$SEED DATABASE PDB1_0001 FLEX GENERIC 9424 PDB1 DATABASE
名为CDB的数据库用的是叫做QG_CDB的配额组,ORCL那个库没指定配额组,所以还用的默认配额组。我想让这个库使用新建的QG_ORCL这个配额组,因为我想让不同的库用不同的配额组。 :-)
ASMCMD> mkqg -G FLEX QG_ORCL quota 20GDiskgroup altered.ASMCMD> lsqgGroup_Num Quotagroup_Num Quotagroup_Name Incarnation Used_Quota_MB Quota_Limit_MB 2 1 GENERIC 1 22632 0 2 2 QG_ORCL 7 0 20480 2 3 QG_CDB 1 10184 20480 ASMCMD>
如果你看过前两部分,应该还记得名为Flex的Flex Diskgroup的磁盘组号原本是5,但重启机器后,磁盘组号从5变成了2。
SQL> select group_number, name, state, type from v$asm_diskgroup 2 where group_number = 2;GROUP_NUMBER NAME STATE TYPE------------ ------------------------------ ----------- ------ 2 FLEX CONNECTED FLEX
不要为此困扰 :-)
回到刚才的例子:文件组ORCL_CDB
ASMCMD> mvfg -G flex --filegroup PDB1_0001 QG_ORCLDiskgroup altered.ASMCMD> mvfg -G flex --filegroup ORCL_PDB$SEED QG_ORCLDiskgroup altered.ASMCMD> mvfg -G flex --filegroup ORCL_CDB$ROOT QG_ORCLDiskgroup altered.ASMCMD> lsfgFile Group Disk Group Quota Group Used Quota MB Client Name Client Type DEFAULT_FILEGROUP FLEX GENERIC 2488 CDB_CDB$ROOT FLEX QG_CDB 6744 CDB_CDB$ROOT DATABASE CDB_PDB$SEED FLEX QG_CDB 1656 CDB_PDB$SEED DATABASE PDB1 FLEX QG_CDB 1784 PDB1 DATABASE ORCL_CDB$ROOT FLEX QG_ORCL 9104 ORCL_CDB$ROOT DATABASE ORCL_PDB$SEED FLEX QG_ORCL 1616 ORCL_PDB$SEED DATABASE PDB1_0001 FLEX QG_ORCL 9424 PDB1 DATABASE ASMCMD> lsqgGroup_Num Quotagroup_Num Quotagroup_Name Incarnation Used_Quota_MB Quota_Limit_MB 2 1 GENERIC 1 2488 0 2 2 QG_ORCL 7 20144 20480 2 3 QG_CDB 1 10184 20480 ASMCMD>
现在我要把它占用的存储空间撑到配额组的配额极限,来看下配额组是不是真的靠谱。方法当然很简单:在ORCL库中创建一个表空间嘛。
SQL> show con_nameCON_NAME------------------------------PDB1SQL> create tablespace userdata datafile size 500m;create tablespace userdata datafile size 500m*ERROR at line 1:ORA-01119: error in creating database file '+FLEX'ORA-17502: ksfdcre:4 Failed to create file +FLEXORA-15437: Not enough quota available in quota group QG_ORCL.SQL>
这报错和我们之前创建pdb时指定storage子句的时候非常类似。但是,对于ASM上的非数据文件(例如参数文件,日志文件等)来说会怎样呢?
SQL> get /tmp/non_data_files 1 SELECT 2 f.group_number as DG_NUMBER, 3 f.file_number, 4 f.incarnation as file_incarnation, 5 f.type, 6 fg.name as filegroup_name, 7 a.name as file_name 8 FROM 9 v$asm_alias a, 10 v$asm_file f, 11 v$asm_filegroup fg 12 WHERE 13 a.group_number = f.group_number 14 AND 15 a.file_number = f.file_number 16 AND 17 a.file_incarnation = f.incarnation 18 AND 19 fg.group_number = f.group_number 20 AND 21 fg.filegroup_number = f.filegroup_number 22 AND 23* f.type 'DATAFILE';SQL> start /tmp/non_data_files DG_NUMBER FILE_NUMBER FILE_INCARNATION TYPE FILEGROUP_NAME FILE_NAME---------- ----------- ---------------- --------------- -------------------- ------------------------------ 2 282 948453843 PASSWORD DEFAULT_FILEGROUP pwdorcl.282.948453843 2 287 948462715 PASSWORD DEFAULT_FILEGROUP pwdorcl.287.948462715 2 293 948462849 CONTROLFILE ORCL_CDB$ROOT Current.293.948462849 2 292 948462849 CONTROLFILE ORCL_CDB$ROOT Current.292.948462849 2 294 948462855 ONLINELOG ORCL_CDB$ROOT group_2.294.948462855 2 295 948462855 ONLINELOG ORCL_CDB$ROOT group_1.295.948462855 2 296 948462861 ONLINELOG ORCL_CDB$ROOT group_1.296.948462861 2 297 948462861 ONLINELOG ORCL_CDB$ROOT group_2.297.948462861 2 304 948463227 ONLINELOG ORCL_CDB$ROOT group_3.304.948463227 2 305 948463231 ONLINELOG ORCL_CDB$ROOT group_3.305.948463231 2 306 948463239 ONLINELOG ORCL_CDB$ROOT group_4.306.948463239 2 307 948463243 ONLINELOG ORCL_CDB$ROOT group_4.307.948463243 2 298 948462891 TEMPFILE ORCL_CDB$ROOT TEMP.298.948462891 2 302 948462937 TEMPFILE ORCL_PDB$SEED TEMP.302.948462937 2 308 948463249 PARAMETERFILE ORCL_CDB$ROOT spfile.308.948463249 2 312 948464283 TEMPFILE PDB1_0001 TEMP.312.94846428316 rows selected.
新建一个online redo log试试:
SQL> alter database add logfile thread 1 size 1g;alter database add logfile thread 1 size 1g*ERROR at line 1:ORA-00301: error in adding log file '+FLEX' - file cannot be createdORA-17502: ksfdcre:4 Failed to create file +FLEXORA-15437: Not enough quota available in quota group QG_ORCL.
这些都证明了配额组确实是强制的。至少对于上面的例子来说是的。
小结
对于配额组来说,确实还有很多东中西值得探索,例如:自动扩展的数据文件、归档日志、临时文件以及undo文件等等。但是初步看来,配额组确实还不错。
- 【Oracle 12c ASM专题】配额组的配额真的管用吗?
- Oracle 12c ASM|专题配额组的配额真的管用吗?
- oracle数据库关于教育配额的函数
- 磁盘配额的wmi版本(C#)
- 磁盘配额的wmi版本(C#)
- linux的磁盘配额
- linux 的磁盘配额
- RH9 下的磁盘配额
- 磁盘配额 Quota的使用
- 磁盘配额quota的使用
- 关于磁盘配额的小记
- 修改Cinder的Volume配额
- 磁盘配额 Quota的使用
- 【Oracle】创建用户配额总是不足的解决问题 quota
- 磁盘配额的WMI版本(还是使用C#)
- Linux磁盘配额的设置与检测
- linux下的用户磁盘配额
- Linux的磁盘配额详解(Quota)
- ImageView嵌套进ScrollView,发现图片总是存在间隔
- php万年历
- Gson将字符串转map时,int、long默认为double类型
- 二维码和条形码
- vue学习笔记【基础篇一】
- 【Oracle 12c ASM专题】配额组的配额真的管用吗?
- 解析Javascript事件冒泡机制
- c++初级 之 c++的继承性
- IO
- 构建简易网络与网络设备的简单配置(Cisco Packet Tracer)第一弹:交换机VLAN配置
- Open Live Writer的配置
- jquery之select2.js控件
- js 函数表达式-递归 小例子
- APS.NET MVC4生成解析二维码简单Demo