按照慣例,本來在寫博文之前先BB幾句。一直對數據庫不感興趣,這是我人短板,所以硬着頭皮學一下。入門小布老師的oracle視頻,前面幾節講結構,啟動過程,參數文件,直接把我繞歇菜了。
oracle通過向導創建自動創建數據庫非常簡單,根據提示一步一步就OK了。手動創建對於有專業人員必備技能。這過程,現在看來也難(因為沒注意細節)。但我花了三個晚上稿定。在此聲明一下,本文重在過程,通過這個過程,讓你對手動創建有個認識,所以會比較啰嗦。
-------------本機oracle目錄結構------------------------------------------------------------
ora10
|--product
|--admin
|--ora10
adump bdump cdump dpdump pfile udump
|--oradate
|--ora10
|--10.2.0
|--db_1
|--dbs
spfileora10.ora init.ora orapwora10 .....
---------------------------------------------------------------------------------------
了解oracle數據庫的創建過程
第一步: 指定一個sid
這一步簡單,給我們的數據庫起個名字。
ORACLE_SID的長度是12,只能使用數字和字母,區分大小寫。
第二步: 確保所需要的環境變量的設置
ORACLE_BASE
ORACLE_HOME
ORACLE_SID
ORA_NLS33
PATH
LD_LIBRARY_PATH
取保ORACLE_HOME 和 ORACLE_SID兩選項是要設置的
[ora10@localhost pfile]$ env | grep ORA 查看環境變量
ORACLE_SID=ora10
ORACLE_BASE=/ora10/product
ORACLE_HOME=/ora10/product/10.2.0/db_1
[ora10@localhost ~]$ vi .bash_profile 查看你本機具體環境的設置
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_BASE=/ora10/product
export ORACLE_HOME=$ORACLE_BASE/10.2.0/db_1
export ORACLE_SID=ora10
export LD_LIBRARY_PATH=$ORACLE_HOME/jdk/fre/lib/i386:$ORACLE_HOME/jdk/jre/lib/i386/server:$ORACLE_HOME/rdbms/lib:$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=American_America.ZHS16GBK
[ora10@localhost dbs]$ touch chongshi.env 創建一個chongshi.env文件
[ora10@localhost dbs]$ vi chongshi.env 編輯
ORACLE_BASE=/ora10/product
ORACLE_HOME=$ORACLE_BASE/10.2.0/db_1
ORACLE_SID=chongshi
提示:上面的環境有配置,根據你機子原先的配置進行。其實,你需要修改的就ORACLE_SID其它內容都可以與以前的保持一致。我前面也主過了,只有ORACLE_HOME 和 ORACLE_SID兩個選項是必須設置,以免環境變量設置出現。我們這里就缺省了。所以上面內容比較精簡。
[ora10@localhost dbs]$ chmod u+x chongshi.env 給文件加一個可執行權限
[ora10@localhost dbs]$ ll
總計 52
-rwxr--r-- 1 ora10 dba 257 07-17 23:09 chongshi.env
[ora10@localhost dbs]$ . ./chongshi.env 執行文件(前面兩個點中間有空格)
[ora10@localhost dbs]$ env | grep ORA 再次查看我們的環境變量已經被修改了
ORACLE_SID=chongshi
ORACLE_BASE=/ora10/product
ORACLE_HOME=/ora10/product/10.2.0/dba_1
提示,此處不用環境變量怎么回去,切換到其它用戶再切換回來。環境變量又會變成默認的環境變量。當然,你還需要執行. ./chongshi.env 進行修改。
第三步: 選擇一個數據庫管理員的身份驗證方法
我們這里以oracle組用戶直接進放oracle
[ora10@localhost pfile]$ id 查看本機id
uid=501(ora10) gid=501(dba) groups=501(dba)
第四步: 創建初始化參數文件
這里要求我們創建oracle的參數文件pfile/spfile
pfile/spfile作用:
Oracle通過一系列參數來對數據庫進行配置,參數文件就是存放參數的地方,oracle在啟動時會從參數中讀取相關的配置。
那么我們如何來配置這個參數文件呢? 這貌似是oracle玩的非常牛的人才會做的事兒。在我們創建數據庫后,oracle會自動幫有生成這些參數。我們所要做的就是把文件創建出來。
[ora10@localhost dbs]$ touch initchongshi.ora
根據pfile/spfile的命名規則,你必須要用 init加你設置的sid 。
[ora10@localhost dbs]$ vi initchongshi.ora
db_name='chongshi' -----我們只需要創建這一個參數,其它都可以缺省
第五步 :(windows only)創建一表實例
這一表windows系統才有,由本機試驗環境是linux ,所以直接跳過。
第六步 : 和實例進行連接
這步非常簡單,相當於我們進入數據庫
[ora10@localhost dbs]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jul 18 00:12:23 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> connect /as sysdba
Connected to an idle instance.
如果前面環境變量設置有問題的話, 這里一定會出錯。我這里就卡了。又回去把環境變量認真檢查了一下。
第七步:,創建一個服務器參數文件
這一步也很簡單,緊跟上一步,在進入數據庫的狀態,輸入以下命令創建spfile
SQL> create spfile from pfile;
File created.
SQL> ! //退出sql
[ora10@localhost dbs]$ ll
總計 60
-rwxr--r-- 1 ora10 dba 88 07-18 00:11 chongshi.env
-rw-rw---- 1 ora10 dba 1544 07-17 21:27 hc_ora10.dat
-rw-r--r-- 1 ora10 dba 19 07-17 23:33 initchongshi.ora
-rw-r----- 1 ora10 dba 12920 2001-05-03 initdw.ora
-rw-r----- 1 ora10 dba 8385 1998-09-11 init.ora
-rw-rw---- 1 ora10 dba 24 06-18 23:29 lkORA10
-rw-r----- 1 ora10 dba 1536 06-18 23:32 orapwora10
-rw-r----- 1 ora10 dba 2560 07-16 21:02 orapwtest
-rw-r----- 1 ora10 dba 1536 07-18 21:10 spfilechongshi.ora
-rw-r----- 1 ora10 dba 3584 07-17 22:00 spfileora10.ora
通過pfile(initchongshi.ora)文件生成spfile(spfilechongshi.ora)文件!
其實,這一步和第四步類似,都是創建啟動文件。可以缺省。對后續無影響。但是,oracle推薦你創建,如果你這里創建的話,新生成的數據庫使用spfile,不創建使用pfile。Spfile和pfile有什么區別。新舊區別,新的但然比舊的好。
第八步: 啟動實例
[ora10@localhost dbs]$ exit
exit
SQL> startup nomount 啟動數據庫
ORACLE instance started.
Total System Global Area 113246208 bytes
Fixed Size 1218004 bytes
Variable Size 58722860 bytes
Database Buffers 50331648 bytes
Redo Buffers 2973696 bytes
SQL>
這個時候,我們后台數據庫並沒有啟動。那我打入startup nomount 命令其實讀取的是spfilechongshi.ora 文件的內容,由此看出。上一步必不可少。呵呵!
第九步:發出創建數據庫語句
這一步創建數據庫,還是一句命令搞定。需要注意的,這里創建的數據庫名字與第四步創建的參數文件里設置的名字一致。
[ora10@localhost dbs]$ cat initchongshi.ora
db_name='chongshi'
[ora10@localhost dbs]$ exit
exit
SQL> create database chongshi;
創建文件比較大,會有點慢,請耐心等一下!
[ora10@localhost dbs]$ ll
總計 188628
-rwxr--r-- 1 ora10 dba 88 07-18 00:11 chongshi.env
-rw-r----- 1 ora10 dba 6078464 07-18 21:39 cntrlchongshi.dbf
-rw-r----- 1 ora10 dba 81928192 07-18 21:39 dbs1chongshi.dbf
-rw-rw---- 1 ora10 dba 1544 07-18 22:03 hc_chongshi.dat
-rw-rw---- 1 ora10 dba 1544 07-17 21:27 hc_ora10.dat
-rw-r--r-- 1 ora10 dba 19 07-17 23:33 initchongshi.ora
-rw-r----- 1 ora10 dba 12920 2001-05-03 initdw.ora
-rw-r----- 1 ora10 dba 8385 1998-09-11 init.ora
-rw-rw---- 1 ora10 dba 24 07-18 21:39 lkCHONGSHI
-rw-rw---- 1 ora10 dba 24 06-18 23:29 lkORA10
-rw-r----- 1 ora10 dba 52429312 07-18 21:39 log1chongshi.dbf
-rw-r----- 1 ora10 dba 52429312 07-18 21:39 log2chongshi.dbf
-rw-r----- 1 ora10 dba 1536 06-18 23:32 orapwora10
-rw-r----- 1 ora10 dba 2560 07-16 21:02 orapwtest
-rw-r----- 1 ora10 dba 1536 07-18 21:10 spfilechongshi.ora
-rw-r----- 1 ora10 dba 3584 07-17 22:00 spfileora10.ora
上面列表中標紅的就是我們創建的數據庫
============================================小隔開一下===========================
OK!通過上面簡單的幾步,我們已經完整的創建了一個數據庫,由於我們設置的太簡單了。這個數據庫基本是不能用的。麻雀雖然小,步驟很全。
手工創建數據庫的難點就是第四步與第九步。
第四步,因為我上面的pfile文件設置太過簡單。第九步,創建一下比較實用的數據庫也不是那么簡單一下命令就稿定的。
所以把我們創建的幾個文件干掉,重新再來。哈哈!你怒了?
cntrlchongshi.dbf
dbs1chongshi.dbf
log1chongshi.dbf
log2chongshi.dbf
initchongshi.ora
spfilechongshi.ora
不要生氣,根據上面步驟的操作,我們大概已經知道了手動創建一個數據庫的過程。下面我們只要集中精力解決第四步與第九步就行。這個我話下一節中介紹。