日期:2014-05-16  浏览次数:20467 次

rhel4+oracle10g ASM配制及ASM与文件系统之间迁移

测试环境:rhel4/oel4 + oracle10g r2 + vmware9


先配制oracle yum
http://public-yum.oracle.com/
# cd /etc/yum.repos.d
# mv Oracle-Base.repo Oracle-Base.repo.disabled
# wget http://public-yum.oracle.com/public-yum-el4.repo

# wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el4 -O /usr/share/rhn/RPM-GPG-KEY-oracle
# gpg --quiet --with-fingerprint /usr/share/rhn/RPM-GPG-KEY-oracle



在oracle官网搜索:
keyword:  rhel4 oracleasmlib

http://www.oracle.com/technetwork/server-storage/linux/downloads/rhel4-092650.html#oracleasm_rhel4_amd64

注:虽然说官网都的提供那些包,可根据自己的系统版本(`uname -r`)下载,可是官网提供的rpm包可能不是精确的(比如我的版本是2.6.9-89.0.0.0.1.EL,可是官网提供和我相匹配的是2.6.9-89.EL),这样可能的后果就是安装好了包,却oracleasm configure 时出错,所以,只要下载oracle yum 中没有的包(oracleasmlib),其他的都用oracle yum安装  (yum install oracleasm-`uname -r`*)这种方法最保险

下面两个oracle rhel4的yum中好像没有
rpm -ivh oracleasm-2.6.9-89.EL-debuginfo.x86_64  --->(可不安装)
rpm -ivh oracleasmlib-2.0.4-1.el4.x86_64.rpm   --->(须要在上面网址下载)
[root@oracle10g /]# uname -r
2.6.9-89.0.0.0.1.EL
yum install oracleasm-support
yum install oracleasm-`uname -r`*
including :
oracleasm-2.6.9-89.0.0.0.1.EL.x86_64
oracleasm-2.6.9-89.0.0.0.1.ELlargesmp.x86_64
oracleasm-2.6.9-89.0.0.0.1.ELsmp.x86_64
oracleasm-2.6.9-89.0.0.0.1.ELxenU.x86_64



创建一个新分区
[root@oracle10g ~]#fdisk /dev/sdc

配置ASM

#[root@oracle10g ~]# /etc/init.d/oracleasm configure

创建ASM磁盘(asm磁盘组是在dbca中创建,这里创建的是asm磁盘而不是组)

[root@oracle10g ~]# /etc/init.d/oracleasm createdisk vol /dev/sdc1

    其中vol中asm磁盘名  把/dev/sdc1这个区作为asm磁盘


以root执行:($ORACLE_HOME/bin/localconfig add)
[root@oracle10g ~]#/u01/app/oracle/oracle/product/10.2.0/db_1/bin/localconfig add

[root@oracle10g ~]#export DISPLAY=:0.0
[root@oracle10g ~]#xhost +
[root@oracle10g ~]#su - oracle
[oracle@oracle10g ~]$dbca

图形界面配制略。

ASM实例:export ORACLE_SID=+ASM

查看ASM磁盘信息(v$asm_disk)
select name,failgroup from v$asm_disk;



查看ASM磁盘组信息(v$asm_diskgroup)
select name, type from v$asm_diskgroup;



在oracle实例中若查看到asm磁盘组的名字,则oracle实例可以访问并使用asm磁盘组
select name from v$asm_diskgroup;

创建完之后asm实例的pfile
init+ASM.ora
+ASM.asm_diskgroups='DB1','DB2'#Manual Mount
*.asm_diskgroups='DB1','DB2'
*.background_dump_dest='/u01/app/oracle/admin/+ASM/bdump'
*.core_dump_dest='/u01/app/oracle/admin/+ASM/cdump'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='SHARED'
*.user_dump_dest='/u01/app/oracle/admin/+ASM/udump'



访问asm磁盘上的数据
[oracle@oracle10g ~]$export ORACLE_SID=+ASM
[oracle@oracle10g ~]$asmcmd



要asm上创建表空间
create smallfile tablespace user2 datafile '+DB1' size 100m autoextend on;



sys@DNDN> select name from v$datafile;

NAME
----------------------------------------------------------------
/u01/app/oracle/oradata/dndn/system.dbf
+DB1/dndn/datafile/user2.256.829002129
/u01/app/oracle/oradata/dndn/sysaux.dbf
/u01/app/oracle/oradata/dndn/users01.dbf
/u01/app/oracle/oradata/dndn/undotbs.dbf





ASM文件迁移
使用rman 的方式(若不能脱机的表空间,则在mount下操作)
1,users表空间的迁移(从文件系统到asm)
rman>backup tablespace users;
rman>run{
sql 'alter tablespace users offline immediate';
set newname for datafile 4 to '+DB1';
restore tablespace users;
switch datafile 4;
recover tablespace users;
sql 'alter tablespace users online';
}

下面写法和上面一样(但一个表空间可能有多个数据文件):
rman>run{
sql 'alter database datafile 4 offline';
set newname for datafile 4 to '+DB1';
restore datafile 4;