oracle_asm安装

oracle_asm安装(下)

安装Oracle10g

在RHEL3 上安装Oracle10g 已经是非常简单的操作了,只要系统内核参数设置正确,几乎不会碰到任何问题。

从以下连接可以得到在RHEL3 上安装Oracle10g 的详细步骤,本文不再赘述。

http://www.puschitz.com/InstallingOracle10g.shtml

在安装Oracle10g 的时候,我们选择不创建数据库,只安装软件的方式,在软件安装结束以后再通过dbca 来创建ASM 实例和数据库。

创建ASM实例

1. 创建初始化文件

$ su – oracle

$ cd $ORACLE_HOME/dbs

$ vi init+ASM.ora

创建asm 实例的初始化脚本,脚本内容如下所示:

# ******Below is init script for asm instance******

*.asm_diskstring='ORCL:VOL*'

*.background_dump_dest='/oracle/admin/+ASM/bdump'

*.core_dump_dest='/oracle/admin/+ASM/cdump'

*.instance_type='asm'

*.large_pool_size=12M

*.remote_login_passwordfile='SHARED'

*.user_dump_dest='/oracle/admin/+ASM/udump'

# ******Above is init script for asm instance******

说明:

1. dump 目录指向$ORACLE_BASE/<sid>,本文中ASM 实例的SID 是+ASM。最好不要修改这个实例名,否则在下一步用dbca 创建数据库的时候,dbca 将找不到可用的磁盘组,我想这应该是dbca 的一个bug,手工创建ASM 类型的数据库就应该没有这个限制了。

2. asm_diskstring 用于实例启动的时候检查可用的ASM 磁盘,由于我们前面创建ASM磁盘的名称是VOL1 到VOL4,所以我们此处使用*通配符,前面的’ORCL:’不可以省略,否则ASM 实例将无法检查到磁盘。

2. 创建密码文件

$ su – oracle

$ cd $ORACLE_HOME/dbs

$ orapwd file=orapw+ASM password=dba

3. 创建目录结构

$ su – oracle

$ cd $ORACLE_HOME/dbs

$ mkdir –p $ORALCE_BASE/admin/+ASM/udump

$ mkdir –p $ORALCE_BASE/admin/+ASM/bdump

$ mkdir –p $ORALCE_BASE/admin/+ASM/cdump

4. 启动实例

$ 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 实例,还没有创建diskgroup,所以显示15110 错误是正常的。

如果启动实例的时候碰到如下报错:

ORA-29701: unable to connect to Cluster Manager

那么请检查/etc/inittab 文件,看看是否有下面这行

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

如果没有请添加,如果被注释了请取消注释。

5. 创建spfile,重新启动

SQL> create spfile from pfile;

SQL> shutdown immediate;

SQL> startup;

6. 创建diskgroup

SQL> create diskgroup dgroup1 normal redundancy

2 failgroup fgroup1 disk 'ORCL:VOL1','ORCL:VOL2'

3 failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';

Diskgroup created.

SQL> col name for a10

SQL> select name,state from v$asm_diskgroup;

NAMESTATE

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

DGROUP1 MOUNTED

如果上述命令返回的state 是DISMOUNTED,那么我们需要手工将挂载diskgroup

SQL> ALTER DISKGROUP dgroup1 MOUNT;

Diskgroup altered.

此时检查数据库初始化参数,发现asm_diskgroups 参数值已经自动设置为DGROUP1,

这表明在下次启动asm 实例的时候,这个diskgroup 会被自动挂载。

SQL> col name for a10

SQL> col type for a10

SQL> col value for a20

SQL> show parameter asm_diskgroups

NAME TYPE VALUE

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

asm_diskgroups string DGROUP1

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

ALTER DISKGROUP ALL DISMOUNT;

创建ASM数据库

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

下面是dbca 创建数据库的第6 步画面,普通的数据库我们通常选择File System,而ASM

类型的数据库我们则要选择“Automatic Storage Management”。


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


在数据文件的位置管理设定界面,通常应该使用OMF,由oracle 自己管理数据文件的命名,

这样才算是进一步解放了DBA 对于物理存储方面的繁琐工作。


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

启动ASM数据库的步骤

由于启动ASM 数据库必须要先启动ASM 实例,所以基本上启动步骤如下。

1. 以oracle 用户进入操作系统

2. $ export ORACLE_SID=+ASM

3. SQL> sqlplus / as sysdba

4. SQL> startup

5. SQL> exit

6. $ export ORACLE_SID=<your_real_db_sid>

7. SQL> sqlplus / as sysdba

8. SQL> startup

ASM数据库的简单测试

测试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_number, operation, state, est_work, sofar, est_rate,

est_minutes FROM v$asm_operation;

GROUP_NUMBER OPERATIONSTATE EST_WORK SOFAR

EST_RATE EST_MINUTES

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

1 REBAL RUN 416 0 0

0

SQL> /

GROUP_NUMBER OPERATIONSTATE 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 OPERATIONSTATE 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值