动态逻辑卷的添加以及数据库迁移的测试

本文介绍如何在Linux环境下使用逻辑卷管理(LVM)动态增加磁盘空间,并详细记录了将Oracle数据库从一个目录迁移至另一个目录的过程。
原来只有一个70G的分区
手工添加一个20G的分区
现在看linux系统里面是没有这个分区的

我们通过如下的命令,可以动态的探测新添加的分区,这个只是在linux 6 以上的版本使用,linux4,5需要使用其他的明天,在这里不做详述
echo 1 > /sys/class/fc_host/host1/issue_lip
echo 1 > /sys/class/fc_host/host2/issue_lip
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
此时我们再看,已经可以看到这个磁盘了

创建物理卷

创建物理卷组

如下命令可以看到物理卷组的详细情况
看到总共的可分配的PE是这么多
VG size = PE size * PE的数量 =4*5119

创建逻辑卷
-l 指定使用PE的数量,我们默认使用掉全部的PE,当然你们也可以使用-L来指定创建的大小,但这样不一定能使用完全部的pv的空间,不怎么推荐
-n 是指定创建的逻辑卷的名称
最后是你使用的哪个物理卷
lv= logical volumn 逻辑卷
可以看到逻辑卷的详细情况


格式化这个lv 比把这个lv添加到fstab开机自启动文件中,
注意,我们最好使用uuid的方式,切记不能使用直接路径的方式,因为使用直接路径在服务器重启的时候可能会改变盘符
进入这个路径下,就能看到各个设备的uuid

vi /etc/fstab

添加这一行,我们把这个逻辑卷挂载到/u03目录下面

文件夹属组改成oracle:oinstall

现在我们进行逻辑卷的动态扩容
在添加一个20G的盘
动态探测
echo 1 > /sys/class/fc_host/host1/issue_lip
echo 1 > /sys/class/fc_host/host2/issue_lip
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan


出来了/dev/sdc
创建新的物理卷
把这个物理卷添加到oracle_vg的物理卷组
可以看到,又有了20G的剩余空间了
把这个剩余的20G的PE全部添加给oracle_lv的逻辑卷

我们可以看到此时空间的大小还是没有变化,我们通过如下的命令来扩展空间
通过以下的命令进行扩容

以上就是逻辑卷的动态扩容
下面进行数据文件目录的迁移
原始的在/u02/oradata/orcl下面,现在我们迁移到/u03/oradata/orcl下面
[15:52:01 oracle(db)@kiwi-test ~]$ mkdir -p /u03/oradata/orcl
RMAN>  run {
allocate channel d1 type disk;
allocate channel d2 type disk;
backup as compressed backupset database format '/u03/backup/Lv0_%d_%T_%U.bak' database;
release channel d1;
release channel d2;
 }
备份的脚本如上,分配多通道加快备份进度
可以通过下面的脚本查看到备份的完成进度
select s.inst_id, o.sid, CLIENT_INFO ch, context, sofar, totalwork,
                    round(sofar/totalwork*100,2) "% Complete"
     FROM gv$session_longops o, gv$session s
     WHERE opname LIKE 'RMAN%'
     AND opname NOT LIKE '%aggregate%'
     AND o.sid=s.sid
     AND totalwork != 0
     AND sofar <> totalwork;

备份完成开始做数据库的迁移,先迁移控制文件
16:23:56 idle> alter system set control_files='/u03/oradata/orcl/control01.ctl','/u03/oradata/orcl/control02.ctl' scope=spfile;
System altered.
Elapsed: 00:00:00.02
16:24:08 idle> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
16:24:18 idle> startup nomount;
ORACLE instance started.

看到你备份的那个文件夹中,最小的那个文件就是控制文件的备份

RMAN>  restore controlfile from '/u03/backup/Lv0_ORCL_20141221_03pqnulh_1_1.bak';
Starting restore at 21-DEC-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=129 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u03/oradata/orcl/control01.ctl
output file name=/u03/oradata/orcl/control02.ctl
Finished restore at 21-DEC-14




RMAN>  run
{
set newname for datafile 1 to '/u03/oradata/orcl/system01.dbf';
set newname for datafile 2 to '/u03/oradata/orcl/sysaux01.dbf';
set newname for datafile 3 to '/u03/oradata/orcl/undotbs01.dbf';
set newname for datafile 4 to '/u03/oradata/orcl/users01.dbf';
set newname for datafile 5 to '/u03/oradata/orcl/kiwi01.dbf';
restore database;
switch datafile all;
}            


executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting restore at 21-DEC-14
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u03/oradata/orcl/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u03/oradata/orcl/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u03/oradata/orcl/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u03/oradata/orcl/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u03/oradata/orcl/kiwi01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/fast_recovery_area/ORCL/backupset/2014_12_21/o1_mf_nnndf_TAG20141221T155548_b9dzf0ky_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2014_12_21/o1_mf_nnndf_TAG20141221T155548_b9dzf0ky_.bkp tag=TAG20141221T155548
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:35
Finished restore at 21-DEC-14
datafile 1 switched to datafile copy
input datafile copy RECID=6 STAMP=866909889 file name=/u03/oradata/orcl/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=7 STAMP=866909889 file name=/u03/oradata/orcl/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=8 STAMP=866909889 file name=/u03/oradata/orcl/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=9 STAMP=866909889 file name=/u03/oradata/orcl/users01.dbf
datafile 5 switched to datafile copy
input datafile copy RECID=10 STAMP=866909889 file name=/u03/oradata/orcl/kiwi01.dbf

看到此时数据文件已经全部变到了/u03/oradata/orcl的文件目录下面,下面我们需要把redo log跟temp文件也迁移到/u03/oradata/ocl目录下面,而这些的添加是需要数据库在open的状态下
使用如下命令打开数据库
RMAN> recover database;
Starting recover at 21-DEC-14
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 72 is already on disk as file /u02/oradata/orcl/redo03.log
archived log file name=/u02/oradata/orcl/redo03.log thread=1 sequence=72
media recovery complete, elapsed time: 00:00:01
Finished recover at 21-DEC-14
RMAN> alter database open resetlogs;
database opened
迁移temp文件
看看有什么temp文件,添加temp文件也按照你原来的temp文件的大小来
16:25:03 idle>  alter database tempfile '/u02/oradata/orcl/temp01.dbf' drop including datafiles;  这步操作最好在数据库mount的状态下进行操作
Database altered.
Elapsed: 00:00:00.08
16:26:21 idle> select name,bytes/1024/1024 from v$tempfile;
no rows selected

16:31:39  sys@orcl> alter tablespace temp add tempfile '/u03/oradata/orcl/temp01.dbf' size 29m autoextend on next 50m maxsize unlimited; 

Tablespace altered. 

Elapsed: 00:00:00.10 
16:31:56  sys@orcl> alter tablespace temp add tempfile '/u03/oradata/orcl/temp02.dbf' size 29m autoextend on next 50m maxsize unlimited; 

Tablespace altered.
temp文件修改完毕

修改redolog文件

alter database add logfile group 4 ('/u03/oradata/orcl/redo04a.log','/u03/oradata/orcl/redo04b.log') size 500m;
alter database add logfile group 5 ('/u03/oradata/orcl/redo05a.log','/u03/oradata/orcl/redo05b.log') size 500m;
alter database add logfile group 6 ('/u03/oradata/orcl/redo06a.log','/u03/oradata/orcl/redo06b.log') size 500m;


切换日志到新分配的三组当中的任意一组
从上面看到,由于status是active状态我们通过如下的命令可以把online redo log改变为 inactiv的状态
删除原来的三组日志
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database add logfile group 1 ('/u03/oradata/orcl/redo01a.log','/u03/oradata/orcl/redo01b.log') size 500m;
alter database add logfile group 2 ('/u03/oradata/orcl/redo02a.log','/u03/oradata/orcl/redo02b.log') size 500m;
alter database add logfile group 3 ('/u03/oradata/orcl/redo03a.log','/u03/oradata/orcl/redo03b.log') size 500m;

这样所有的文件就全部迁移到了/u03这个新添加的逻辑卷下面了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值