1.配置裸设备
磁盘分区
查询数据库中每个数据文件大小,方便后面规划每个裸设备大小
SQL>select tablespace_name,bytes/power(1024,2) mb from dba_data_files order by 2 desc;
TABLESPACE_NAME MB
------------------------------ ----------
SYSTEM 480
SYSAUX 240
EXAMPLE 100
UNDOTBS1 30
USERS 5
使用fdisk命令对磁盘进行分区
[root@dg1 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): +481M
Command (m for help): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 59 473886 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (60-261, default 60):
Using default value 60
Last cylinder or +size or +sizeM or +sizeK (60-261, default 261):
Using default value 261
Command (m for help): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 59 473886 83 Linux
/dev/sdb2 60 261 1622565 5 Extended
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (60-261, default 60):
Using default value 60
Last cylinder or +size or +sizeM or +sizeK (60-261, default 261): +241M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (90-261, default 90):
Using default value 90
Last cylinder or +size or +sizeM or +sizeK (90-261, default 261): +101M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (103-261, default 103):
Using default value 103
Last cylinder or +size or +sizeM or +sizeK (103-261, default 261): +31M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (108-261, default 108):
Using default value 108
Last cylinder or +size or +sizeM or +sizeK (108-261, default 261): +6M
Command (m for help): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 59 473886 83 Linux
/dev/sdb2 60 261 1622565 5 Extended
/dev/sdb5 60 89 240943+ 83 Linux
/dev/sdb6 90 102 104391 83 Linux
/dev/sdb7 103 107 40131 83 Linux
/dev/sdb8 108 109 16033+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
刷新磁盘分区
[root@dg1 ~]# partprobe /dev/sdb
绑定裸设备
向/etc/sysconfig/rawdevice文件添加如下内容
[root@dg1 permissions.d]# more /etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb5
/dev/raw/raw3 /dev/sdb6
/dev/raw/raw4 /dev/sdb7
/dev/raw/raw5 /dev/sdb8
修改裸设备的权限
[root@dg1 permissions.d]# cd /etc/udev/permissions.d/
[root@dg1 permissions.d]# grep raw 50-udev.permissions
raw/*:oracle:oinstall:0660
2.创建asm实例
创建密码文件
[oracle@dg1 dbs]$ orapwd file=orapw+ASM password=oracle entries=5
配置asm实例的参数文件
[oracle@dg1 dbs]$ cd $ORACLE_HOME/dbs
[oracle@dg1 dbs]$ more init+ASM.ora
INSTANCE_TYPE=ASM
ASM_DISKSTRING=/dev/raw/*
启用css守护进程
[root@dg1 bin]# cd $ORACLE_HOME/bin
[root@dg1 bin]# ./localconfig add
启动asm实例
oracle 29423 1 0 Oct28 ? 00:00:00 ora_q001_orcl
[oracle@dg1 dbs]$ export ORACLE_SID=+ASM
[oracle@dg1 dbs]$ sqlplus / as sysdba
SQL>startup nomount
ASM instance started
确认候选asm磁盘状态正常
SQL>select header_status, path from v$asm_disk;
HEADER_STATU PATH
------------ ----------------------------------------
MEMBER /dev/raw/raw5
MEMBER /dev/raw/raw4
MEMBER /dev/raw/raw1
MEMBER /dev/raw/raw2
MEMBER /dev/raw/raw3
创建asm磁盘组
SQL>CREATE DISKGROUP data
EXTERNAL REDUNDANCY
DISK '/dev/raw/raw1',
'/dev/raw/raw2',
'/dev/raw/raw3',
'/dev/raw/raw4',
'/dev/raw/raw5';
Diskgroup created.
重启实例并修改asm实例参数
向参数文件中添加如下内容
[oracle@dg1 dbs]$ more init+ASM.ora
ASM_DISKGROUPS=data
创建spfile并重启实例
[oracle@dg1 dbs]$ sqlplus / as sysdba
SQL>create spfile from pfile;
SQL>startup
Total System Global Area 125829120 bytes
Fixed Size 2019000 bytes
Variable Size 98644296 bytes
ASM Cache 25165824 bytes
ASM diskgroups mounted
检查asm磁盘组状态
SQL>select name,state from v$asm_diskgroup;
NAME STATE
------------------------------ -----------
DATA MOUNTED
3.迁移数据库到asm
copy数据库到asm磁盘组
[oracle@dg1 dbs]$ rman target /
RMAN> run
{
allocate channel dev1 type disk;
allocate channel dev2 type disk;
BACKUP AS COPY INCREMENTAL LEVEL 0 DATABASE
FORMAT '+data' TAG 'ORA_ASM_MIGRATION;
}
备份当前控制文件
RMAN> backup current controlfile format '+data/tl.ctl';
备份并恢复spfile文件到asm磁盘组
RMAN> run
{
BACKUP AS BACKUPSET SPFILE;
RESTORE SPFILE TO "+DISK/spfile";
}
关闭数据库
SQL>shutdown immediate
启动数据库到nomount并设置合适的control_files参数
SQL> startup nomount PFILE="/tmp/pfile.ora";
SQL>alter system set control_files='+data/control01.ctl','+data/control02.ctl' scope=spfile;
使用rman恢复控制文件到asm
RMAN> shutdown immediate
RMAN> startup nomount pfile="/tmp/pfile.ora"
RMAN> restore controlfile from '+data/tl.ctl';
RMAN> alter database mount;
RMAN> switch database to copy;
RMAN> recover database;
打开数据库
SQL>alter database open resetlogs;
迁移日志文件到asm
SQL>alter database add logfile group 4 '+data' size 50M;
SQL>alter database add logfile group 5 '+data' size 50M;
SQL>alter database add logfile group 6 '+data' size 50M;
SQL>alter system switch logfile;
SQL>alter system switch logfile;
SQL>alter system switch logfile;
SQL>alter system checkpoint;
SQL>alter database drop logfile group 1;
SQL>alter database drop logfile group 2;
SQL>alter database drop logfile group 3;
验证迁移效果
fuck you>select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/orcl/datafile/system.256.830056891
+DATA/orcl/datafile/undotbs1.259.830056963
+DATA/orcl/datafile/sysaux.257.830056891
+DATA/orcl/datafile/users.260.830056973
+DATA/orcl/datafile/example.258.830056923
fuck you>select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
+DATA/orcl/onlinelog/group_4.268.830090137
+DATA/orcl/onlinelog/group_5.269.830090159
+DATA/orcl/onlinelog/group_6.270.830090171
fuck you>select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
+DATA/control01.ctl
+DATA/control02.ctl
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20801486/viewspace-1066473/ ,如需转载,请注明出处,否则将追究法律责任。