Oracle数据库如何仅从ORACLE_HOME和ORACLE_SID知道全局数据库名称?
我的ORACLE_SID
是foosid
,我的数据库名称是foogdn
。实际上,全局数据库名称为foogdn.example.com
。这在下面的shell和sqlplus会话中进行了演示。
$ export ORACLE_SID=foosid
$ export ORACLE_HOME=/home/ora/app/ora/product/12.1.0/dbhome_1
$ "$ORACLE_HOME/bin/sqlplus" / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue Aug 2 12:20:19 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 2925120 bytes
Variable Size 285216192 bytes
Database Buffers 125829120 bytes
Redo Buffers 5459968 bytes
Database mounted.
Database opened.
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
FOOGDN.EXAMPLE.COM
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/home/ora/app/ora/oradata/foogdn/control01.ctl
/home/ora/app/ora/fast_recovery_area/foogdn/control02.ctl
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/ora/app/ora/oradata/foogdn/system01.dbf
/home/ora/app/ora/oradata/foogdn/sysaux01.dbf
/home/ora/app/ora/oradata/foogdn/undotbs01.dbf
/home/ora/app/ora/oradata/foogdn/pdbseed/system01.dbf
/home/ora/app/ora/oradata/foogdn/users01.dbf
/home/ora/app/ora/oradata/foogdn/pdbseed/sysaux01.dbf
/home/ora/app/ora/oradata/foogdn/pdborcl/system01.dbf
/home/ora/app/ora/oradata/foogdn/pdborcl/sysaux01.dbf
/home/ora/app/ora/oradata/foogdn/pdborcl/pdborcl_users01.dbf
9 rows selected.
SQL>
两个问题:
GLOBAL_NAME
的{{1}}是ORACLE_SID=foosid
的?我提供的唯一线索是foogdn.example.com
和ORACLE_SID
,然后启动数据库。然后数据库似乎已经自己想出全局数据库名称是foogdn.example.com。它是怎么做到的?它在哪里存储ORACLE_HOME
到ORACLE_SID
?答案 0 :(得分:1)
Example.com
(数据库的逻辑位置)是db_domain
参数的值。 foogdn
是数据库的名称 - db_name
参数的值。 db_name
和db_doman
的值构成全局数据库名称。 db_domain
和db_name
都存储在spfile<SID>.ora
和/或init[<SID>].ora
文件中的任何一个或两个中。此外,数据库名称与DBID
一起存储在控制文件和每个数据文件的标题中。
基本结构是:
指定oracle SID(系统标识符),用于定位初始化参数文件,无论它是服务器参数文件(spfile<sid>.ora
)还是文本初始化参数文件init<sid>.ora
。 IPF(初始化参数文件)中的CONTROL_FILES
参数指向控制文件的位置,该文件包含有关数据,重做日志和其他文件位置的信息。