侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

数据库迁移到asm磁盘组

2023-12-04 星期一 / 0 评论 / 0 点赞 / 72 阅读 / 15143 字

• 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,修改后再允许就可以了。

    

广告 广告

评论区