• 11g 安装grid软件,cssd的服务就要开启 asmca 创建asm实例管理磁盘 asmca 管理diskgroup dbca 管理 database • 10g 要装oracleasm-s
• 11g 安装grid软件,cssd的服务就要开启
asmca 创建asm实例管理磁盘
asmca 管理diskgroup
dbca 管理 database
• 10g 要装oracleasm-supper
/etc/init.dcssd start
asmca
internal:外部冗余 ,至少1个磁盘
normal:正常冗余,至少2个磁盘
high:高级冗余。如果磁盘业务数据库只能使用磁盘的三分之一,其他做备份。至少3个磁盘
1 磁盘准备
准备好asm需要的磁盘(分区,格式化)
/etc/udev/rules.d 在这个目录下修改文件60-raw.rules 中的配置
[oracle@myvm64 rules.d]$ vim /etc/udev/rules.d/60-raw.rules ample would be:# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw3 %N" ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw4 %N"# to bind /dev/raw/raw1 to /dev/sda, or# ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"# to bind /dev/raw/raw2 to the device with major 8, minor 1.# 在里面添加上面每一个磁盘的配置
cp 99-fuse.rules 99-asm.rules 里面设置绑定的名字,用户,组,权限至少是644的
[root@myvm64 rules.d]# vim 99-asm.rules ERNEL=="raw*", MODE="0644",OWNER="oracle",GROUP="oinstall"
[root@myvm64 rules.d]# start_udevStarting udev: [ OK ]
在oracle用下先运行grid 环境变量,再运行asmca 命令
填入数据库创建的时候的四个密码,点击右下角的Specify Disk Group
勾选好需要的磁盘,填写磁盘组的名字,点击OK
注意:磁盘组的名字前面不写“+”。
点击最右下角的Create Asm
等待创建成功
检查服务,crs_stat -t 能看到上面创建的ND 和CND 的磁盘组的服务
----------------------------------------ora.CND.dg ora....up.type ONLINE ONLINE myvm64 ora.ND.dg ora....up.type ONLINE ONLINE myvm64 ora.asm ora.asm.type ONLINE ONLINE myvm64 ora.cssd ora.cssd.type ONLINE ONLINE myvm64 ora.diskmon ora....on.type OFFLINE OFFLINE ora.evmd ora.evm.type ONLINE ONLINE myvm64 ora.ons ora.ons.type OFFLINE OFFLINE ora.orcl.db ora....se.type ONLINE ONLINE myvm64
登录数据库检查磁盘组的挂在情况
SQL> select group_number,name,state from v$asm_diskgroup;GROUP_NUMBER NAME STATE------------ ------------------------------ ----------- 1 ND MOUNTED 2 CND MOUNTED
当前磁盘组已经是挂载的。如果没挂在,可以用脚本进行挂载
alter diskgroup group_name mount; 挂载
alter diskgroup group_name dismount; 卸载
alter diskgroup <> add ‘/’ 对磁盘组增加磁盘
alter diskgroup <> drop '/' 对磁盘组删除
SQL> alter diskgroup ND dismount;alter diskgroup ND dismount*ERROR at line 1:ORA-15000: command disallowed by current instance type
上面取消挂载失败,因为我们当前使用的是oracle的实例orcl,所以报错也已经提示来实例不对,下面我们可以通过简单的ps -ef|grep asm 来看看asm的实例名是什么
[root@myvm64 /]# ps -ef|grep asmoracle 21306 1 0 21:43 ? 00:00:00 asm_pmon_+ASMoracle 21308 1 0 21:43 ? 00:00:00 asm_psp0_+ASMoracle 21310 1 2 21:43 ? 00:00:41 asm_vktm_+ASMoracle 21314 1 0 21:43 ? 00:00:00 asm_gen0_+ASMoracle 21316 1 0 21:43 ? 00:00:00 asm_diag_+ASMoracle 21318 1 0 21:43 ? 00:00:01 asm_dia0_+ASMoracle 21320 1 0 21:43 ? 00:00:00 asm_mman_+ASMoracle 21322 1 0 21:43 ? 00:00:00 asm_dbw0_+ASMoracle 21324 1 0 21:43 ? 00:00:00 asm_lgwr_+ASMoracle 21326 1 0 21:43 ? 00:00:00 asm_ckpt_+ASMoracle 21328 1 0 21:43 ? 00:00:00 asm_smon_+ASMoracle 21330 1 0 21:43 ? 00:00:00 asm_rbal_+ASMoracle 21332 1 0 21:43 ? 00:00:01 asm_gmon_+ASMoracle 21334 1 0 21:43 ? 00:00:00 asm_mmon_+ASMoracle 21336 1 0 21:43 ? 00:00:00 asm_mmnl_+ASMroot 27904 11935 0 22:12 pts/1 00:00:00 grep asm# 可以看出asm的实例是+ASM
设置实例后重新挂载或者卸载 ,在上面的asm图像界面上也可以挂载或者卸载。
2 在asmcmd 终端里面查看信息和操作
[oracle@myvm64 rules.d]$ asmcmdConnected to an idle instance.sh: /data/oracle/u01/product/11g/orale/bin/clsecho: No such file or directoryASMCMD> # 由于当前实例写的是oracle的实例,所以asmcmd 环境链接是空实例
show all 可以看出asmcmd 环境下可以执行类似与linux命令
ASMCMD> show all; commands: -------- md_backup, md_restore lsattr, setattr cd, cp, du, find, help, ls, lsct, lsdg, lsof, mkalias mkdir, pwd, rm, rmalias chdg, chkdg, dropdg, iostat, lsdsk, lsod, mkdg, mount offline, online, rebal, remap, umount dsget, dsset, lsop, shutdown, spbackup, spcopy, spget spmove, spset, startup chtmpl, lstmpl, mktmpl, rmtmpl chgrp, chmod, chown, groups, grpmod, lsgrp, lspwusr, lsusr mkgrp, mkusr, orapwusr, passwd, rmgrp, rmusr volcreate, voldelete, voldisable, volenable, volinfo volresize, volset, volstat
3 在rman中对数据库备份后迁移到asm磁盘组中
3.1 数据库文件迁移到asm磁盘组中
将数据库启动到mount 状态下打开归档功能
SQL> startup mount;ORACLE instance started.Total System Global Area 413372416 bytesFixed Size 2228904 bytesVariable Size 310381912 bytesDatabase Buffers 96468992 bytesRedo Buffers 4292608 bytesDatabase mounted.SQL> alter database archivelog;Database altered.
打开数据库
SQL> alter database open;Database altered.
做几次alter system switch logfile;
SQL> alter system switch logfile;System altered.SQL> l 1* alter system switch logfileSQL> /System altered.
3.2 rman 备份数据库
Recovery Manager: Release 11.2.0.3.0 - Production on Sat Dec 17 22:46:01 2016Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.connected to target database: ORCL (DBID=1458628377)RMAN> backup database;Starting backup at 17-DEC-16using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=30 device type=DISKchannel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00001 name=/data/oracle/u01/product/11g/oradata/orcl/system01.dbfinput datafile file number=00002 name=/data/oracle/u01/product/11g/oradata/orcl/sysaux01.dbfinput datafile file number=00003 name=/data/oracle/u01/product/11g/oradata/orcl/undotbs01.dbfinput datafile file number=00004 name=/data/oracle/u01/product/11g/oradata/orcl/users01.dbfchannel ORA_DISK_1: starting piece 1 at 17-DEC-16channel ORA_DISK_1: finished piece 1 at 17-DEC-16piece handle=/data/oracle/u01/product/11g/fast_recovery_area/ORCL/backupset/2016_12_17/o1_mf_nnndf_TAG20161217T224617_d5bmxvrc_.bkp tag=TAG20161217T224617 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:02:49channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setincluding current control file in backup setincluding current SPFILE in backup setchannel ORA_DISK_1: starting piece 1 at 17-DEC-16channel ORA_DISK_1: finished piece 1 at 17-DEC-16piece handle=/data/oracle/u01/product/11g/fast_recovery_area/ORCL/backupset/2016_12_17/o1_mf_ncsnf_TAG20161217T224617_d5bn36vz_.bkp tag=TAG20161217T224617 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:04Finished backup at 17-DEC-16
检查哪个磁盘组大就迁移到哪个磁盘组下面:
SQL> select name,total_mb from v$asm_diskgroup;NAME TOTAL_MB------------------------------ ----------ND 10228CND 10228# 我们设置的两个磁盘组一样大,所以随便哪个都可以了
数据库启动到mount状态下
SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup mount;ORACLE instance started.Total System Global Area 413372416 bytesFixed Size 2228904 bytesVariable Size 310381912 bytesDatabase Buffers 96468992 bytesRedo Buffers 4292608 bytesDatabase mounted.
在asmcmd环境下准备好磁盘文件存放的位置
ASMCMD> ls CND/ND/ASMCMD> cd NDASMCMD> mkdir datafileASMCMD> cd datafileASMCMD> mkdir orclASMCMD> cd orclASMCMD> mkdir oradataASMCMD> pwd+ND/datafile/orclASMCMD>
在rman环境下编写脚本进行迁移(数据库一定要是在mount状态下的)
[root@myvm64 tmp]# cat tmpasm.sql run{set newname for database to '+ND/datafile/orcl/oradata%b';restore database;recover database;switch datafile all;}# 在rman中允许这个脚本RMAN> @ /tmp/tmpasm.sqlRMAN> run{2> set newname for database to '+ND/datafile/orcl/oradata%b';3> restore database;4> recover database;5> switch datafile all;6> }executing command: SET NEWNAMEStarting restore at 18-DEC-16using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=19 device type=DISKchannel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00001 to +ND/datafile/orcl/oradatasystem01.dbfchannel ORA_DISK_1: restoring datafile 00002 to +ND/datafile/orcl/oradatasysaux01.dbfchannel ORA_DISK_1: restoring datafile 00003 to +ND/datafile/orcl/oradataundotbs01.dbfchannel ORA_DISK_1: restoring datafile 00004 to +ND/datafile/orcl/oradatausers01.dbfchannel ORA_DISK_1: reading from backup piece /data/oracle/u01/product/11g/fast_recovery_area/ORCL/backupset/2016_12_17/o1_mf_nnndf_TAG20161217T224617_d5bmxvrc_.bkpchannel ORA_DISK_1: piece handle=/data/oracle/u01/product/11g/fast_recovery_area/ORCL/backupset/2016_12_17/o1_mf_nnndf_TAG20161217T224617_d5bmxvrc_.bkp tag=TAG20161217T224617channel ORA_DISK_1: restored backup piece 1channel ORA_DISK_1: restore complete, elapsed time: 00:06:43Finished restore at 18-DEC-16Starting recover at 18-DEC-16using channel ORA_DISK_1starting media recoverymedia recovery complete, elapsed time: 00:00:01Finished recover at 18-DEC-16datafile 1 switched to datafile copyinput datafile copy RECID=5 STAMP=930919904 file name=+ND/datafile/orcl/oradatasystem01.dbfdatafile 2 switched to datafile copyinput datafile copy RECID=6 STAMP=930919904 file name=+ND/datafile/orcl/oradatasysaux01.dbfdatafile 3 switched to datafile copyinput datafile copy RECID=7 STAMP=930919904 file name=+ND/datafile/orcl/oradataundotbs01.dbfdatafile 4 switched to datafile copyinput datafile copy RECID=8 STAMP=930919904 file name=+ND/datafile/orcl/oradatausers01.dbfRMAN> **end-of-file**
数据文件已经迁移
SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------+ND/datafile/orcl/oradatasystem01.dbf+ND/datafile/orcl/oradatasysaux01.dbf+ND/datafile/orcl/oradataundotbs01.dbf+ND/datafile/orcl/oradatausers01.dbf
修改控制文件的路径
SQL> alter system set control_files='+ND/datafile/orcl/control.ctl' scope=spfile;System altered.# 这里只指定了一个控制文件,当然正式生产中至少指定两个以上的控制文件,且路径放在不同的磁盘中
数据库重启到nomount状态下
RMAN> restore controlfile from '/data/oracle/u01/product/11g/fast_recovery_area/ORCL/backupset/2016_12_17/o1_mf_ncsnf_TAG20161217T224617_d5bn36vz_.bkp';Starting restore at 18-DEC-16using channel ORA_DISK_1channel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:07output file name=+ND/datafile/orcl/control.ctlFinished restore at 18-DEC-16# restore 后面的路径是之前备份的控制文件路径
查看控制文件路径
SQL> show parameter control_files;NAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string +ND/datafile/orcl/control.ctl
数据库启动到mount状态下查看当前控制文件,数据文件,日志文件的路径
SQL> select name from v$controlfile;NAME--------------------------------------------------------------------------------+ND/datafile/orcl/control.ctlSQL> select member from v$logfile;MEMBER--------------------------------------------------------------------------------/data/oracle/u01/product/11g/oradata/orcl/redo03.log/data/oracle/u01/product/11g/oradata/orcl/redo02.log/data/oracle/u01/product/11g/oradata/orcl/redo01.log
迁移日志文件到asm磁盘组。日志文件的路径在控制文件中配置的,所以要修改控制文件
SQL> alter database backup controlfile to trace as '/tmp/cron.ctl';Database altered.# 控制文件导出到pfile,修改后再允许就可以了。