liunx下liunx 查看oracle版本数据迁移(按用户)把root用户下liunx 查看oracle版本数据迁移到liunx 查看oracle版本用户下的指定目录

中国领先的IT技术网站
51CTO旗下网站
Linux系统下,如何以其他用户身份运行程序
本教程给出了Linux系统下,如何使用runuser命令、su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较。
作者:Mitchell Chu来源:| 15:46
#1:runuser命令
runuser命令使用一个替代的用户或者组ID运行一个Shell。这个命令仅在root用户时有用。
仅以会话PAM钩子运行,并且没有密码提示。如果用一个非root用户,并且该用户没有权限设置user ID,这个命令将会因为程序没有setuid而失败。因runuser不会运行认证和账户PAM钩子,它比su更底层。
runuser&-l&userNameHere&-c&'command'&runuser&-l&userNameHere&-c&'/path/to/command&arg1&arg2'&
举例来说,作为一个root用户,你也许想检查下oracle用户下的shell资源限制,输入:
#&runuser&-l&oracle&-c&'ulimit&-SHa'&
或者监察下nginx或lighttpd web服务器限制:
#&runuser&-l&nginx&-c&'ulimit&-SHa'&
#&runuser&-l&lighttpd&-c&'ulimit&-SHa'&
有时,root用户由于权限(安全)问题不能浏览NFS挂载的共享:
#&ls&-l&/nfs/wwwroot/cyberciti.biz/http&
#&cd&/nfs/wwwroot/cyberciti.biz/http&
可能的输出:
-bash:&cd:&/nfs/wwwroot/cyberciti.biz/http/:&Permission&denied&
尽管如此,apache用户被允许浏览或访问挂载在/nfs/wwwroot/cyberciti.biz/http/下基于nfs的系统:
#&runuser&-l&apache&-c&'ls&-l&/nfs/wwwroot/cyberciti.biz/http/'&
#&runuser&-l&apache&-c&'cd&/nfs/wwwroot/cyberciti.biz/http/;&vi&index.php'&
使用runuser命令,无需使用密码,并且,只能在root用户下使用。
可用选项:
1. -l: 让shell成为登录shell,用 runuser -l PAM 文件替代默认的
2. -g:指定主要的组
3. -G 追加组
4. -c:命令,要传到shell的单个命令
5. --session-command=COMMAND:使用-c传递单个命令道shell中并且不创建新的会话
6. -m: 不重置环境变量。
#2:su命令
su命令允许你成为一个超级用户或者替代用户(substitute user),欺骗用户(spoof user),设置用户(set user)或者切换用户(switch user)。它允许一个Linxu用户切换当前用户到那些你知道密码的目标用户,切换包括与之关联的运行中的控制台(console)或者Shell,它的语法如下:
su&-&su&-&username&
切换到root用户
su命令会询问目标用户的密码,在你的shell命令行中输入 su - 来切换到root用户(你必须知道root用户的密码):
vivek@wks01:~$&su&-&
vivek@wks01:~$&su&-&root&
输出示例:
Password:&root@wks01:/root#&logout&vivek@wks01:~$&
如果输入了正确的root密码,会话的所有权(这里应该指当前控制台的上下文&&译注)将改为root账户。输入logout可以退出一个root登录的shell,输入 whoami或者id命令来验证当前会话的所有者:
用root账户运行命令
su&-&root&-c&&command&&#&OR&su&-&-c&&command&arg1&&
查看/root目录下的内容,这些原本是普通用户无法访问的,运行:
su&-&root&-c&&ls&-l&/root&&
需要注意的是,Linix和一些Unix-like系统有一个wheel用户组,并且只允许这个组内的用户使用su切换到root。
使用su命令来让其他用户运行命令
下面这个命令是切换到oracle的账户,并且显示限制清单:
$&su&-&oracle&-c&'ulimit&-aHS'&
同样, 如果提供了正确的oracle密码,会话所有权将会变成oracle账户。su命令的日志保存在系统日志中,一般是在/var/log/auth.log(Debian/Ubuntu)或者/var/log/secure(RHEL/CentOS)。
#3:sudo命令
sudo以另外的用户来执行一个命令,但是它跟着一组关于那些用户可以以那些其他用户执行那些命令的规则(有点绕口&&译注)。这个规则在/etc/sudoers这个文件中被定义。不像su,sudo验证用户是靠用户自己的密码而不是那个要切换的用户密码。当提供一个审计跟踪命令和他们的参数时(原文:...whileproviding an audit trail of the commands and their arguments&&译注)sudo允许一个系统管理员给某些用户(或用户组)委派以root或其他用户来运行某些(或全部)命令的权限。这允许无需在用户之间共享密码就可以在指定宿主上将指定命令委派给指定用户。语法如下:
sudo&command&
参照下面的这些链接来获取更多信息:
1. 在Linux操作系统如何配置和使用sudo工具1
2. sudo项目主页2
GUI工具注意事项(su和sudo的前端GUI)
gksu 命令是su的前台,gksudo是sudo的前端。他们的主要用途是用来运行需要root权限但不需要运行一个X terminal emulator和使用直接使用su的图形化命令。语法如下:
gksu&[-u&&user&]&[options]&&command&&gksudo&[-u&&user&]&[options]&&command&&
仅输入gksu,将会显示下面这个弹窗:
图1:运行中的gksu
然后,你将会被要求输入root用户的密码:
图2:Gnome gksu对目标用户的验证框
你也可以直接运行下面代码:
gksu&-u&root&'ls&/root'&
或,以oracle用户运行命令:
gksu&-u&oracle&'ulimit&-aHS'&
或作为root登录:
gksu&-u&root&-l&
总结:runuser VS su VS sudo
请查看man帮助页面来获取更多关于su,sudo,gksu,和gksudo命令的相关信息。
本文是nixCraft一篇文章的翻译,非常感谢nixCraft提供如此棒的教程,原文可以通过参考的原文连接查看,在翻译中省略了头尾一些非相关信息,同时由于翻译时间有限,是通过边看边译的形式完成此篇博文,错误肯定非常多,还请大家多多指正。
1.& 在Linux操作系统下如何配置和使用sudo()
2.& sudo项目主页()
3. 本篇博客原文()
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
热点头条热点头条热点
24H热文一周话题本月最赞
讲师:425586人学习过
讲师:227701人学习过
讲师:131215人学习过
精选博文论坛热帖下载排行
本书以轻松幽默的笔调向读者论述了高质量软件开发方法与C++/C编程规范。它是作者多年从事软件开发工作的经验总结。本书共17章,第1章到第4...
订阅51CTO邮刊linux(CentOS6),有两个用户 root和oracle,root用户中安装了xampp,oracle用户中安装了oracle,如何在root用户中php(PDO)访问oracle用户的数据库呢?这里先谢谢您的解答。 - 知乎5被浏览1537分享邀请回答php.net/manual/en/book.pdo.php01 条评论分享收藏感谢收起0添加评论分享收藏感谢收起Linux服务器磁盘扩展和oracle表空间文件迁移操作记录 - Fetty - 博客园
随笔 - 19, 文章 - 0, 评论 - 12, 引用 - 0
1、环境介绍
服务器硬件:Dell R710
服务器OS:红帽子Linux & RHEL4.8
数据库:Oracle 10g
2、出现的问题
因为数据表每天有上百万的数据写入表,加上建立索引,导致表空间不停增长,表空间被设置为自动增长,因此dbf文件在不断增大,硬盘空间在每天约400M的速度减少。数据库虽有自清理的脚本,清理3个月前的数据,但实际增加的数据太多,清理释放的空间不能满足需求了。
3、处理过程
解决思路是,该服务器的硬盘有预留空间,未完全划分的约有100G,可以建立新的分区,将已经存满的分区的数据库文件移动,来避免挂载点使用率达到100%,同时可以扩充表空间。
3.1 建立分区
以root账号登陆,查看目前使用情况:
[root@ccsvr ~]# df -h
Filesystem&&&&&&&&&&& Size& Used Avail Use% Mounted on
/dev/sda1&&&&&&&&&&&& 7.1G& 3.2G& 3.6G& 48% /
/dev/sda3&&&&&&&&&&&&& 44G& 9.6G&& 32G& 24% /AFC/Data
/dev/sda5&&&&&&&&&&&&& 15G& 3.9G& 9.9G& 29% /AFC/Log
/dev/sda2 &&&&&&&&&&&&&63G&& 54G& 5.8G& 91% /AFC_DB
/dev/sdb1&&&&&&&&&&&&& 56G&& 39G&& 15G& 73% /AFC_DB2
none&&&&&&&&&&&&&&&&& 4.0G&&&& 0& 4.0G&& 0% /dev/shm
/dev/sda6&&&&&&&&&&&& 4.9G& 3.3G& 1.4G& 72% /oracle
/dev/sdb2&&&&&&&&&&&&& 56G&& 52G& 529M 100% /AFC_DB3
其中 /dev/sdb2已经快接近用完了。
查看下分区情况:
[root@ccsvr ~]# fdisk -l
Disk /dev/sda: 146.1 GB,
255 heads, 63 sectors/track, 17769 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
&& Device Boot&&&&& Start&&&&&&&& End&&&&& Blocks&& Id& System
/dev/sda1&& *&&&&&&&&&& 1&&&&&&&& 936&&&& 7518388+& 83& Linux
/dev/sda2&&&&&&&&&&&& 937&&&&&&& 9222&&& && 83& Linux
/dev/sda3&&&&&&&&&&& 9223&&&&&& 14959&&& +& 83& Linux
/dev/sda4&&&&&&&&&& 14960&&&&&& 17769&&& &&& 5& Extended
/dev/sda5&&&&&&&&&& 14960&&&&&& 16871&& &+& 83& Linux
/dev/sda6&&&&&&&&&& 16872&&&&&& 17508&&&& 5116671&& 83& Linux
/dev/sda7&&&&&&&&&& 17509&&&&&& 17769&&&& 2096451&& 82& Linux swap
Disk /dev/sdb: 299.4 GB,
255 heads, 63 sectors/track, 36404 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
&& Device Boot&&&&& Start&&&&&&&& End&&&&& Blocks&& Id& System
/dev/sdb1&&&&&&&&&&&&&& 1&&&&&&& 7296&&& +& 83& Linux
/dev/sdb2&&&&&&&&&&& 7297&&&&&& 14592&&& && 83& Linux
/dev/sdb3&&&&&&&&&& 14593&&&&&& 32829&& +&& 5& Extended
/dev/sdb5&&&&&&&&&& 14593&&&&&& 21888&&& +& 83& Linux
&可以看到有两块硬盘,sda为第一块SCSI硬盘,sdb为第二块SCSI硬盘,其实服务器时四块硬盘,做的raid1。
其中,第一块硬盘,dell的标配146G,安装的操作系统,oracle数据库,已经分完了,三个主分区,三个扩展分区,/dev/sda2 (/AFC_DB)是开始建立的数据库文件存放目录。
第二块硬盘,是后来增加的300G,/dev/sdb1(/AFC_DB2),/dev/sdb2(/AFC_DB3)是两个主分区,作用也是来放数据库文件的,后面还有一个扩展分区/dev/sdb5,这个应该
也是后来加这块硬盘的人创建的,但是没有挂载上。
我的工作就是把/dev/sdb5挂载上,把硬盘还有的空间()的柱面建立成第二个扩展分区,/dev/sdb6。
[root@ccsvr ~]# fdisk &/dev/sdb
Command (m for help): p
Disk /dev/sdb: 299.4 GB,
255 heads, 63 sectors/track, 36404 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
&& Device Boot&&&&& Start&&&&&&&& End&&&&& Blocks&& Id& System
/dev/sdb1&&&&&&&&&&&&&& 1&&&&&&& 7296&&& +& 83& Linux
/dev/sdb2&&&&&&&&&&& 7297&&&&&& 14592&&& && 83& Linux
/dev/sdb3&&&&&&&&&& 14593&&&&&& 32829&& +&& 5& Extended
/dev/sdb5&&&&&&&&&& 14593&&&&&& 21888&&& +& 83& Linux
/dev/sdb6&&&&&&&&&& 21889&&&&&& 32829&&& && 83& Linux
&注:对第二块硬盘进行分区操作,p:查看分区情况;
Command (m for help): n
Command action
&& l&& logical (5 or over)
&& p&& primary partition (1-4)
First cylinder (, default 21889):
Using default value 21889
Last cylinder or +size or +sizeM or +sizeK (, default 32829):
Using default value 32829
注:n:创建新的分区,
接下来选择分区类型:l:逻辑分区,p主分区
& &l&& logical (5 or over),指创建逻辑分区,分区编号要大于5,因为已经存在db5了
& &p&& primary partition (1-4),指创建主分区,编号1&4,linux规定主分区只能有四个。
我这里输入的l,创建逻辑分区。
First cylinder (, default 21889):
Using default value 21889
注:这个就是填写分区的start柱面,这里直接打回车,使用默认值;
Last cylinder or +size or +sizeM or +sizeK (, default 32829):
Using default value 32829
注:这里填写分区的end柱面,或者填写+??M,K的方式,linux会自动算出柱面号。我这里要把剩余的硬盘空间全都分到这个分区,所以使用默认值。
Command (m for help): p
Disk /dev/sdb: 299.4 GB,
255 heads, 63 sectors/track, 36404 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
&& Device Boot&&&&& Start&&&&&&&& End&&&&& Blocks&& Id& System
/dev/sdb1&&&&&&&&&&&&&& 1&&&& &&&7296&&& +& 83& Linux
/dev/sdb2&&&&&&&&&&& 7297&&&&&& 14592&&& && 83& Linux
/dev/sdb3&&&&&&&&&& 14593&&&&&& 32829&& +&& 5& Extended
/dev/sdb5&&&&&&&&&& 14593&&&&&& 21888&&& +& 83& Linux
/dev/sdb6&&&&&&&&&& 21889&&&&&& 32829&&& && 83& Linux
&再次查看下分区情况,发现/dev/sdb6/已经创建好了。
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
执行W命令,写入分区表。
注意:以上操作中如果有误,可以随时撤销,但执行写入后,就不能更改了。
发现,写入后系统提示错误,资源正忙,新的分区表重启后有效。
于是,重启机器,注意重启前,关闭生产程序进程,和oracle数据:
$xxx/bin/xxx_stop
[root@ccsvr ~]# su - oracle
[oracle@ccsvr ~]$ sqlplus /
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Database closed.
Database dismounted.
ORACLE instance shut down.
重启后,对/dev/sdb5,/dev/db6格式化:
[root@ccsvr /]# mkfs -t ext3 /dev/sdb6
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1098544 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=
671 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
&&&&&&&& 3, , 2, 2654208,
&&&&&&&& 624,
Writing inode tables: done&&&&&&&&&&&&&&&&&&&&&&&&&&&
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.& Use tune2fs -c or -i to override.
然后,创建需要挂载的目录,将分区挂载:
[root@ccsvr /]# mkdir AFC_DB5
[root@ccsvr /]# mkdir AFC_DB6
[root@ccsvr /]# ll
drwxr-xr-x&&& 6 afc&&& aas&&&&&& 4096 Dec& 2& 2013 AAS
drwxrwxr-x&& 13 afc&&& aas&&&&&& 4096 Dec 27 00:32 AFC
drwxr-xr-x&&& 5 oracle oinstall& 4096 Apr 14& 2014 AFC_DB
drwxr-xr-x&&& 6 oracle oinstall& 4096 Apr 14& 2014 AFC_DB2
drwxr-xr-x&&& 4 oracle oinstall& 4096 Apr 14& 2014 AFC_DB3
drwxr-xr-x&&& 2 root&& root&&&&& 4096 May 17 21:18 AFC_DB5
drwxr-xr-x&&& 2 root&& root&&&&& 4096 May 17 21:18 AFC_DB6
这里有一步失误,目录AFC_DB5和AFC_DB6是用来存放oracle数据文件的,最好用oracle账号创建,
我已经用root账号创建了,就给它最高权限算了。
[root@ccsvr /]# chmod 777 AFC_DB5
[root@ccsvr /]# chmod 777 AFC_DB6
然后,进行挂载:
[root@ccsvr /]# mount /dev/sdb5 /AFC_DB5
[root@ccsvr /]# mount /dev/sdb6 /AFC_DB6
修改fstab文件,使开机启动时自动挂载,
这是原fstab文件:
[root@ccsvr /]# more& /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/&&&&&&&&&&&&&&&& /&&&&&&&&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 1
LABEL=/AFC/Data&&&&&&&& /AFC/Data&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
LABEL=/AFC/Log&&&&&&&&& /AFC/Log&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
LABEL=/AFC_DB&&&&&&&&&& /AFC_DB&&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
/dev/sdb1&&&&& &&&&&& /AFC_DB2&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
none&&&&&&&&&&&&&&&&&&& /dev/pts&&&&&&&&&&&&&&& devpts& gid=5,mode=620& 0 0
none&&&&&&&&&&&&&&&&&&& /dev/shm&&&&&&&&&&&&&&& tmpfs&& defaults&&&&&&& 0 0
LABEL=/oracle&&&&&&&&&& /oracle&&&&&&&&&&&&&& &&ext3&&& defaults&&&&&&& 1 2
none&&&&&&&&&&&&&&&&&&& /proc&&&&&&&&&&&&&&&&&& proc&&& defaults&&&&&&& 0 0
none&&&&&&&&&&&&&&&&&&& /sys&&&&&&&&&&&&&&&&&&& sysfs&& defaults&&&&&&& 0 0
LABEL=SWAP-sda7&&&&&&&& swap&&&&&&&&&&&&&&&&&&& swap&&& defaults&&&&&&& 0 0
/dev/sdb2&&&&&&&&&& & /AFC_DB3&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
/dev/scd0&&&&&&&&&&&&&& /media/cdrom&&&&&&&&&&& auto&&& pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
使用vi编辑器添加两条:
[root@ccsvr etc]# vi fstab
[root@ccsvr etc]# more fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
LABEL=/&&&&&&&&&&&&&&&& /&&&&&&&&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 1
LABEL=/AFC/Data&&&&&&&& /AFC/Data&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
LABEL=/AFC/Log&&&&&&&&& /AFC/Log&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
LABEL=/AFC_DB&&&&&&&&&& /AFC_DB&&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
/dev/sdb1&&&&&&&&&& & /AFC_DB2&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
none&&&&&&&&&&&& &&&&&&&/dev/pts&&&&&&&&&&&&&&& devpts& gid=5,mode=620& 0 0
none&&&&&&&&&&&&&&&&&&& /dev/shm&&&&&&&&&&&&&&& tmpfs&& defaults&&&&&&& 0 0
LABEL=/oracle&&&&&&&&&& /oracle&&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
none&&&&&&&&&&&&&&&&&&& /proc&&&&&&&&&&&&&&& &&&proc&&& defaults&&&&&&& 0 0
none&&&&&&&&&&&&&&&&&&& /sys&&&&&&&&&&&&&&&&&&& sysfs&& defaults&&&&&&& 0 0
LABEL=SWAP-sda7&&&&&&&& swap&&&&&&&&&&&&&&&&&&& swap&&& defaults&&&&&&& 0 0
/dev/sdb2&&&&&&&&&& & /AFC_DB3&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
/dev/sdb5&&&&&&&&&&&&&& /AFC_DB5&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
/dev/sdb6&&&&&&&&&&&&&& /AFC_DB6&&&&&&&&&&&&&&& ext3&&& defaults&&&&&&& 1 2
/dev/scd0&&&&&&&&&&&&&& /media/cdrom&&&&&&&&&&& auto&&& pamconsole,fscontext=system_u:object_r:removable_t,exec,noauto,managed 0 0
这里需要对fstab文件说明:
fstab(/etc/fstab)是Linux下比较重要的配置文件,它包含了系统在启动时挂载文件系统和存储设备的详细信息。
这个文件有六列&第1列是需要挂载的文件系统或存储设备;&第2列是挂载点;&第3列指定文件系统或分区的类型;
&第4列为挂载选项,详细参考man mount. 下面列出一些常用的选项:
& &auto: 系统自动挂载,fstab默认就是这个选项& &ro: read-only& &rw: read-write& &defaults: rw, suid, dev, exec, auto, nouser, and async.
&第5列为dump选项,设置是否让备份程序dump备份文件系统,0为忽略,1为备份。
&第6列为fsck选项,告诉fsck程序以什么顺序检查文件系统,0为忽略,其它数字顺序。
挂载后,df命令就可以看到文件系统了:
[root@ccsvr etc]# df -h
Filesystem&&&&&&&&&&& Size& Used Avail Use% Mounted on
/dev/sda1&&&&&&&&&&&& 7.1G& 3.2G& 3.6G& 48% /
/dev/sda3&&&&&&&&&&&&& 44G&& 11G&& 31G& 26% /AFC/Data
/dev/sda5&&&&&&&&&&&&& 15G& 5.8G& 8.0G& 42% /AFC/Log
/dev/sda2&&&&&&&&&&&&& 63G&& 54G& 5.8G& 91% /AFC_DB
/dev/sdb1&&&&&&&&&&&&& 56G&& 39G&& 15G& 73% /AFC_DB2
none&&&&&&&&&&&&&&&&& 4.0G&&&& 0& 4.0G&& 0% /dev/shm
/dev/sda6&&&&&&&&&&&& 4.9G& 3.3G& 1.4G& 72% /oracle
/dev/sdb2&&&&&&&&&&&&& 56G&& 52G& 400M 100% /AFC_DB3
/dev/sdb5&&&&&&&&&&&&& 56G&& 85M&& 53G&& 1% /AFC_DB5
/dev/sdb6&&&&&&&&&&&&& 83G&& 89M&& 79G&& 1% /AFC_DB6
然后,处理Oracle的问题:
以system账户登录数据库,这里我用的pl-sql工具,查询表空间使用量:
表空间名称
表空间所属用户
总空间(单位:MB)
使用表空间(单位:MB)
未使用空间(单位:MB)
使用表空间占百分比
DATA_OPERATION
DATA_PARAMETER
DATA_STATIS
DATA_UD_SALE
IDX_OPERATION
IDX_PARAMETER
IDX_UD_SALE
可以看到三个表空间使用都达到99%以上了。
使用sql语句查询表空间文件路径:
1 select * from dba_data_files t where t.TABLESPACE_NAME = 'IDX_UD_SALE'
2 select * from dba_data_files t where t.TABLESPACE_NAME = 'IDX_OPERATION'
3 select * from dba_data_files t where t.TABLESPACE_NAME = 'DATA_UD_SALE'
执行结果为:
TABLESPACE_NAME
RELATIVE_FNO
AUTOEXTENSIBLE
INCREMENT_BY
USER_BYTES
USER_BLOCKS
ONLINE_STATUS
/AFC_DB/oradata/idx_operation01.dbf
IDX_OPERATION
/AFC_DB2/oradata/idx_operation02.dbf
IDX_OPERATION
/AFC_DB2/oradata/idx_operation03.dbf
IDX_OPERATION
/AFC_DB2/oradata/idx_operation04.dbf
IDX_OPERATION
/AFC_DB3/oradata/idx_operation05.dbf
IDX_OPERATION
(还有两个表,就不贴出来了)
可以看到,新的数据文件都在/AFC_DB3/oradata目录下,现在需要将这三个数据dbf文件移动,来释放/AFC_DB3的空间。
这里我们使用较大的一个分区,/dev/sdb6来存放新的oracle数据库文件,/dev/sdb5暂时闲置,留作以后再用。
[root@ccsvr /]# su - oracle
登陆oracle账号。
[oracle@ccsvr ~]$ cd /AFC_DB6
[oracle@ccsvr AFC_DB6]$ mkdir oradata
[oracle@ccsvr AFC_DB6]$ ll
drwx------& 2 root&& root&&&& 16384 May 17 21:24 lost+found
drwxr-xr-x& 2 oracle oinstall& 4096 May 17 22:04 oradata
创建oradata目录。
[oracle@ccsvr ~]$ sqlplus /
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Database closed.
Database dismounted.
ORACLE instance shut down.
先停止数据库。
然后,将已经快100%used的目录/AFC_DB3中的三个表空间文件移走,要使用oracle账户移动文件:
[oracle@ccsvr AFC_DB6]$ mv /AFC_DB3/oradata/idx_ud_sale13.dbf /AFC_DB6/oradata/idx_ud_sale13.dbf
[oracle@ccsvr AFC_DB6]$ mv /AFC_DB3/oradata/dx_operation05.dbf /AFC_DB6/oradata/idx_operation05.dbf
&[oracle@ccsvr AFC_DB6]$ mv /AFC_DB3/oradata/data_ud_sale23.dbf /AFC_DB6/oradata/data_ud_sale23.dbf
[oracle@ccsvr AFC_DB6]$ cd oradata/
&[oracle@ccsvr oradata]$ ls -lh
-rw-r-----& 1 oracle oinstall& 11G May 17 22:00 data_ud_sale23.dbf
-rw-r-----& 1 oracle oinstall 2.1G May 17 22:00 idx_operation05.dbf
-rw-r-----& 1 oracle oinstall 1.1G May 17 22:00 idx_ud_sale13.dbf
启动数据库挂载:
[oracle@ccsvr oradata]$ sqlplus /&
ORACLE instance started.
Total System Global Area
Fixed Size&&&&&&&&& &&& 1220432 bytes
Variable Size&&&&&&&&&&&&& &
Database Buffers&&&
Redo Buffers&&&&&&&&&&&& &&
Database mounted.
使用rename命名使移动后的数据文件生效:
SQL& alter database rename file '/AFC_DB3/oradata/idx_ud_sale13.dbf' to '/AFC_DB6/oradata/idx_ud_sale13.dbf';
Database altered.
SQL& alter database rename file '/AFC_DB3/oradata/dx_operation05.dbf' to '/AFC_DB6/oradata/idx_operation05.dbf';
Database altered.
SQL& alter database rename file '/AFC_DB3/oradata/data_ud_sale23.dbf' to '/AFC_DB6/oradata/data_ud_sale23.dbf';
Database altered.
打开数据库:
Database altered.
最后,根据需要,增加三个数据库文件,扩大表空间:
SQL& alter tablespace IDX_UD_SALE add datafile '/AFC_DB6/oradata/idx_ud_sale14.dbf' size 4096M;
Tablespace altered.
SQL& alter tablespace IDX_OPERATION add datafile '/AFC_DB6/oradata/idx_operation06.dbf' size 2048M;
Tablespace altered.
SQL& alter tablespace DATA_UD_SALE add datafile '/AFC_DB6/oradata/data_ud_sale24.dbf' size 8192M;
Tablespace altered.
检查下AFC_DB6的数据文件:
[oracle@ccsvr oradata]$ pwd
/AFC_DB6/oradata
[oracle@ccsvr oradata]$ ls -alh
drwxr-xr-x& 2 oracle oinstall 4.0K May 17 22:48 .
drwxrwxrwx& 4 root&& root&&&& 4.0K May 17 22:04 ..
-rw-r-----& 1 oracle oinstall& 11G May 17 22:30 data_ud_sale23.dbf
-rw-r-----& 1 oracle oinstall 8.1G May 17 22:50 data_ud_sale24.dbf
-rw-r-----& 1 oracle oinstall 2.1G May 17 22:30 idx_operation05.dbf
-rw-r-----& 1 oracle oinstall 2.1G May 17 22:46 idx_operation06.dbf
-rw-r-----& 1 oracle oinstall 1.1G May 17 22:30 idx_ud_sale13.dbf
-rw-r-----& 1 oracle oinstall 4.1G May 17 22:44 idx_ud_sale14.dbf
即有移动过来的数据文件,也有新增的数据文件。
再查看表空间使用,已经下降了:
表空间名称
表空间所属用户
总空间(单位:MB)
使用表空间(单位:MB)
未使用空间(单位:MB)
使用表空间占百分比
DATA_OPERATION
DATA_PARAMETER
DATA_STATIS
DATA_UD_SALE
IDX_OPERATION
IDX_PARAMETER
IDX_UD_SALE
磁盘使用情况也正常了。
至此,操作完成。
&最后附上查看表空间的SQL代码:
1 --查询使用表空间百分比
2 /*connect system/--------@--------*/
3 select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') as "查询时间",
a.tablespace_name as "表空间名称",
c.owner as "表空间所属用户",
a.bytes / 1024 / 1024 as "总空间(单位:MB)",
(a.bytes - b.bytes) / 1024 / 1024 as "使用表空间(单位:MB)",
b.bytes / 1024 / 1024 as "未使用空间(单位:MB)",
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) || '%' as "使用表空间占百分比"
from (select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) bytes, max(bytes) largest
from dba_free_space
group by tablespace_name) b,
(select tablespace_name, owner
from dba_segments
group by tablespace_name, owner) c
where a.tablespace_name = b.tablespace_name
and a.tablespace_name = c.tablespace_name
and c.owner = '-----------'
order by c.owner, a.tablespace_name, ((a.bytes - b.bytes) / a.bytes) desc;
转载:增加表空间大小的四种方法
原文地址:/database/101.html
Meathod1:给表空间增加数据文件ALTER TABLESPACE app_data ADD DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF' SIZE 50M;&Meathod2:新增数据文件,并且允许数据文件自动增长ALTER TABLESPACE app_data ADD DATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP04.DBF' SIZE 50MAUTOEXTEND ON NEXT 5M MAXSIZE 100M;&Meathod3:允许已存在的数据文件自动增长ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF'AUTOEXTEND ON NEXT 5M MAXSIZE 100M;&Meathod4:手工改变已存在数据文件的大小ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP02.DBF'RESIZE 100M;}

我要回帖

更多关于 oracle 用户数据迁移 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信