暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

手工创建ASM实例及磁盘组

eygle 2019-09-19
2493

在Oracle Database 10g中,除了使用图形界面之外,也可以使用手工方式来创建ASM实例及磁盘组,这个过程和手工创建一个数据库实例完全一致。


创建ASM实例只需要一个参数文件,主要需要的参数如下:


$ cd $ORACLE_HOME/dbs
$ vi init+ASM.ora
*.asm_diskstring='ORCL:VOL*'
*.background_dump_dest='/opt/oracle/admin/+ASM/bdump'
*.core_dump_dest='/opt/oracle/admin/+ASM/cdump'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='SHARED'
*.user_dump_dest='/opt/oracle/admin/+ASM/udump'


然后可以创建一个密码文件:


$ cd $ORACLE_HOME/dbs
$ orapwd file=orapw+ASM password=oracle


创建必要的目录结构:


$ su – oracle
$ mkdir -p $ORACLE_BASE/admin/+ASM/udump
$ mkdir -p $ORACLE_BASE/admin/+ASM/bdump
$ mkdir -p $ORACLE_BASE/admin/+ASM/cdump


在Oracle Database 10g中,启动ASM实例需要先启动Oracle集群同步服务(CSS),如果在创建ASM实例前没有启动该服务,创建或启动ASM实例就会出现如下错误:


SQL> startup
ORA-29701: unable to connect to Cluster Manager


在Windows图形界面上会报出如图6-13所示的错误。


企业微信截图_15688649904791.png

图6-13 Oracle 10g中的CSS配置提示


在命令行执行localconfig add命令可以创建CSS服务:


C:\>localconfig add
Step 1:  creating new OCR repository
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'eygle', privgrp ''..
Operation successful.
Step 2:  creating new CSS service
successfully created local CSS service
successfully added CSS to home


这个服务在Windows上通过ocssd.exe应用启动,在Linux/Solaris上通过ocssd.bin启动。OCSSD在RAC和单实例的ASM环境中同样需要,Oracle通过OCSSD进行数据库实例和磁盘组的通信。


在安装了Oracle软件之后,OCSSD的相关组件被安装,这些组件包括以下几项。


 · $ORACLE_HOME/bin/ocssd:这是一个Shell脚本文件,用于调用OCSSD可执行文件。

 · $ORACLE_HOME/bin/ocssd.bin:这是OCSSD可执行文件(当然在Windows上是ocssd.exe)。

 · $ORACLE_HOME/css/admin/init.cssd:init.cssd这个脚本会被复制到init.d目录用于启动(例如Linux /etc/init.d/)。

 · $ORACLE_HOME/css/admin/inittab_local:这个信息将被加入/etc/inittab,用于系统启动后自动加载OCSSD服务。当执行“localconfig add”命令时,这个启动信息会被加入/etc/inittab文件。


检查/etc/inittab文件,可以发现以下一行记录:


h1:35:respawn:/etc/init.d/init.cssd run >/dev/null 2>&1 </dev/null


检查服务是否启动:


# ps -ef|grep ocssd|grep -v grep
  oracle  1386     1  0   Mar 27 ?        0:05 /opt/oracle/product/10.2.0/bin/ocssd.bin


启动了这个服务之后,就可以启动实例:


$ export ORACLE_SID=+ASM
$ sqlplus / as sysdba
SQL> startup
ASM instance started
Total System Global Area  100663296 bytes
Fixed Size                   777616 bytes
Variable Size              99885680 bytes
Database Buffers                  0 bytes
Redo Buffers                      0 bytes
ORA-15110: no diskgroups mounted


注意最后有一个错误提示没有磁盘组被加载,因为这是首次启动ASM实例,尚未创建磁盘组,所以显示15110错误是正常的。


可以创建spfile,重新启动ASM实例:


SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL> startup;



此后可以使用划分好的磁盘手工创建diskgroup(此处执行了FailGroup):


SQL> create diskgroup dgroup1 normal redundancy
  2  failgroup fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'
  3  failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';
Diskgroup created.


如果要创建外部冗余的磁盘组,可以使用类似如下命令:


CREATE DISKGROUP oradg External REDUNDANCY 
DISK 'ORCL:VOL1' SIZE 19077M ,'ORCL:VOL2' SIZE 19077M ,
'ORCL:VOL3' SIZE 19077M ,'ORCL:VOL4' SIZE 12228M


创建磁盘组之后可以使用如下命令查看磁盘组的状态:


SQL> select name,state from v$asm_diskgroup;
NAME       STATE
---------- ----------------------
DGROUP1    MOUNTED


如果上述命令返回的STATE是DISMOUNTED,那么可以使用如下命令手工加载磁盘组:


SQL> ALTER DISKGROUP dgroup1 MOUNT;
Diskgroup altered.


此时检查数据库初始化参数,发现asm_diskgroups参数值已经自动设置为DGROUP1,这表明在下次启动ASM实例的时候,这个diskgroup会被自动挂载。


SQL> show parameter asm_diskgroups
NAME                                 TYPE       VALUE
------------------------------------ ---------- ------------------------------
asm_diskgroups                       string     DGROUP1


如果要卸载diskgroup,使用下面的命令:


ALTER DISKGROUP ALL DISMOUNT;


如前文所述,在Oracle Database 11g中,ASM的配置和数据库独立开来,其主要程序需要随GI安装,所以在没有GI支持的情况下,是无法向10g那样创建和启动ASM实例的,如图6-14所示:


企业微信截图_15688652181002.png

图6-14:Oracle Database 11gR2中ASM依赖于GI

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论