《深入解析 Oracle》
·2·
下面逐个来看看以上各个步骤的具体过程以及含义。
1.1 启动数据库到 Nomount 状态
在启动的第一步骤,Oracle 首先寻找参数文件(pfile / spfile),然后根据参数文件中的设置
(如内存分配等设置),创建实例(INSTANCE), 分配内存,启动后台进程。Nomount 的过程
也就是启动数据库实例的过程。这个过程在后台是启动 Oracle 可执行程序的过程,Windows
上是执行 oracle.exe 文件进行初始化,在 Unix/Linux 上是执行 oracle 可执行文件进行初始化。
1.1.1. Oracle 的可执行文件
Windows 上 Oracle 11g 的执行文件大小约为 86M,而 Linux 上 Oracle 11g 的执行文件达到
145M 左右,在 Oracle 12c 版本中,Oracle 可执行文件的大小达到了约 280M,由此可见不同
版本源码复杂度的增加:
D:\oracle\product\11.1.0\BIN>dir oracle.exe
2007-10-03 17:42 89,702,400 oracle.exe
[oracle@localhost bin]$ ls -al $ORACLE_HOME/bin/oracle
-rwsr-s--x 1 oracle dba 151901909 Jul 4 15:13 /oracle/product/11.1.0/bin/oracle
eygle-/home/oracle$ ls -l $ORACLE_HOME/bin/oracle
-rwsr-s--x. 1 oracle oinstall 281911888 Mar 16 23:40 /oracle/product/12.1.0/bin/oracle
在 Unix/Linux 上可以通过 file 命令查看 oracle 执行文件来判断 Oracle 是 64 位或是 32 位
的,以下是 Linux 平台的一个示范输出,输出显示 Oracle 为 32 位:
[oracle@localhost bin]$ file $ORACLE_HOME/bin/oracle
/opt/oracle/product/11.1.0/bin/oracle: setuid setgid ELF 32-bit LSB executable, Intel
80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not
stripped
在 Windows 上,也有可选的命令增强工具可以提供类似的功能。由于 32 位的 Oracle 数
据库,最多只能使用约 1.7G 的内存,会极大约束 Oracle 的性能,在生产环境中,应当使用 64
位系统,部署 64 位的 Oracle 数据库。
了解 Oracle 可执行文件还有另外一个用途,在 Unix/Linux 上通过 strings 命令可以将 oracle
可执行文件中的字符文本转储出来,在转储的文本中可以找到很多有意思的信息,比如一些
Oracle 未公开的 Hints 信息、数据库字典基表创建信息等,类似如下一条命令可以完成这样的
工作:
strings $ORACLE_HOME/bin/oracle > oracle.txt
比如如下命令显示了源码中和 Oracle Database 12c 新特性 Pluggable 数据库相关的一些信
息:
eygle-/home/oracle$ grep -i pluggable oracle.txt|more
Pluggable Database Open/Close
Pluggable Database
评论