9i与10g初始化参数instance_name的变化
昨天《循序渐进Oracle》的一位读者提出一个问题,这个问题使得我发现了Oracle9i与Oracle10g初始化参数instance_name的一点不同。
首先我们来看Oracle9i,当我们复制一个参数文件:
C:\ORACLE~1\database>copy SPFILEMYORACLE.ORA SPFILEEYGLE.ORA在另外一个窗口初始化一个实例环境:
已复制 1 个文件。
C:\Documents and Settings\gqgai>oracle eygle
Hit any key to exit server:
此时连接到当前实例,启动到Nomount状态:
C:\ORACLE~1\database>set oracle_sid=eygle注意此时的instance_name参数仍然为myoracle,也就是原来的实例名称:C:\ORACLE~1\database>sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.6.0 - Production on 星期一 12月 17 10:44:06 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已连接到空闲例程。
SQL> startup nomount;
ORACLE 例程已经启动。Total System Global Area 311500888 bytes
Fixed Size 454744 bytes
Variable Size 176160768 bytes
Database Buffers 134217728 bytes
Redo Buffers 667648 bytes
SQL> show parameter instance_name NAME TYPE这是因为作为一个初始化参数,在Oracle9i中,instance_name被写入参数文件:
------------------------------------ ----------------------
VALUE
------------------------------
instance_name string
myoracle
*.instance_name='myoracle'
而在Oracle10g中,缺省的,instance_name被从参数文件中移除,在实例启动过程中,Oracle从SID中来获得这个参数值。从而可以用于动态注册。
在9i中,我们可以从参数文件中删除这个参数:
SQL> create pfile from spfile;删除spfile,使用pfile启动实例,此时实例名称从SID中获得:文件已创建。
SQL> shutdown immediate;
ORA-01507: ??????
ORACLE 例程已经关闭。
SQL> startup nomount;
ORACLE 例程已经启动。Total System Global Area 311500888 bytes
Fixed Size 454744 bytes
Variable Size 176160768 bytes
Database Buffers 134217728 bytes
Redo Buffers 667648 bytes
SQL> show parameter instance_nameNAME TYPE
INSTANCE_NAME
------------------------------------ ----------------------
VALUE
------------------------------
instance_name string
eygle
SQL> select instance_name from v$instance;
--------------------------------
eygle
感谢我的读者指出,使我发现了以前并未注意到的Oracle9i和Oracle10g的一点小不同。
-The End-
- 2018-12-17 Oracle 12c :ASM 存储单盘限制从2TB到4PB的改变
- 2010-12-17 kswapd 进程占用过多资源导致RAC宕机
- 2008-12-17 《Oracle DBA诊断案例》与读者的建议
- 2008-12-17 DBA 1.0 与 DBA 眼中的 DBA 2.0 时代
- 2005-12-17 北京天下亦有雪
en,确实是这样
呵呵,eygle研究的越来越细了