暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

9i与10g初始化参数instance_name的变化

原创 eygle 2007-12-17
399
昨天《循序渐进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
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

注意此时的instance_name参数仍然为myoracle,也就是原来的实例名称:
SQL> show parameter instance_name
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
instance_name string
myoracle

这是因为作为一个初始化参数,在Oracle9i中,instance_name被写入参数文件:
*.instance_name='myoracle'

而在Oracle10g中,缺省的,instance_name被从参数文件中移除,在实例启动过程中,Oracle从SID中来获得这个参数值。从而可以用于动态注册。
在9i中,我们可以从参数文件中删除这个参数:
SQL> create pfile from spfile;
文件已创建。
SQL> shutdown immediate;
ORA-01507: ??????
ORACLE 例程已经关闭。

删除spfile,使用pfile启动实例,此时实例名称从SID中获得:
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
------------------------------------ ----------------------
VALUE
------------------------------
instance_name string
eygle
SQL> select instance_name from v$instance;
INSTANCE_NAME
--------------------------------
eygle

感谢我的读者指出,使我发现了以前并未注意到的Oracle9i和Oracle10g的一点小不同。
-The End-
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论