设为首页 收藏本站
查看: 521|回复: 0

[经验分享] oracle表空间数据文件的移动

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-15 08:42:23 | 显示全部楼层 |阅读模式
                      需求:把用户的某一个表空间中的数据文件由于某种原因从一个路径移动到里一个路径
原因:
(1)当前实例中的表空间文件及系统表空间文件全在一块硬盘上,导致IO增加。装数据库表空间移走。减少IO。
(2)磁盘空间有限,这个磁盘空间太小了,随着数据的增长,需要换一块大的磁盘
可行性:linux的文件都是通过挂载,到一个目录下,磁盘的移动就只是文件路径的改变。
实现此方法有两种方法
1.alter tablespace
(1)查看要改变的这个表空间所对应的数据文件信息
SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='MAIL';
TABLESPACE_NAME                FILE_NAME
------------------------------ --------------------------------------------------------------------------------
MAIL                           /u01/app/oracle/oradata/orcl/mail.dbf
(2)使表空间脱机
SQL> alter tablespace mail offline;
表空间已更改。
SQL> select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='MAIL';
TABLESPACE_NAME                FILE_NAME                                                                        ONLINE_STATUS
------------------------------ -------------------------------------------------------------------------------- -------------
MAIL                           /u01/app/oracle/oradata/orcl/mail.dbf                                            OFFLINE
(3)把原来的数据文件复制到新的路径
SQL> host cp '/u01/app/oracle/oradata/orcl/mail.dbf' '/home/oracle/mail01.dbfdbf'
(4)修改数据文件名字,路径。(注意:实际就是修改控制文件,告诉控制文件这个表空间的数据文件改变了)
SQL> alter tablespace mail rename datafile '/u01/app/oracle/oradata/orcl/mail.dbf' to '/home/oracle/mail01.dbfdbf';
表空间已更改。
(5)表空间在线
SQL> alter tablespace mail online;
(6) 查看表空间对应的数据文件状态
SQL>  select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='MAIL';
TABLESPACE_NAME                FILE_NAME                                                                        ONLINE_STATUS
------------------------------ -------------------------------------------------------------------------------- -------------
MAIL                           /home/oracle/mail01.dbfdbf                                                       ONLINE
注意:此方法仅适用于能offline的表空间,仅适用于普通的表空间,系统表空间不行。
而sysaux表空间可以用此方法实现
SQL> select tablespace_name,file_name from dba_data_files where tablespace_name='SYSAUX';
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SYSAUX
/u01/app/oracle/oradata/orcl/sysaux01.dbf
SQL> alter tablespace sysaux offline;
表空间已更改。
SQL> host cp '/u01/app/oracle/oradata/orcl/sysaux01.dbf' '/home/oracle/test.dbf';

SQL> alter tablespace sysaux rename datafile '/u01/app/oracle/oradata/orcl/sysaux01.dbf' to '/home/oracle/test.dbf';
表空间已更改。
SQL> alter tablespace sysaux online;
表空间已更改。
SQL>  select tablespace_name,file_name from dba_data_files where tablespace_name='SYSAUX';
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SYSAUX
/home/oracle/test.dbf
2.alter database 适用于系统表空间,system,temp,undo
(1)一致性关闭数据库并启动到mount状态
SQL> shutdown immediate
SQL> startup mount
(2)复制数据文件
SQL> host cp '/u01/app/oracle/oradata/orcl/system01.dbf' '/home/oracle/test.dbf';
(3)修改控制文件。注意,只有在数据库打开的情况下,才有tablespace的概念,所有此时操作database中的file。
SQL> alter database rename file '/u01/app/oracle/oradata/orcl/system01.dbf' to '/home/oracle/test.dbf';
数据库已更改。
(4)打开数据库
SQL> alter database open;
(5)查看system表空间数据文件状态
SQL>  select tablespace_name,file_name,online_status from dba_data_files where tablespace_name='SYSTEM';
TABLESPACE_NAME                FILE_NAME                                                                        ONLINE_STATUS
------------------------------ -------------------------------------------------------------------------------- -------------
SYSTEM                         /home/oracle/test.dbf                                                            SYSTEM


                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-126889-1-1.html 上篇帖子: sql server定时同步oracle数据表 下篇帖子: Oracle Data Guard 单实例到单实例配置(物理standby) oracle 空间
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表