科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道创建Oracle10g ASM数据库(三)

创建Oracle10g ASM数据库(三)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

跟创建普通数据库没有区别。 下面是dbca创建数据库的第6步画面,普通的数据库我们通常选择File System,而ASM类型的数据库我们则要选择“Automatic Storage Management”。 下一步。

作者:中国IT实验室 来源:中国IT实验室 2007年9月15日

关键字: ASM 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

 

创建ASM数据库

dbca创建数据库一直到选择数据类型的画面以前都跟创建普通数据库没有区别。

下面是dbca创建数据库的第6步画面普通的数据库我们通常选择File SystemASM类型的数据库我们则要选择Automatic Storage Management

 

 

 

 

 


下一步,oracle将自动检查出已经加载的Diskgroup,在这个界面我们可以通过Create New按钮创建新的Diskgroup,也可以通过Add Disks按钮向当前的磁盘组中添加额外的磁盘,当然这些磁盘必须是先用oracleasm createdisk过的(在第4章节的创建ASM磁盘部分有所叙述)。



在数据文件的位置管理设定界面,通常应该使用OMF,由oracle自己管理数据文件的命名,这样才算是进一步解放了DBA对于物理存储方面的繁琐工作。



继续往下的步骤,跟创建普通数据库已经没有什么区别了。不再赘述。

 

启动ASM数据库的步骤

由于启动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数据库的简单测试

测试ASM数据库的automatic rebalance功能

 

添加两个虚拟硬盘分别是sdfsdg大小500M

启动系统,启动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 OPERATION  STATE      EST_WORK      SOFAR   EST_RATE EST_MINUTES

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

           1 REBAL      RUN             416          0          0           0

          

SQL> /

 

GROUP_NUMBER OPERATION  STATE      EST_WORK      SOFAR   EST_RATE EST_MINUTES

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

           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

 

现在磁盘组空间总共是5120M

 

登入数据库实例

创建一个自己的表空间,创建一个用户,创建一个表

 

SQL> create tablespace ts_test datafile '+DGROUP1' size 200M;

 

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 OPERATION  STATE      EST_WORK      SOFAR   EST_RATE EST_MINUTES

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

           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.netOracle10g和新技术板块进行讨论,也可以给我发邮件,邮件地址: kamus@itpub.net

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章