完美为Linux增加硬盘并且给Oracle扩展表空间

事情是这样起因的

不久之前(到底多久之前我也不记得了),我向Oracle数据库中插入数据的时候,提示表空间已经满了.果断进行了很多命令(此处不记得了.主要用了很多命令和乱七八糟的参数.),但是你依然可以在你的Linux上运行:


df -l //查看硬盘分配情况,以及使用情况

刚才试验了一下,下面的命令是可以查询Oracle表空间使用情况的:


select a.file_id "FileNo",a.tablespace_name
"Tablespace_name",
a.bytes "Bytes",a.bytes-sum(nvl(b.bytes,0)) "Used",
sum(nvl(b.bytes,0)) "Free",
sum(nvl(b.bytes,0))/a.bytes*100 "%free"
from dba_data_files a, dba_free_space b
where a.file_id=b.file_id(+)
group by a.tablespace_name ,
a.file_id,a.bytes order by a.tablespace_name;

然后,然后呢,下面这条SQL,可以修改表空间的大小:


ALTER DATABASE DATAFILE '/ora11gr2/oradata/ORA/ORA/users01.dbf' RESIZE 30G; //这个30G必须是比你的当前分区小

上面这些语句,先留着,接着看把.

黑线表情
image-1856

字符界面无法登录怎么办[64位系统专属]

我前不久遇到这个问题,觉得甚是郁闷,后来在网上看到了解决方案:

最好是在图形化界面下面登录系统,然后用root执行:


vi /etc/pam.d/login
// 在lib后面加上64 session required /lib/security/pam_limits.so
session required /lib64/security/pam_limits.so
session required pam_limits.so

保存退出,重启.

各种修改文件

在得知Oracle表空间不够之后,我对rhel系统的硬盘进行了各种操作,但都无际于事,包括对硬盘直接进行添加(VM虚拟机里面的rhel)!

最后我的做法是[此处假设你的Linux是经过良好分区的]:


//类似下面这个样子:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 20642428 4950920 14642932 26% /
/dev/sda1 198337 32770 155327 18% /boot
/dev/sdb 61927420 30151108 28630584 52% /home

然后可以这样进行操作[操作前记得先备份一下数据]:

  1. 先分配一个硬盘[区别于现有硬盘,大小自定]
  2. 关机,然后重启至命令行界面[假设你的是虚拟机里面的Linux,因为你可能要查询],进入命令行:1,在终端执行:

    reboot init 3
    //或者执行
    reboot
    //在启动完成之后(也就是看到登录界面的时候,同时按
    alt+ctrl+shirt+F3
    //,切换回图形化界面:
    alt+F7
    [不过貌似不需要这样操作])
  3. 进入命令行界面之后,输入命令[先挂载刚才添加的硬盘]:

    mkdir /mnt/sdb

    接着查看哪个硬盘还没有被挂载:
    fdisk -l

    [一般显示在最下面的那个,注意看这样一行字:
    (Disk /dev/sdb: 64.4 GB, 64424509440 bytes),记住/dev/sdb]

    ,执行挂载:
    mount /dev/sdb /mnt/sdb

    ,执行格式化硬盘:
    mkfs -t ext4 /dev/sdb

    接下来就可以开始复制数据了.
  4. 我的数据文件比较大,复制花了大概10多分钟,比较慢,请耐心等待.使用命令即可复制:
    cp -aP /home/ /mnt/sdb

    然后就慢慢等把.
  5. 复制完成之后,进去看一下:
    cd /mnt/sdb
    //然后执行
    ls

    命令.大致不缺文件[!!!此时暂时不要进行删除任何数据的操作,建议在当前硬盘使用到15天之后再删除原数据,以防不测]
  6. 执行:
    umount -l /home
    //卸载现有分区(!!!假如一开始就在图形化界面操作,会报错!!)
    umount -l /mnt/sdb
    //卸载已经有数据的分区
  7. 接着执行:

    mount /dev/sdb /home
    cd /home
    ls
    //(然后: 看一下是不是加载上了)

  8. 还有一个重要的步骤,接着往下看!!!

fstab出错了怎么处理??

接上面,/etc/fstab是一个在启动系统的时候,自动加载相应分区的配置文件非常重要!!

我们目前是把分区挂载到系统了,想要自动加载,请往下看:


mv fstab fstab.bak //备份数据
vi fstab
//然后在最后一行添加如下数据,注意空格
/dev/sdb /home ext4 defaults 0 0
//然后:ESC -> :wq! 回车退出

接着执行: reboot 重启进入图形化界面.

假如fstab文件丢了,进不了系统怎么办

首先进入字符界面,执行: df -l 命令,输出如下:

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 20642428 4950936 14642916 26% /
/dev/sda1 198337 32770 155327 18% /boot
/dev/sdb 61927420 45433432 13348260 78% /home

然后手动自己写fstab文件:
vi /etc/fstab

里面添加如下内容{参照你自己的系统配置}:

/dev/sda1 /boot ext4 defaults 0 0
/dev/sda2 / ext4 defaults 1 1
/dev/sdb /home ext4 defaults 0 0
/dev/sda5 swap swap defaults 0 0

然后保存退出.
最基本的,然后执行 reboot 就可以了.[光盘修复是行不通的,我搞了一晚上!!结果……………都不行,于是我苦逼的手写了fstab文件]….

修改Oracle数据文件大小

接着,开启服务,打开数据库,其余的…
不好意思,开头都已经写了.

《完美为Linux增加硬盘并且给Oracle扩展表空间》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据