oracle中如何移动控制文件,数据文件,日志文件

 

oracle中如何移动控制文件,数据文件,日志文件

 

oracle9i/10G-xG中移动控制文件,数据文件,日志文件

ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。
windows环境中用: host copy 或 host move 其它均相同。
以下是unix或linux环境中,

一.移动数据文件:

ALTER TABLESPACE方法(联机状态):
用此方法,要求此数据文件既不属于SYSTEM表空间,也不属于含有ACTIVE回滚段或临时段的表空间。
$ sqlplus '/as sysdba'
#把需要移动的数据文件对应的表空间offline
SQL> alter tablespace ipas_acct_data offline
#把数据文件cp到想要放的目录下。
SQL> !mv /opt/oracle/wacosdata/ipas_acct_data001.dbf /opt/oracle/nms/oradata/ipas_acct_data001.dbf
#修改表空间中数据库文件的位置。
SQL> alter tablespace ipas_acct_data rename datafile '/opt/oracle/wacosdata/ipas_acct_data001.dbf' to '/opt/oracle/nms/oradata/ipas_acct_data001.dbf'
#把表空间online。
SQL> alter tablespace ipas_acct_data online
#查看修改结果。
SQL> select file_name from dba_data_files where tablespace_name = 'IPAS_ACCT_DATA';

ALTER DATABASE方法(脱机状态):
用此方法,可以移动任何表空间的数据文件。
$ sqlplus '/as sysdba'
SQL> shutdown immediate
SQL> !mv /opt/oracle/oradata/wacos002.dbf /ora10g/oradata/wacos002.dbf
SQL> startup mount
SQL> alter database rename file '/opt/oracle/oradata/wacos002.dbf' to '/ora10g/oradata/wacos002.dbf';
SQL> alter database open;
SQL> set head off
SQL> SELECT file_name from dba_data_files where tablespace_name = 'WACOS';

二. 移动控制文件:

$ sqlplus '/as sysdba'
#我是用的spfile启动的,spfile文件不能修改,所以要做这一步。
SQL> create pfile from spfile
#关闭数据库。
SQL> shutdown immediate
#cp控制文件到目标位置。
SQL>cp /opt/oracle/oradata/control* /opt/oracle/oratest/
修改$ORACLE_HOME/dbs/init$ORACLE_SID.ora 文件中的控制文件的位置。
#启动数据库指定参数文件。
SQL> startup pfile='/opt/oracle/product/9.2.0.4/dbs/init$ORACLE_SID.ora'
#下次启动数据库是直接就可以用startup启动了。
SQL> create spfile from pfile;

三. 移动重做日志文件:

$ sqlplus '/as sysdba'
#关闭数据库。
SQL> shutdown immediate
#cp日志文件到目标位置。
SQL> !cp /opt/oracle/oradata/redo* /opt/oracle/oratest/
#让数据库以mount模式启动。
SQL>startup mount;
#修改数据库中日志文件的位置。
SQL> alter database rename file '/opt/oracle/oradata/redo01.log' to '/opt/oracle/oratest/redo01.log'
SQL> alter database rename file '/opt/oracle/oradata/redo02.log' to '/opt/oracle/oratest/redo02.log'
SQL> alter database rename file '/opt/oracle/oradata/redo03.log' to '/opt/oracle/oratest/redo03.log'
#修改数据库的状态。
SQL> alter database open;
#查看修改结果。
SQL> select * from v$logfile;

 

====================================================================================
注意:TEMP数据文件不能移动,只能通过重建临时表空间来重建,方法如下:
尤其值得注意:重建临时表空间的大小一定要足够大,一定要大于或等于现有临时表空间的大小,否则会出现:提示:无法通过128(在表空间temp中)扩展 temp段。
====================================================================================
Oracle9i为我们提供了一个全局的临时表空间。有的时候我们会发现在做了大量的排序操作后,temp表空间并没有去释放,而且在更大的程度上面占用了我们的磁盘空间,其实我们可以通过重建或者切换的手段来使我们的temp表空间得到重生。

首先我们可以先看一下,当前用户所属的临时表空间有那些
SQL> select username ,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYS                            TEMP
SYSTEM                         TEMP
DBSNMP                         TEMP
HUJINPEI                       TEMP
ALAN1                          TEMP
PERFUSER                       TEMP
ALAN2                          TEMP
MYUSER                         TEMP
OUTLN                          TEMP
WMSYS                          TEMP

已选择10行。

查看当前有那些临时文件
SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
D:\ORACLE\ORADATA\ICMNLSDB\TEMP_01.DBF
D:\ORACLE\ORADATA\ICMNLSDB\TEMP_02.DBF

为了切换这个临时文件,我们可以重新建立一个临时表空间
SQL> create temporary tablespace temp2 tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP01.DBF' size 10M ;

表空间已创建。

SQL> alter tablespace temp2 add tempfile 'D:\ORACLE\ORADATA\ICMNLSDB\TEMP02.DBF' size 10M;

表空间已更改。

这个时候我们就可以将刚刚建好的TEMP表空间设置为我们数据库默认的临时表空间:
SQL> alter database default temporary tablespace temp2;

数据库已更改。

SQL> select username,temporary_tablespace from dba_users;

USERNAME                       TEMPORARY_TABLESPACE
------------------------------ ---------------------------
SYS                            TEMP2
SYSTEM                         TEMP2
DBSNMP                         TEMP2
HUJINPEI                       TEMP2
ALAN1                          TEMP2
PERFUSER                       TEMP2
ALAN2                          TEMP2
MYUSER                         TEMP2
OUTLN                          TEMP2
WMSYS                          TEMP2

已选择10行。

当然我们还可以选择DROP掉以前旧的TEMP的表空间
SQL> drop tablespace temp including contents ;

表空间已丢弃。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值