当前位置: 首页 > 工具软件 > eMount > 使用案例 >

oracle怎么改成mount状态,Oracle 在mount状态下重命名数据文件

潘智刚
2023-12-01

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?*NDO/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?*NDO/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与这些视图关系密切,所以不能在这个阶段做此操作。

 类似资料: