扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
用dbca创建数据库,一直到选择数据类型的画面以前都跟创建普通数据库没有区别。
下面是dbca创建数据库的第6步画面,普通的数据库我们通常选择File System,而ASM类型的数据库我们则要选择“Automatic Storage Management”。
继续往下的步骤,跟创建普通数据库已经没有什么区别了。不再赘述。
由于启动ASM数据库必须要先启动ASM实例,所以基本上启动步骤如下。
<!--[if !supportLists]-->1. <!--[endif]-->以oracle用户进入操作系统
<!--[if !supportLists]-->2. <!--[endif]-->$ export ORACLE_SID=+ASM
<!--[if !supportLists]-->3. <!--[endif]-->SQL> sqlplus / as sysdba
<!--[if !supportLists]-->4. <!--[endif]-->SQL> startup
<!--[if !supportLists]-->5. <!--[endif]-->SQL> exit
<!--[if !supportLists]-->6. <!--[endif]-->$ export ORACLE_SID=
<!--[if !supportLists]-->7. <!--[endif]-->SQL> sqlplus / as sysdba
<!--[if !supportLists]-->8. <!--[endif]-->SQL> startup
测试ASM数据库的automatic rebalance功能
添加两个虚拟硬盘,分别是sdf和sdg,大小
启动系统,启动ASM实例,启动数据库实例
创建ASM磁盘
#/etc/init.d/oracleasm createdisk VOL5 /dev/sdf
#/etc/init.d/oracleasm createdisk VOL6 /dev/sdg
登入ASM实例检查v$asm_disk视图,发现这两个新加的硬盘已经找到了
将硬盘添加到磁盘组中
SQL> ALTER DISKGROUP DGROUP1 ADD FAILGROUP FGROUP1 DISK 'ORCL:VOL5' FAILGROUP FGROUP2 DISK 'ORCL:VOL6';
Diskgroup altered.
检查数据库的auto rebalance工作进度,数据库正在将原来分布在两个磁盘上的数据平均分配到三个磁盘上
SQL> SELECT group_number, operation, state, est_work, sofar, est_rate, est_minutes FROM v$asm_operation;
GROUP_NUMBER
------------ ---------- -------- ---------- ---------- ---------- -----------
1 REBAL RUN 416 0 0 0
SQL> /
GROUP_NUMBER
------------ ---------- -------- ---------- ---------- ---------- -----------
1 REBAL RUN 275 39 148 1
SQL> /
以上表示数据重新分配的工作已经成功完成
SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;
NAME ALLOCATION_UNIT_SIZE TOTAL_MB
------------------------------ -------------------- ----------
DGROUP1 1048576 5120
现在磁盘组空间总共是
登入数据库实例
创建一个自己的表空间,创建一个用户,创建一个表
SQL> create tablespace ts_test datafile '+DGROUP1' size
Tablespace created.
SQL> create user kamus identified by pass default tablespace ts_test;
User created.
SQL> grant dba to kamus;
Grant succeeded.
SQL> conn kamus/pass
Connected.
SQL> create table t_test as select * from dba_objects;
Table created.
SQL> select count(*) from t_test;
COUNT(*)
----------
10319
登入ASM实例,将磁盘从磁盘组中删除
SQL> alter diskgroup dgroup1 drop disk VOL4;
Diskgroup altered.
SQL> SELECT group_number, operation, state, est_work, sofar, est_rate, est_minutes FROM v$asm_operation;
GROUP_NUMBER
------------ ---------- -------- ---------- ---------- ---------- -----------
1 REBAL RUN 566 46 151 3
SQL> select name,allocation_unit_size,total_mb from v$asm_diskgroup;
NAME ALLOCATION_UNIT_SIZE TOTAL_MB
------------------------------ -------------------- ----------
DGROUP1 1048576 4096
Executed in 0.13 seconds
SQL> select label,failgroup from v$asm_disk;
LABEL FAILGROUP
------------------------------- ------------------------------
VOL1 FGROUP1
VOL2 FGROUP1
VOL3 FGROUP2
VOL5 FGROUP1
VOL6 FGROUP2
可以看到磁盘组的总容量已经减少了,磁盘数目也减少了
有些文档上说删除了磁盘之后要执行:ALTER DISKGROUP REBALANCE
但是发现不需要手动执行,整个REBALANCE的工作确实是自动的,当删除磁盘以后,数据库自动开始作REBALANCE了
为了两个FAILGROUP的大小相同,再删除一个磁盘
SQL> alter diskgroup dgroup1 drop disk VOL2;
Diskgroup altered.
我们可以从下面的SQL知道在ASM实例中可以查询到所有可以用的磁盘,而在数据库实例中只可以查询到让自己使用的磁盘
ASM实例:
SQL> SELECT disk_number, label FROM V$asm_disk;
DISK_NUMBER LABEL
----------- --------------------------------------------------------------
0 VOL4
1 VOL2
0 VOL1
2 VOL3
4 VOL5
5 VOL6
数据库实例:
SQL> SELECT disk_number, label FROM V$asm_disk;
DISK_NUMBER LABEL
----------- -------------------------------
0 VOL1
2 VOL3
4 VOL5
5 VOL6
通过上面简单的测试,我们已经可以基本领略到ASM数据库在数据文件存储方面的强大功能,欢迎大家对于ASM数据库进行更深入的讨论。
如果有任何问题,可以到www.itpub.net的Oracle如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者