![](/img/trans.png)
[英]Getting ORACLE_HOME must be set and %ORACLE_HOME%\database must be writeable createdb terminated unsucessfully while creating db in postgres
[英]How does Oracle database know the global database name and the location of database files merely from ORACLE_HOME and ORACLE_SID?
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
為ORACLE_SID=foosid
是foogdn.example.com
? 我提供的唯一線索是ORACLE_SID
和ORACLE_HOME
,然后啟動了數據庫。 然后,數據庫似乎已經自行確定全局數據庫名稱為foogdn.example.com。 它是怎么做到的? 它在哪里存儲ORACLE_SID
到GLOBAL_NAME
的映射? 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
參數指向控制文件的位置,該文件包含有關數據,重做日志和其他文件位置的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.