Oracle 数据库如何仅从ORACLE_HOME和ORACLE_SID中知道全局数据库名称和数据库文件的位置



Oracle 数据库如何仅从ORACLE_HOME和ORACLE_SID中知道全局数据库名称?

我的ORACLE_SIDfoosid,我的数据库名称是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> 

两个问题:

  1. 数据库是如何确定ORACLE_SID=foosid GLOBAL_NAMEfoogdn.example.com的?我提供的唯一线索是ORACLE_SIDORACLE_HOME,然后启动数据库。然后数据库似乎已经自己发现全局数据库名称是 foogdn.example.com。它是怎么做到的?它在哪里存储ORACLE_SIDGLOBAL_NAME的映射?
  2. databae 是如何确定数据库文件的位置的?这些信息存储在哪里?

Example.com(数据库的逻辑位置(是db_domain参数的值。 foogdn是数据库的名称 - db_name参数的值。db_namedb_doman 的值构成全局数据库名称。 db_domaindb_name都存储在spfile<SID>.ora和/或init[<SID>].ora文件中。此外,数据库名称与DBID一起存储在控制文件和每个数据文件的标头中。

基本结构为:

指定用于查找初始化参数文件的 oracle SID(系统标识符(,无论它是服务器参数文件 ( spfile<sid>.ora ( 还是文本初始化参数文件 init<sid>.ora 。 IPF(初始化参数文件(中的CONTROL_FILES参数指向控制文件的位置,其中包含有关数据、重做日志和其他文件位置的信息。

了解更多

相关内容

  • 没有找到相关文章

最新更新