
版權聲明:轉載請注明出處 JmilkFan_范桂颶:http://blog.csdn.net/jmilk
目錄
軟件環境
- 操作系統
- 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_SID
。ORACLE_SID
必須與instance_name
的值一致,否則,你將會收到一個錯誤,在LinuxOS中是ORACLE not available,在winntOS中是TNS:協議適配器錯誤。此參數與ORACLE_BASE
、ORACLE_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