虚拟机扩容+迁移oracle的数据文件实验

Oracle数据迁移与磁盘扩容
本文详细介绍了在Oracle数据库环境中,如何通过增加虚拟机磁盘容量并进行分区、格式化,来解决磁盘空间不足的问题。同时,阐述了如何迁移Oracle数据文件至新磁盘空间,包括数据文件的复制、控制文件中数据文件路径的修改,以及数据库重启验证等关键步骤。

说明:在数据库服务器的磁盘空间不足的情况下,需要扩展磁盘空间,并将oracle的数据文件移动到新的空间中,从而达到腾出磁盘空间的目的

--0.在虚拟化管理界面上,为虚拟机添加一块新的磁盘

--1.没有添加磁盘前系统的分区情况
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ae4bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64         829     6144000   83  Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3             829        1090     2097152   82  Linux swap / Solaris
/dev/sda4            1090        3917    22703104    5  Extended
/dev/sda5            1090        3917    22702080   83  Linux

--2.关机,添加一块磁盘后分区情况,多了/dev/sdb

[root@localhost ~]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ae4bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64         829     6144000   83  Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3             829        1090     2097152   82  Linux swap / Solaris
/dev/sda4            1090        3917    22703104    5  Extended
/dev/sda5            1090        3917    22702080   83  Linux

Disk /dev/sdb: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

--3.将磁盘设备进行分区

[root@localhost ~]# fdisk /dev/sdb 
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xb4eb40e4.
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)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): n --新建分区
Command action
   e   extended
   p   primary partition (1-4)
p --创建的分区类型为主分区
Partition number (1-4): 1  --指定分区号
First cylinder (1-783, default 1): --直接回车默认分配扇区从1开始
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-783, default 783): --直接回车表示分区该设备的全部扇区
Using default value 783

Command (m for help): p --查看分区结果

Disk /dev/sdb: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb4eb40e4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         783     6289416   83  Linux

Command (m for help): w --写入分区信息并保存
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

--4.再次查看分区结果

[root@localhost ~]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ae4bd

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64         829     6144000   83  Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3             829        1090     2097152   82  Linux swap / Solaris
/dev/sda4            1090        3917    22703104    5  Extended
/dev/sda5            1090        3917    22702080   83  Linux

Disk /dev/sdb: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb4eb40e4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         783     6289416   83  Linux --分区后的结果,多了这一条


---5.向分区中写入文件系统格式
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
393216 inodes, 1572354 blocks
78617 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1610612736
48 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


--自动挂载配置
[root@localhost ~]# blkid --查看系统中快设备信息
/dev/sda1: UUID="4ebdcb4e-f0e0-4e6a-bab5-695a5f5eab46" TYPE="ext4" 
/dev/sda2: UUID="421acd9e-02e1-461e-bd2a-3c51b25ce9c6" TYPE="ext4" 
/dev/sda3: UUID="fb7a2c9c-d29d-4257-8ec6-238ad8b11f80" TYPE="swap" 
/dev/sda5: UUID="eec74471-f1d8-4cdf-83ca-351460fe2e17" TYPE="ext4" 
/dev/sdb1: UUID="6d7aff89-713a-4b60-8f46-26b4d15500b2" TYPE="ext4" 

--将设备永久挂载
[root@localhost ~]# vim /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Fri Oct 27 23:03:47 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=eec74471-f1d8-4cdf-83ca-351460fe2e17 /                       ext4    defaults        1 1
UUID=4ebdcb4e-f0e0-4e6a-bab5-695a5f5eab46 /boot                   ext4    defaults        1 2
UUID=421acd9e-02e1-461e-bd2a-3c51b25ce9c6 /home                   ext4    defaults        1 2
UUID=fb7a2c9c-d29d-4257-8ec6-238ad8b11f80 swap                    swap    defaults,size=11G        0 0
tmpfs                   /dev/shm                tmpfs   defaults,size=11G        0 0
UUID=6d7aff89-713a-4b60-8f46-26b4d15500b2 /oradata                       ext4    defaults        1 1 --复制第一行修改UUID
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0


********************************************磁盘扩容完毕,接下来就是迁移数据文件*************************************

--表空间脱机

--物理cp数据文件

--rname数据文件名称(实际是修改控制文件中数据文件路径)

--表空间联机

--关闭数据库删除、或移动旧的数据文件到指定位置
将/oradata/rzxerp的目录所有则修改一下
[root@localhost ~]#  chown orale:oinstall /oradata -R

--启动实例
本案例中移动的是系统表空间,系统表空间是无法脱机的,因此需要在mount状态下工作
--1.关闭数据库,并启动到mount
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size		    2228784 bytes
Variable Size		 1090522576 bytes
Database Buffers	  503316480 bytes
Redo Buffers		    7344128 bytes
Database mounted.
--2.复制数据文件到新的分区
[oracle@localhost rzxerp]$ cp/u01/app/oracle/oradata/rzxerp/system01.dbf ./
[oracle@localhost rzxerp]$ cp /u01/app/oracle/oradata/rzxerp/sysaux01.dbf ./
[oracle@localhost rzxerp]$ cp /u01/app/oracle/oradata/rzxerp/undotbs01.dbf ./
[oracle@localhost rzxerp]$ cp /u01/app/oracle/oradata/rzxerp/users01.dbf ./

--3.修改控制文件中数据文件的路径名称
SQL> alter database rename file '/u01/app/oracle/oradata/rzxerp/system01.dbf' to '/oradata/rzxerp/system01.dbf';

Database altered.

SQL> alter database rename file '/u01/app/oracle/oradata/rzxerp/sysaux01.dbf' to '/oradata/rzxerp/sysaux01.dbf';

Database altered.

SQL> alter database rename file '/u01/app/oracle/oradata/rzxerp/undotbs01.dbf' to '/oradata/rzxerp/undotbs01.dbf';

Database altered.

SQL> alter database rename file '/u01/app/oracle/oradata/rzxerp/users01.dbf' to '/oradata/rzxerp/users01.dbf';

Database altered.

--4.关闭数据库,删除或移动旧的数据文件,我这里做实验就直接删除,生产根据时间情况进行备份
[oracle@localhost rzxerp]$ rm /u01/app/oracle/oradata/rzxerp/sysaux01.dbf 
[oracle@localhost rzxerp]$ rm /u01/app/oracle/oradata/rzxerp/undotbs01.dbf 
[oracle@localhost rzxerp]$ rm /u01/app/oracle/oradata/rzxerp/users01.dbf 
--5.启动实例,查询迁移结果
SQL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size		    2228784 bytes
Variable Size		 1090522576 bytes
Database Buffers	  503316480 bytes
Redo Buffers		    7344128 bytes
Database mounted.
Database opened.
SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
/oradata/rzxerp/system01.dbf
/oradata/rzxerp/sysaux01.dbf
/oradata/rzxerp/undotbs01.dbf
/oradata/rzxerp/users01.dbf

SQL> 

--6.查看根分区空间已经腾出了
[root@localhost /]# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5        22G   17G  3.4G  84% /
tmpfs            11G  1.8G  9.3G  16% /dev/shm
/dev/sda1       477M   35M  418M   8% /boot
/dev/sda2       5.7G   35M  5.4G   1% /home
/dev/sdb1       5.8G  2.2G  3.4G  40% /oradata

 

<think>好的,我现在需要帮助用户了解Linux文件夹如何扩容。首先,我得确认用户对Linux系统的熟悉程度。他们可能有一定的使用经验,但可能对存储管理不太熟悉。用户之前问过Oracle的adump文件夹,现在转向Linux扩容,可能是在管理服务器时遇到了存储空间不足的问题,尤其是在处理数据库日志或其他应用数据时。 接下来,我需要考虑Linux扩容的常见方法。通常有几种方式:添加新磁盘并挂载到现有目录,调整LVM逻辑卷的大小,使用软链接迁移数据,或者使用存储挂载如NFS。用户可能使用的是物理服务器或虚拟机,不同环境下的操作步骤可能不同,但需要覆盖这两种情况。 用户可能需要详细的步骤指导,包括命令示例和注意事项。比如,添加新磁盘涉及到分区、格式化、挂载等步骤,而LVM调整则需要了解PV、VG、LV的概念。此外,用户可能担心数据安全,所以在操作前备份数据非常重要,这一点需要强调。 另外,用户可能不知道如何选择最适合的方法。比如,如果是云环境,扩容云磁盘可能更直接;如果系统用的是LVM,调整逻辑卷会更方便。需要解释每种方法的适用场景,帮助用户做出选择。 还要注意潜在的问题,比如扩容后文件系统是否需要扩展,不同的文件系统(如ext4、xfs)处理方式不同。比如,使用resize2fs或xfs_growfs命令。此外,如果使用LVM,扩展逻辑卷的顺序是否正确,先扩展物理卷,再扩展卷组,最后扩展逻辑卷和文件系统。 最后,用户可能需要实际操作的例子,比如具体的命令和检查步骤,确保他们能够一步步执行。同时提醒注意事项,如卸载挂载点时的服务停止,避免数据损坏,以及备份的重要性。</think>--- ### **Linux 文件夹扩容操作指南** 当 Linux 系统磁盘空间不足时,可通过以下 **5 种常用方法**对文件夹进行扩容。根据实际环境选择适合的方案: --- #### **1. 添加新磁盘并挂载到目标目录** **适用场景**:物理服务器或虚拟机新增硬盘,或云服务器挂载新云盘。 **操作步骤**: 1. **查看新磁盘**: ```bash lsblk # 确认新磁盘名称(如 /dev/sdb、/dev/vdb) ``` 2. **分区与格式化**(可选): ```bash fdisk /dev/sdb # 创建分区(按提示操作,如新建主分区) mkfs.ext4 /dev/sdb1 # 格式化为 ext4 文件系统(或 xfs) ``` 3. **挂载到目标目录**: ```bash mount /dev/sdb1 /target_directory # 临时挂载 # 永久挂载需修改 /etc/fstab: echo "/dev/sdb1 /target_directory ext4 defaults 0 0" >> /etc/fstab ``` --- #### **2. 扩展 LVM 逻辑卷(推荐动态扩容)** **适用场景**:原目录已使用 LVM 管理,且存在未分配空间或可扩容的物理卷。 **操作步骤**: 1. **查看 LVM 结构**: ```bash pvs # 查看物理卷(PV) vgs # 查看卷组(VG)剩余空间 lvs # 查看逻辑卷(LV)及挂载点 ``` 2. **扩展物理卷(若新增磁盘)**: ```bash pvcreate /dev/sdc # 将新磁盘初始化为物理卷 vgextend vg_name /dev/sdc # 将 PV 加入卷组 ``` 3. **扩展逻辑卷**: ```bash lvextend -L +50G /dev/vg_name/lv_name # 增加 50G 空间 resize2fs /dev/vg_name/lv_name # 扩展 ext4 文件系统 # 若为 xfs 文件系统:xfs_growfs /mount_point ``` --- #### **3. 调整分区大小(需谨慎操作)** **适用场景**:同一磁盘上有未分配空间,且分区支持动态调整(如使用 `parted`)。 **操作步骤**: 1. **使用 `parted` 调整分区**: ```bash parted /dev/sda (parted) resizepart 1 # 调整分区号(如分区1) (parted) quit ``` 2. **扩展文件系统**: ```bash resize2fs /dev/sda1 # 扩展 ext4 文件系统 # xfs 文件系统需卸载后操作:xfs_growfs /dev/sda1 ``` --- #### **4. 使用软链接迁移数据** **适用场景**:临时扩容,无法直接扩展原目录所在磁盘。 **操作步骤**: 1. **迁移数据到新磁盘**: ```bash mkdir /new_disk/data cp -a /old_directory/* /new_disk/data/ ``` 2. **创建软链接替换原目录**: ```bash rm -rf /old_directory # 确保数据已备份! ln -s /new_disk/data /old_directory ``` --- #### **5. 使用网络存储(NFS/云存储)** **适用场景**:跨服务器共享存储或使用云存储服务。 **操作步骤**: 1. **挂载 NFS 存储**: ```bash mount -t nfs 192.168.1.100:/shared_data /target_directory # 永久挂载需编辑 /etc/fstab: echo "192.168.1.100:/shared_data /target_directory nfs defaults 0 0" >> /etc/fstab ``` --- ### **关键注意事项** 1. **备份数据**:任何磁盘操作前,必须备份重要数据! 2. **卸载分区**:调整分区或文件系统时,需先卸载目录: ```bash umount /target_directory ``` 3. **文件系统兼容性**: - `ext4` 使用 `resize2fs` - `xfs` 使用 `xfs_growfs`(需挂载状态) 4. **云环境差异**: - 阿里云/ AWS 等需先在控制台扩展云盘,再在系统内扩容分区。 5. **监控工具**: 使用 `df -h`、`lsblk`、`du -sh` 定期检查空间使用情况。 --- ### **操作流程图** ```plaintext 选择扩容方案 → 备份数据 → 扩展物理存储 → 调整分区/LVM → 扩展文件系统 → 验证空间 ``` --- 通过以上方法,可灵活应对 Linux 文件夹的存储需求。**优先推荐 LVM 动态扩展**,因其支持在线扩容且风险较低。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值