我们再看看如果参数文件中的db_name和控制文件中的db_name不一致会出现什么错误.
修改参数db_name:
[oracle@jumper dbs]$ grep name initjulia.ora *.db_name='julia' *.instance_name='julia' |
在启动过程中,我们看到,在mount阶段,数据库会对参数文件和控制文件进行比较,如果两者记录的db_name不一致,则数据库无法启动:
SQL> startup nomount; ORACLE instance started.
Total System Global Area 139531744 bytes Fixed Size 452064 bytes Variable Size 121634816 bytes Database Buffers 16777216 bytes Redo Buffers 667648 bytes SQL> alter database mount; alter database mount * ERROR at line 1: ORA-01103: database name 'EYGLE' in controlfile is not 'JULIA'
|
另外的一个区别是,db_name通常限制在8个字符之内;instance_name最多应该支持21个字符。通常我们都是设置db_name和instance_name一致。需要注意的是如果db_name设置过长,则会被Oracle截断为8个字符,而instance_name仍然会保留在21个字符之内,如果你的环境变量设置的instance_name=db_name,则启动时就会出现问题,你需要重建pfile/spfile并且修改环境变量才能启动实例,加载数据库。
这个问题可以参考Itpub曾经出现的案例:
http://www.itpub.net/showthread.php?threadid=604507
本文通过实例来介绍instance_name和db_name的区别,希望大家能对这两个参数以及instance和database有进一步的认识。