安装ASM

配置ASMLIB 
(1)划分磁盘分区
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-522, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-522, default 522): 
Using default value 522

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
同上
fdisk /dev/sdc   /dev/sdd

不需要分区


(2)
/etc/init.d/oracleasm  用法
{start|stop|restart|enable|disable|configure|
createdisk|deletedisk|querydisk|listdisks|scandisks|status}

[root@localhost ~]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library
driver.  The following questions will determine whether the driver is
loaded on boot and what permissions it will have.  The current values
will be shown in brackets ('[]').  Hitting <ENTER> without typing an
answer will keep that current value.  Ctrl-C will abort.

Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver:                     [  OK  ]
Scanning the system for Oracle ASMLib disks:               [  OK  ]

(3)系统添加磁盘(注意是root用户)
[root@localhost dbs]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
Marking disk "VOL1" as an ASM disk:                        [  OK  ]
[root@localhost dbs]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1
Marking disk "VOL2" as an ASM disk:                        [  OK  ]
[root@localhost dbs]# /etc/init.d/oracleasm createdisk VOL3 /dev/sdd1
Marking disk "VOL3" as an ASM disk:                        [  OK  ]


(4)创建ASM初始化文件init+ASM.ora,在$ORACLE_HOME/dbs目录下
(可以理解为是ASM实例的pfile文件):(注意是oracle用户)
[oracle@localhost ~]$ cd  $ORACLE_HOME
[oracle@localhost db_1]$vim init+ASM.ora
*.asm_diskstring='ORCL:VOL*'
*.background_dump_dest='/db/oracle/admin/+ASM/bdump'
*.core_dump_dest='/db/oracle/admin/+ASM/cdump'
*.instance_type='asm'
*.large_pool_size=24M
*.remote_login_passwordfile='SHARED'
*.user_dump_dest='/db/oracle/admin/+ASM/udump'

(5)创建结构目录 (注意是oracle用户)
[oracle@localhost dbs]$ mkdir -p /db/oracle/admin/+ASM/udump

[oracle@localhost dbs]$ mkdir -p /db/oracle/admin/+ASM/bdump

[oracle@localhost dbs]$ mkdir -p /db/oracle/admin/+ASM/cdump


(6)创建asm实例的密码文件:

[oracle@localhost dbs]$ orapwd file=orapw+ASM password=dba

(7)添加css
 用root登陆
用法/db/oracle/product/10.2.0/db_1/bin/localconfig add/delet/reset
[root@localhost dbs]# /db/oracle/product/10.2.0/db_1/bin/localconfig add
/etc/oracle does not exist. Creating it now.
Successfully accumulated necessary OCR keys.
Creating OCR keys for user 'root', privgrp 'root'..
Operation successful.
Configuration for local CSS has been initialized
。。。。。。。
Oracle CSS service is installed and running under init(1M)




14.启动ASM实例

export ORACLE_SID=+ASM
[oracle@localhost dbs]sqlplus /nolog
SQL>conn / as sysdba
Connected to an idle instance.
初始化参数
SQL> create pfile from spfile;
SQL> show parameter asm;
SQL> startup
ASM instance started

Total System Global Area  142606336 bytes
Fixed Size		    2019128 bytes
Variable Size		  115421384 bytes
ASM Cache		   25165824 bytes
ORA-15110: no diskgroups mounted



15.创建磁盘组
SQL> create diskgroup 	dgroup1 normal redundancy 
  2  failgroup  fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'
  3  failgroup  fgroup2 disk'ORCL:VOL3','ORCL:VOL4';
  查看:

SQL> select name,state from v$asm_diskgroup;

如果没有mount上,只能手工挂载diskgroup
SQL>alter DISKGROUP  dgroup1 mount;
此时坚持asm_diskgroups参数值已经自动设置为DGPOUP1
这表明在下次启动asm实例的时候,这个diskgroup会自动挂载。
SQL>col name for a10
SQL>col type for a10
SQL>col value for a20
SQL> show parameter asm_diskgroups;

如果要卸载diskgroup,使用下面命令
SQL>alter diskgroup all dismount;

16.创建数据库实例

  第六步:选择asm

 第七步:如果磁盘组不是mount状态,则点击下面按钮,使之处于mount状态

 
17.启动ASM数据库

[oracle@localhost dbs]$ export ORACLE_SID=+ASM
[oracle@localhost dbs]sqllplus /nolog
SQL>conn / as sysdba
SQL> startup


18.关闭ASM数据库

先关闭实例,再关闭ASM实例

SQL>shutdown immediate




登陆ORCL实例

[oracle@server3 ~]$ export ORACLE_SID=ycj

[oracle@server3 ~]$ sqlplus
  
  Enter user-name: sys as sysdba
Enter password: 

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
ycj

SQL> select FILE_NAME ,TABLESPACE_NAME from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
+DATA1/ycj/datafile/users.259.780498043
USERS

+DATA1/ycj/datafile/sysaux.257.780498043
SYSAUX

+DATA1/ycj/datafile/undotbs1.258.780498043
UNDOTBS1


FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
+DATA1/ycj/datafile/system.256.780498041
SYSTEM

+DATA1/ycj/datafile/example.269.780498169
EXAMPLE


数据库的简单测试,测试ASM数据库的 automatic rebalance功能
添加两个虚拟硬盘,分别是sdf 和sdg,大小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_name,operation,state,est_work,sofar,
      2  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 

  

原文地址:https://www.cnblogs.com/yuchunju/p/2530960.html