ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 在mount状态下重命名数据文件

Oracle 在mount状态下重命名数据文件

原创 Linux操作系统 作者:regonly1 时间:2009-08-03 17:18:01 0 删除 编辑

Oracle考试中看到一个题目
问:Oracle在mount状态时,能做哪些动作。
其中就有renaming off datafile;
这个一开始认为Oracle在mount stage,已经载入了control file不能再重命名数据文件了。而实际却恰恰相反,只有到control file被载入后,重命名数据文件的改动才会写入到control file中。犯了一个先后颠倒的错误。
重命名控制文件,需要注意:在mount阶段,首先将数据文件更名为需要改动的目标名称(在这里是test02.dbf),再执行更名命令。
在此之前,我认为Oracle的重命名命令会自动将物理的数据文件命名为新的名称,但是从实验中可以看到,需要手工去先把物理的数据文件更名。
以下是一些实验的步骤:
SQL> alter tablespace fund_table rename datafile 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF';
alter tablespace fund_table rename datafile 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF'
*
ERROR 位于第 1 行:
ORA-01525: 重命名数据文件时出错
ORA-01121: 无法重命名数据库文件 29 - 文件在使用中或在恢复中
ORA-01110: 数据文件 29: 'E:\ORACLE\ORADATA\LYON\TEST01.DBF'


SQL> shutdowm immediate;
SP2-0734: 未知的命令开头 "shutdowm i..." - 忽略了剩余的行。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
SQL> alter tablespace fund_table rename datafile 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF';
alter tablespace fund_table rename datafile 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF'
*
ERROR 位于第 1 行:
ORA-01109: ??????


SQL> alter database mount;

数据库已更改。

SQL> alter tablespace fund_table rename datafile 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF';
alter tablespace fund_table rename datafile 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF'
*
ERROR 位于第 1 行:
ORA-01109: ??????


SQL> alter database rename file 'E:\ORACLE\ORADATA\LYON\TEST01.DBF'  to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF';
alter database rename file 'E:\ORACLE\ORADATA\LYON\TEST01.DBF'  to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF'
*
ERROR 位于第 1 行:
ORA-01511: ?????/???????
ORA-01141: ??????? 29 ??? - ?????? 'E:\ORACLE\ORADATA\LYON\TEST02.DBF'
ORA-01110: ???? 29: 'E:\ORACLE\ORADATA\LYON\TEST01.DBF'
ORA-27041: ??????
OSD-04002: N^7(4r?*ND<~
O/S-Error: (OS 2) O5M3UR2;5=V86(5DND<~!#


SQL> alter database nomount;
alter database nomount
                     *
ERROR 位于第 1 行:
ORA-02231: ?????? ALTER DATABASE ??


SQL> shutdown immediate;
ORA-01109: ??????


已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount U1;
SP2-0714: 无效的        STARTUP 选项组合
SQL> startup mount U1;
ORACLE 例程已经启动。

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
ORA-01504: ????'U1'??? db_name 'orcl'???


SQL> startup mount orcl;
ORA-01081: ????????? ORACLE --- ?????
SQL> alter database mount;

数据库已更改。

SQL> alter database rename file 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF'
  2  ;
alter database rename file 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF'
*
ERROR 位于第 1 行:
ORA-01511: ?????/???????
ORA-01141: ??????? 29 ??? - ?????? 'E:\ORACLE\ORADATA\LYON\TEST02.DBF'
ORA-01110: ???? 29: 'E:\ORACLE\ORADATA\LYON\TEST01.DBF'
ORA-27041: ??????
OSD-04002: N^7(4r?*ND<~
O/S-Error: (OS 2) O5M3UR2;5=V86(5DND<~!#


SQL> alter database rename file 'E:\ORACLE\ORADATA\LYON\TEST01.DBF' to 'E:\ORACLE\ORADATA\LYON\TEST02.DBF';

数据库已更改。

SQL>
最终在最后一个步骤执行成功了。

另外,在mount阶段,也可以更改数据库的归档模式:
alter database archivelog/noarchivelog;
但是对于drop user这样的操作,在mount阶段是不能做的。个人分析原因在于mount阶段所有v$/dba/user视图都尚未启用(只启用了x$视图),而user与这些视图关系密切,所以不能在这个阶段做此操作。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-611193/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle statistic_level
请登录后发表评论 登录
全部评论

注册时间:2008-05-10

  • 博文量
    257
  • 访问量
    1025510