創建Oracle數據庫、數據庫名與實例名與SID之間的關系(圖文詳解)


分類:

目錄(?)[+]

目錄

軟件環境

  • 操作系統
    • RHEL 6.1
  • 軟件環境
    • Oracle10gr2

前言

在上一篇 RHEL6.1 安裝 Oracle10gr2 (圖文、解析) 中記錄了如何成功的在RHEL6.1安裝Oracle10gr2,但是在安裝的過程中沒有創建數據庫,本篇主要記錄了如果創建數據庫和監聽程序。

安裝Oracle監聽程序

Oracle Net Services Configuration:簡稱netca,也是啟動其配置程序的指令名稱。主要作用是配置監聽程序、命名方法配置、本地net服務配置、目錄使用配置。即可以配置一個監聽程序和服務名,從而可以使oracle client連接至數據庫進行相關操作。
監聽的文件存放位置在:$ORACLE_HOME\NETWORK\ADMIN\listener.ora
服務名的文件存放位置在:$ORACLE_HOME\NETWORK\ADMIN\tnsnames.ora

以oracle用戶登錄並執行netca指令啟動配置程序:

[oracle@jmilk database]$ netca
  • 1

選擇配置監聽程序
這里寫圖片描述

添加一個監聽程序
這里寫圖片描述

設定一個監聽程序的名稱
這里寫圖片描述

選擇監聽程序的協議
這里寫圖片描述

選擇監聽程序的端口
這里寫圖片描述

還需要創建別的監聽程序嗎?
這里寫圖片描述

創建完成
這里寫圖片描述

點擊Finsh
這里寫圖片描述

配置完成后的Output

Configuring Listener:LISTENER
Default local naming configuration complete. Listener configuration complete. Oracle Net Listener Startup: Running Listener Control: /u01/oracle/bin/lsnrctl start LISTENER Listener Control complete. Listener started successfully. Oracle Net Services configuration successful. The exit code is 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

測試

[root@jmilk bin]# pwd /u01/oracle/bin [root@jmilk bin]# ./lsnrctl status
  • 1
  • 2
  • 3

啟動、停止監聽程序

lsnrctl start   #啟動 lsnrctl stop #停止 lsnrctl status #查看狀態 
  • 1
  • 2
  • 3

netca的執行文件

[root@jmilk bin]# pwd /u01/oracle/bin [root@jmilk bin]# vim netca
  • 1
  • 2
  • 3

創建數據庫

DBCA程序可以執行創建數據庫、刪除數據庫、管理數據庫模板、配置現有數據庫中的數據庫選件
配置Database Configuration Assistant

[oracle@jmilk database]$ dbca
  • 1

創建數據庫歡迎頁面
這里寫圖片描述

選擇創建一個數據庫
這里寫圖片描述

選擇創建一個通用數據庫
這里寫圖片描述

輸入要創建的數據庫的名稱
這里寫圖片描述

配置Enterprise Manager
可以配置Enterprise manager警告,警告的內容為:使用database control配置數據庫時,要求在當前oracle主目錄中配置監聽程序,必須運行Netca以配置並啟動監聽程序,然后才能繼續。或者可以選擇繼續,但是不要使用database control配置。

這里寫圖片描述

輸入系統用戶的全局密碼,也可以單獨的為每一個系統用戶編輯不同的密碼。
All Account:system、sys、sysdba
這里寫圖片描述

選擇存儲數據庫的方式,這里選擇存儲在OS的File system中
這里寫圖片描述

選擇創建數據庫文件的位置,這里選擇從數據庫模板創建
這里寫圖片描述

指定數據庫的快速恢復區域
這里寫圖片描述

這里寫圖片描述

選擇數據庫的字符集為UTF8,更好的支持中文
這里寫圖片描述

這里寫圖片描述

創建數據庫,可以選擇生產數據庫創建腳本
這里寫圖片描述

這里寫圖片描述

dbca 建庫時報錯提示:ORA-27125:unable to create shared memory segment
解決方法

[oracle@jmilk database]$ cd $ORACLE_HOME/bin [oracle@jmilk bin]$ mv oracle oracle.bin
  • 1
  • 2

vim oracle

#!/bin/bash export DISABLE_HUGETLBFS=1 exec $ORACLE_HOME/bin/oracle.bin $@ EOF
  • 1
  • 2
  • 3
  • 4
[oracle@jmilk bin]$ chmod a+x oracle [oracle@jmilk bin]$ id oracle uid=501(oracle) gid=502(oinstall) groups=502(oinstall),503(dba) [oracle@test bin]$ more /proc/sys/vm/hugetlb_shm_group 0 [oracle@test bin]$ su - root Password: [root@test ~]# echo "503" > /proc/sys/vm/hugetlb_shm_group #將dba的gid寫入hugetlb_shm_group
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

這里寫圖片描述

等待創建數據庫完成
這里寫圖片描述

這里寫圖片描述

點擊Password Management可以對系統用戶進行配置,可以解鎖、鎖定一個用戶,也可以為用戶設定一個密碼。
其中的SCOTT用戶是Oracle公司的創始人之一,一般我們用這個用戶來進行學習,他的默認的密碼為tiger這個密碼是SCOTT家中的一只貓的名字。
這里寫圖片描述

這里寫圖片描述

點擊Exit完成數據庫的創建
這里寫圖片描述

測試:輸入 用戶名/密碼 能夠成功登陸表示數據庫創建成功。

[oracle@jmilk ~]$ sqlplus system/fanguiju

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jun 2 18:10:04 2016 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SQL> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

數據庫名db_name

數據庫名是用於區分不同數據庫的內部標識,就像人的身份證號一樣。
他用參數DB_NAME表示,如果一台Oracle Server上創建了多個數據庫,那么每一個數據庫都會有一個唯一的數據庫名。在數據庫安裝或創建完成之后,參數DB_NAME被寫入參數文件/u01/admin/demo/pfile/init.ora.425201695953之中。
注意:
在創建數據庫時就應考慮好數據庫名,並且在創建完數據庫之后,數據庫名不宜修改,即使要修改也會很麻煩。因為,數據庫名還會被寫入控制文件中,控制文件是以二進制型式存儲的,用戶無法修改控制文件的內容。假設用戶修改了參數文件中的數據庫名,即修改DB_NAME的值。但是在Oracle啟動時,由於參數文件中的DB_NAME與控制文件中的數據庫名不一致,導致數據庫啟動失敗,將返回ORA-01103錯誤。

數據庫參數文件:

[oracle@jmilk pfile]$ pwd /u01/admin/demo/pfile [oracle@jmilk pfile]$ vim init.ora.425201695953 
  • 1
  • 2
  • 3

數據庫名的作用
數據庫名是在安裝數據庫、創建新的數據庫、創建數據庫控制文件、修改數據結構、備份與恢復數據庫時都需要使用到的。
有很多Oracle安裝文件目錄是與數據庫名相關的
Example:

[oracle@jmilk demo]$ pwd /u01/oradata/demo
  • 1
  • 2

查詢當前數據名
方法一:

select name from v$database;
  • 1

方法二:

show parameter db
  • 1

方法三:查看參數文件。
vi init.ora.425201695953

db_name=demo
  • 1

數據庫實例名instance_name

數據庫實例名用於Oracle與OS之間的聯系和用於Oracle Server與外部連接時使用,可以和數據庫名一樣,也可以不一樣。該參數為instance_name,若OS要與數據庫取得交互,必須使用數據庫實例名。
Example:**Client要和某一個Oracle Server連接,就必須知道其數據庫實例名,只知道數據庫名是沒有用的,與數據庫名不同,在數據庫安裝或創建數據庫之后,實例名可以被修改。數據庫安裝完成后,該實例名被寫入數據庫參數文件**pfile中,格式如下:

  db_name="demo" # 一般不允許修改 db_domain="" instance_name=demo # 可以修改,可以與db_name相同也可不同 
  • 1
  • 2
  • 3

數據庫名與實例名的關系

在一般情況下,數據庫名和實例名是一對一的關系,但如果在oracle並行服務器架構(即oracle實時應用集群)中,數據庫名和實例名是一對多的關系。數據庫名和實例名共同確定一個數據庫,一個數據庫中可以有多個實例,相互運行不受影響。

查詢當前數據庫實例名
方法一:

select instance_name from v$instance;
  • 1

方法二:

show parameter instance
  • 1

方法三:在參數文件中查詢

操作系統環境變量ORACLE_SID

在實際中,對於數據庫實例名的描述有時使用實例名instance_name參數,有時使用ORACLE_SID參數。
這兩個都是數據庫實例名,它們有什么區別呢?
實例名instance_name、ORACLE_SID、Database、OS之間的關系

  (OS<----------------> ORACLE Database<--------(Instance_name(實例名)) 
  • 1

雖然這里列出的兩個參數都是數據庫實例名,但:
instance_name參數是ORACLE數據庫的參數,此參數可以在參數文件中查詢到。
ORACLE_SID參數則是操作系統環境變量。

操作系統環境變量ORACLE_SID用於和操作系統交互,也就是說,從操作系統的角度訪問實例,必須通過ORACLE_SIDORACLE_SID必須與instance_name的值一致,否則,你將會收到一個錯誤,在LinuxOS中是ORACLE not available,在winntOS中是TNS:協議適配器錯誤。此參數與ORACLE_BASEORACLE_HOME等用法相同。在數據庫安裝之后,ORACLE_SID被用於定義數據庫參數文件的名稱。
Example:

$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora #或 /u01/admin/demo/pfile/init.ora.425201695953 
  • 1
  • 2
  • 3

定義方法:

export ORACLE_SID=demo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM