按照慣例,本來在寫博文之前先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
不要生氣,根據上面步驟的操作,我們大概已經知道了手動建立一個資料庫的過程。下面我們只要集中精力解決第四步與第九步就行。這個我話下一節中介紹。