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

Oracle数据库的启动——参数文件的选择与实例启动最小参数需求

原创 eygle 2019-12-19
1655

1. 参数文件的选择

我们来关注一下启动过程中Oracle选择参数文件的顺序。

从Oracle 9i开始,spfile被引入Oracle数据库,Oracle首选spfile<ORACLE_SID>.ora文件作为启动参数文件;如果该文件不存在,Oracle选择spfile.ora文件;如果前两者都不存在,Oracle将会选择init<ORACLE_SID>.ora文件;如果以上三个文件都不存在,Oracle将无法创建和启动instance。

Oracle在启动过程中,会在特定的路径中寻找参数文件,在Unix/Linux下的路径为ORACLE_HOME/dbs目录,在WINDOWS上的路径为ORACLE_HOME\database目录。

可以在SQL*PLUS中通过show parameter spfile命令来检查数据库是否使用了spfile文件,如果value不为Null,则数据库使用了spfile文件:

SQL> show parameter spfile
NAME    TYPE    VALUE
------- ------- -----------------------------------------------
spfile  string  ?/dbs/spfile@.ora
复制

注意这里的"?"代表ORACLE_HOME,@代表数据库的sid。现在如果更名spfile<ORACLE_SID>.ora文件,此后Oracle将选择spfile.ora文件启动数据库:

[oracle@jumper dbs]$ mv spfileconner.ora spfileconner.ora.bak
SQL> startup nomount
SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      ?/dbs/spfile.ora
复制

进一步的如果再更名spfile.ora文件,此后Oracle将选择init<ORACLE_SID>.ora文件启动数据库:

[oracle@jumper dbs]$ mv spfile.ora spfile.ora.bak
SQL> startup nomount
SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
复制

如果这三个文件都不存在,Oracle将无法启动:

[oracle@jumper dbs]$ mv initconner.ora initconner.ora.bak
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/9.2.0/dbs/initconner.ora'
复制

注意这里出现的错误提示,报告无法找到参数文件init<ORACLE_SID>.ora,这正是Oracle在启动过程中最后一个查找的参数文件。

在Oracle整个启动过程中,参数文件是写在应用程序中的硬代码,按照前面描述的顺序进行查找,以下是来自源码中关于参数文件及其查找顺序的定义:

?/dbs/spfile@.ora
?/dbs/spfile.ora
?/dbs/init@.ora
复制

虽然不能改变Oracle对于参数文件的搜索路径及行为,但是如果参数文件不在相应的位置,在Linux/Unix系统上,可以通过符号链接来进行重定位,以满足一些特殊需要。

2. 实例启动最小参数需求

在参数文件中,通常需要最少的参数是db_name ,设置了这个参数之后,数据库实例就可以启动,来看一个简单的测试。

可以随意命名一个ORACLE_SID(测试来自于Linux下,适用于Linux/Unix,对于Windows平台,需要通过oradim.exe工具创建服务),然后尝试启动到nomount状态:

[oracle@jumper dbs]$ export ORACLE_SID=julia
[oracle@jumper dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Mon May 8 11:08:36 2006
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to an idle instance.

SQL> startup nomount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/9.2.0/dbs/initjulia.ora'
复制

参数文件查找失败会给出提示信息,此时创建一个最简单的参数文件(仅包含DB_NAME初始化参数),然后就可以启动实例:

SQL> ! echo "db_name=julia" > /opt/oracle/product/9.2.0/dbs/initjulia.ora
SQL> startup nomount;
ORACLE instance started.

Total System Global Area   97588504 bytes
Fixed Size                   451864 bytes
Variable Size              46137344 bytes
Database Buffers           50331648 bytes
Redo Buffers                 667648 bytes
复制

缺省的,如果不设置,background_dump_dest目录(告警日志文件alert_<ORACLE_SID>.log的存放地点)位于$ORACLE_HOME/rdbms/log目录下:

SQL> show parameter background_dump
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ----------------------
background_dump_dest                 string                 ?/rdbms/log
复制

顺便看下其他几个缺省路径的地点:

SQL> show parameter dump_dest
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------
background_dump_dest                 string                 ?/rdbms/log
core_dump_dest                       string                 ?/dbs
user_dump_dest                       string                 ?/rdbms/log
SQL> show parameter control_files
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- -----------------------
control_files                        string                 ?/dbs/cntrl@.dbf
复制

这样,通过以上步骤就以最少的参数需求启动了Oracle实例。

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

评论