詳細(xì)步驟如下:
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比固始網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式固始網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋固始地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
1、操作系統(tǒng)安裝組建選擇:
GNOME Desktop Environment
Editors
Graphical Internet
Text-based Internet(可以不選擇)
Development Libraries
Development Tools
Server Configuration Tools(可以不選擇)
Administration Tools
Base
System Tools
X Window System
2、為了防止在安裝過程中出現(xiàn)亂碼
vi ?/etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
3、安裝oracle 依賴包;
有的依賴包安裝操作系統(tǒng)時(shí)已經(jīng)安裝,這里只裝缺少的,也是必須的,否則,安裝oracle過程會(huì)報(bào)錯(cuò)。
compat-libstdc++-33 libaio-devel sysstatunixODBC unixODBC-devel
4、創(chuàng)建必要的用戶組及用戶;
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd -g oinstall -G dba oracle
passwd oracle5、創(chuàng)建所需目錄及賦予目錄權(quán)限;
創(chuàng)建oracle安裝目錄:
mkdir-p /data/oracle/app/
mkdir -p/data/oracle/oraInventory
創(chuàng)建oracle數(shù)據(jù)庫存放目錄:
mkdir-p /data/oracle/oradata
chown -R oracle:oinstall /data/oracle/app/
創(chuàng)建oracle備份目錄:
mkdir -p /backup/oracle/
賦予各個(gè)目錄權(quán)限:
chown-R oracle:oinstall /data/oracle/oradata
chown -Roracle:oinstall /data/oracle/oraInventory
chmod-R 775 /data/oracle/app/
chmod-R 775 /data/oracle/oradata
chmod -R775 /data/oracle/oraInventory
chown -R oracle:oinstall /backup/oracle/
chmod-R 775 /backup/oracle/
6、修改oracle安裝用戶資源限制;
當(dāng)然,此處的值 需要根據(jù)實(shí)際去修改;
vi?/etc/security/limits.conf
oracle soft nproc 2047
oraclehard nproc 16384
oraclesoft nofile 1024
oraclehard nofile 65536
7、設(shè)置oracle用戶環(huán)境變量
su -oracle
vim/home/oracle/.bash_profile? 加入以下內(nèi)容
使環(huán)境變量生效
source/home/oracle/.bash_profile
8、至此oracle安裝完成。
IC介紹
許多人正在使用Oracle Instant Client,它提供一個(gè)部署基于OCI、OCCI、JDBC OCI應(yīng)用容易和快速的方法。
通過添加更多的工具,Instant Client可以變成一個(gè)更加強(qiáng)大的工具,如下:
1. tnsping
2. sqlldr
3. tkprf
4. exp/imp
5. OCM
6. 你自己的工具
這樣做的主要優(yōu)點(diǎn)是:
1. 安裝是一件輕而易舉的事情,只要解壓即可完成。
2. 體積小,未壓縮100MB到150MB或壓縮50MB,它可以安裝在USB盤上
3. 不涉及到SA(軟件架構(gòu))
比較一個(gè)完整的Oracle安裝需要大量的磁盤空間,而且還涉及到SA。
IC需求
1. 一個(gè)帶有150MB+磁盤空間的Unix/Linux賬號(hào):
hadoop@192.168.8.162:/home/hadoop/oracle
2. 安裝Oracle 11gR2的相同平臺(tái),一個(gè)具有讀訪問權(quán)限的賬號(hào):
root@192.168.8.192:/u01/product/oracle/11.2.0/db_1
IC安裝
從Oracle官方網(wǎng)址下載安裝包,
注:請(qǐng)根據(jù)操作系統(tǒng)版本下載相應(yīng)的安裝包,這里下載Linux X86-64安裝包。
instantclient-basic-linux.x64-11.2.0.4.0.zip
instantclient-jdbc-linux.x64-11.2.0.4.0.zip
instantclient-sdk-linux.x64-11.2.0.4.0.zip
instantclient-sqlplus-linux.x64-11.2.0.4.0.zip
注:下載Instant Client時(shí)需要?jiǎng)?chuàng)建一個(gè)Oracle賬號(hào)才能下載。
使用SSH客戶端使用安裝賬號(hào)登錄到服務(wù)器,在根目錄下創(chuàng)建一個(gè)oracle目錄:
$mkdir /home/hadoop/oracle
上傳所有壓縮包或至少basic和sqlplus兩個(gè)包到你賬號(hào)的根目錄下oracle中。
解壓到當(dāng)前目錄下完成安裝。
$ cd /home/hadoop/oracle
$ unzipinstantclient-basic-linux.x64-11.2.0.4.0.zip
$ unzipinstantclient-sqlplus-linux.x64-11.2.0.4.0.zip
$ unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip
$ unzip instantclient-jdbc-linux.x64-11.2.0.4.0.zip
解壓完畢后會(huì)在當(dāng)前目錄下生成一個(gè)instantclient_11_2目錄。
$ ll /home/hadoop/oracle/instantclient_11_2
IC配置
配置下面的環(huán)境變量到你的Shell配置文件中。
$ vi ~/.bashrc
跳到文件的末尾,添加下面這些環(huán)境變量:
export RACLE_IC_HOME=/home/hadoop/oracle/instantclient_11_2
exportORACLE_HOME=$ORACLE_IC_HOME
exportTNS_ADMIN=$ORACLE_IC_HOME
exportPATH=$PATH:$ORACLE_IC_HOME
exportLD_LIBRARY_PATH=$ORACLE_IC_HOME
exportCLASSPATH=$ORACLE_IC_HOME/ojdbc6.jar:./
$ source ~/. bashrc
或 $ . ~/.bashrc
注:如果需要讓所有用戶都能使用,需要把上面的配置添加/etc/profile中。
在$ORACLE_IC_HOME目錄下創(chuàng)建一個(gè)tnsnames.ora文件:
$ vi /home/hadoop/oracle/instantclient_11_2/tnsnames.ora
orcl=(description=(address=(protocol=tcp)(host=192.168.8.161)(port=1521))(connect_data=(server=dedicated)(service_name=wcdma)))
或
ora =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.8.161)(PORT = 1521)))(CONNECT_DATA =(SERVER =DEDICATED)(SERVICE_NAME = wcdma)))
SQL*Plus
$ sqlplus kqi/kqi@192.168.8.161:1521/wcdma
或
$ sqlplus kqi/kqi@orcl
SQL*Plus: Release 11.2.0.4.0 Production onThu Nov 20 14:01:49 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise EditionRelease 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Miningand Real Application Testing options
SQL
ERROR:
ORA-12154: TNS:could not resolve theconnect identifier specified
對(duì)于這種問題,排除添加的配置格式錯(cuò)誤后??赡茉蚴亲x取的tnsnames.ora路徑根本就不是$ORACLE_HOME/network/admin下。
注:tnsnames.ora文件的查找路徑順序?yàn)椋?/p>
$HOME = $TNS_ADMIN = /etc =$ORACLE_HOME/network/admin/。
現(xiàn)在我們已經(jīng)有一個(gè)構(gòu)建自己的Instant Client包的基礎(chǔ)了。下面是Instant Client的核心文件(位于/home/hadoop/oracle/instantclient_11_2中):
1. libclntsh.so.11.1:客戶端代碼庫
2. libociei.so:OCI InstantClient數(shù)據(jù)共享庫
3. libnnz11.so:安全庫
4. libocci.so.11.1:Oracle C++調(diào)用接口庫
5. libocijdbc11.so:JDBC OCI庫
6. ojdbc6/5.jar:JDBC驅(qū)動(dòng)(OCI和Thin)
7. orai18n.jar:字符集轉(zhuǎn)換和本地支持庫
Tnsping
從安裝Oracle的服務(wù)器上拷貝tnsping過來,執(zhí)行命令:
$ cd /home/hadoop/oracle/instantclient_11_2
$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/tnsping./
現(xiàn)在讓在IC安裝服務(wù)器上嘗試運(yùn)行下它:
$ tnsping ora
TNS Ping Utility for Linux: Version11.2.0.4.0 - Production on 20-NOV-2014 14:30:21
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Message 3511 not found; No message file forproduct=network, facility=TNSMessage 3512 not found; No message file forproduct=network, facility=TNSMessage 3513 not found; No message file forproduct=network, facility=TNSMessage 3509 not found; No message file forproduct=network, facility=TNS
運(yùn)行后tnsping抱怨一些文件丟失,更具體的說一個(gè)消息文件丟失?,F(xiàn)在,我們把該文件從Oracle安裝服務(wù)器上拷貝過來,進(jìn)入到instantclient_11_2目錄:
$ mkdir -p network/mesg
$ cd network/mesg/
現(xiàn)在從安裝Oracle服務(wù)上拷貝tnsus.msb文件到該目錄中:
$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/network/mesg/tnsus.msb ./
讓我們?cè)賴L試一次tnsping,結(jié)果如下:
$ tnsping ora
TNS Ping Utility for Linux: Version11.2.0.4.0 - Production on 20-NOV-2014 14:49:54
Copyright (c) 1997, 2013, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.161)(PORT =1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = wcdma)))
OK (0 msec)
Sqlldr
本節(jié)將添加另外一個(gè)工具sqlldr。
首先,我們從安裝Oracle的服務(wù)器上拷貝sqlldr到IC安裝目錄instantclient_11_2下。
$ cd /home/hadoop/oracle/instantclient_11_2
$ scproot@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/sqlldr ./
嘗試運(yùn)行它:
$ sqlldr
Message 2100 not found; No message file forproduct=RDBMS, facility=ULMessage 2100 not found; No message file forproduct=RDBMS, facility=UL
首先我們需要在instantclient_11_2下創(chuàng)建rdbms/mesg目錄。
$ cd /home/hadoop/oracle/instantclient_11_2
$ mkdir -p rdbms/mesg
$ cd rdbms/mesg
把ORACLE安裝目錄下rdmsb/mesg/ulus.msb拷貝到當(dāng)前目錄。
$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/rdbms/mesg/ulus.msb./
現(xiàn)在,讓我們?cè)俅螄L試運(yùn)行它。
$ sqlldr
SQL*Loader: Release 11.2.0.4.0 - Productionon Thu Nov 20 16:40:10 2014
Copyright (c) 1982, 2011, Oracle and/or itsaffiliates. All rights reserved.
Usage: SQLLDR keyword=value[,keyword=value,...]
Valid Keywords:
Exp/imp
從安裝Oracle服務(wù)器上拷貝二進(jìn)制文件過來。
$ cd /home/hadoop/oracle/instantclient_11_2
$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/imp ./
$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/exp ./
嘗試運(yùn)行imp和exp,結(jié)果如下:
$ imp
Message 100 not found; No message file forproduct=RDBMS, facility=IMP: Release 11.2.0.4.0 - Production on Thu Nov 2017:02:57 2014
Copyright (c) 1982, 2011, Orac
Invalid format of Import utility name
Verify that ORACLE_HOME is properly set
Import terminated unsuccessfully
IMP-00000: Message 0 not found; No messagefile for product=RDBMS, facility=IMP
$ exp
Message 206 not found; No message file forproduct=RDBMS, facility=EXP: Release 11.2.0.4.0 - Production on Thu Nov 20 17:03:392014
Copyright (c) 1982, 2011, Orac
Invalid format of Export utility name
Verify that ORACLE_HOME is properly set
Export terminated unsuccessfully
EXP-00000: Message 0 not found; No messagefile for product=RDBMS, facility=EXP
再從安裝Oracle服務(wù)器上拷貝rdbms/mesg下的expus.msb和ipus.msb過來。
$ cd rdbms/mesg/
$ scproot@192.168.8.192:/u01/product/oracle/11.2.0/db_1/rdbms/mesg/impus.msb ./
$ scproot@192.168.8.192:/u01/product/oracle/11.2.0/db_1/rdbms/mesg/expus.msb ./
再次運(yùn)行imp/exp工具錯(cuò)誤提示消失,可以正常運(yùn)行。
Tkprof
現(xiàn)在我們繼續(xù)添加我最喜歡的工具tkprof。
從安裝Oracle的服務(wù)器拷貝tkprof到instantclient_11_2目錄下。
$ cd /home/hadoop/oracle/instantclient_11_2
$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/tkprof ./
$ mkdir -p oracore/mesg/
$ cd oracore/mesg/
$ scproot@192.168.8.192:/u01/product/oracle/11.2.0/db_1/oracore/mesg/lrmus.msb ./
使用示例:
$ tkprof test.trc test.out
Instant Client Bundle
現(xiàn)在,我們已經(jīng)讓所有工具都能正常工作。簡單的使用工具壓縮打包instantclient_11_2目錄,這樣你就獲得你自己的Instant Client包。例如:
$ cd /home/hadoop/oracle
$ tar zcf instantclient_11_2.tar.gzintantclient_11_2
正如你所看到的,打包成的instant client帶有tnsping,sqlldr, exp/imp,tkprof工具,這讓IC更加的功能強(qiáng)大。
安裝自定義的IC包步驟如下:
1. 上傳到服務(wù)器上解壓縮
2. 修改環(huán)境變量
$ vi ~/.bashrc
跳到文件的末尾,添加下面這些環(huán)境變量:
export ORACLE_IC_HOME=解壓目錄/instantclient_11_2
export ORACLE_HOME=$ORACLE_IC_HOME
export TNS_ADMIN=$ORACLE_IC_HOME
export PATH=$PATH:$ORACLE_IC_HOME
export LD_LIBRARY_PATH=$ORACLE_IC_HOME
exportCLASSPATH=$ORACLE_IC_HOME/ojdbc6.jar:./
$ source ~/. bashrc
或 $ . ~/.bashrc
3. 添加連接數(shù)據(jù)庫的配置
$ vi $ORACLE_IC_HOME/tnsnames.ora
安裝完成,現(xiàn)在就可以使用Instant Client中的工具啦!
25、包
(1)定義包頭
語法:
CREATE [OR REPLACE] PACKAGE [schame_name.]包名
IS | AS
包描述
包描述:可以是變量、常量及數(shù)據(jù)類型定義和游標(biāo)定義,也可以是存儲(chǔ)過程、函數(shù)定義和參數(shù)列表返回值類型。
例:
CREATE OR REPLACE PACKAGE employeePackage
AS
--類型定義
Type empRecType is record(
Empno number(4),
Salary number
)
--變量定義
p1 varchar2(20);
type t_departmentNo table is table of dept.deptno%type
index by binary_integer;
--游標(biāo)定義
Cursor order_sal retrurn EmpRecType;
--聘用員工過程
Procedure HireEmployee(p_EmpNo emp.empno%type);
End employeePackage;
例:
CREATE OR REPLACE PACKAGE scott.pkg_displayproduct
IS
procedure prc_getproductinfo
(
pid scott.product.prodid%type,
pname out scott.product.prodname%type,
ctname out scott.product.CATEGORYID%type,
dscp out scott.product.description%type
);
function fun_getstock
(
pid scott.product.prodid%type
)
return number;
END pkg_displayproduct;
(2)定義包體
語法:
CREATE OR REPLACE PACKAGE BODY [schame_name.]包名
IS | AS
包體描述;
END 包名;
包名:將要?jiǎng)?chuàng)建的包名稱,該名稱可以和包頭所在的包名相同,也可以不同。
包體描述:游標(biāo)、存儲(chǔ)過程或者函數(shù)的定義
包體是可選的,如果在包頭中沒有聲明任何存儲(chǔ)過程或者函數(shù),則包體就不存在,即使在包頭有變量、游標(biāo)或者類型的聲明
(3)引用包中對(duì)象
BEGIN
[schame_name.][包名.]對(duì)象名;
END;
先create package,在里面聲明procedure
然后再create package body,在package body里面編寫procedure的代碼即可(相當(dāng)于create procedure)。
包里沒有create procedure
示例如下:
CREATE OR REPLACE PACKAGE pkg_test IS
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2);
...
END test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test IS
...
PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2) IS
BEGIN
...
END;
...
END pkg_test;
好像不行,都是用命令創(chuàng)建,創(chuàng)建如下:
在Oracle中建庫,通常有 兩種方法。一是使用Oracle的建庫工且DBCA,這是一個(gè)圖形界面工且,使用起來方便且很容易理解,因?yàn)樗慕缑嬗押谩⒚烙^,而且提示也比較齊全。在 Windows系統(tǒng)中,這個(gè)工具可以在Oracle程序組中打開(”開始”—“程序”—“ Oracle - OraDb10g_home1”—“ Configuration and Migration Tools”—“ Database Configuration Assistant”),也可以在命令行(”開始”—“運(yùn)行”—“cmd”)工具中直接輸入dbca來打開。另一種方法就是手工建庫,這也就是下面所要講的內(nèi)容。
手工建庫比起使用DBCA建庫來說,是比較麻煩的,但是如果我們學(xué)好了手工建庫的話,就可以使我們更好地理解Oracle數(shù)據(jù)庫的體系結(jié)構(gòu)。手工建庫須要經(jīng)過幾個(gè)步驟,每一個(gè)步驟都非常關(guān)鍵。它包括:
1、 創(chuàng)建必要的相關(guān)目錄
2、 創(chuàng)建初始化參數(shù)文件
3、 設(shè)置環(huán)境變量Oracle_sid
4、 創(chuàng)建實(shí)例
5、 創(chuàng)建口令文件
6、 啟動(dòng)數(shù)據(jù)庫到nomount(實(shí)例)狀態(tài)
7、 執(zhí)行建庫腳本
8、 執(zhí)行catalog腳步本創(chuàng)建數(shù)據(jù)字典
9、 執(zhí)行catproc創(chuàng)建package包
10、 執(zhí)行pupbld
11、 由初始化參數(shù)文件創(chuàng)建spfile文件
12、 執(zhí)行scott腳本創(chuàng)建scott模式
做完了以上的步驟之后就可以使用“SQLalter database open;”打開數(shù)據(jù)庫正常的使用了。下面,我將具體地把以上的幾個(gè)步驟用實(shí)驗(yàn)展開來講。
實(shí)驗(yàn)系統(tǒng)平臺(tái):Windows Server 2000 數(shù)據(jù)庫系統(tǒng)版本:Oracle Database 10G
Oracle的安裝路徑:D盤 創(chuàng)建的數(shù)據(jù)庫名稱:book
1、打開命令行工具,創(chuàng)建必要有相關(guān)目錄
C:\mkdir D:\oracle\product\10.1.0\admin\book
C:\mkdir D:\oracle\product\10.1.0\admin\book\bdump
C:\mkdir D:\oracle\product\10.1.0\admin\book\udump
C:\mkdir D:\oracle\product\10.1.0\admin\book\cdump
C:\mkdir D:\oracle\product\10.1.0\admin\book\pfile
C:\mkdir D:\oracle\product\10.1.0\admin\book\create
C:\mkdir D:\oracle\product\10.1.0\oradata\book
上面創(chuàng)建目錄的過程也可以在Windows的圖形界面中去創(chuàng)建。其中 D:\oracle\product\10.1.0\admin\book目錄下的幾個(gè)子目錄主要用于存放數(shù)據(jù)庫運(yùn)行過程中的跟蹤信息。最重要的兩上子目 錄是bdump和udump目錄,bdump目錄存放的是數(shù)據(jù)庫動(dòng)行過程中的各個(gè)后臺(tái)進(jìn)程的跟蹤信息,當(dāng)中alert文件是警告文件,其文件名稱為 alert_book.log,當(dāng)數(shù)據(jù)庫出現(xiàn)問題時(shí),首先就可以去查看此文件以找出原因,手工創(chuàng)建過程中出現(xiàn)的各種問題往往也可以通過查看這個(gè)文件找到原 因。Udump目錄存放和特定會(huì)話相關(guān)的跟蹤信息。D:\oracle\product\10.1.0\oradata\book目錄存放各種數(shù)據(jù)庫文 件,包括控制文件、數(shù)據(jù)文件、重做日志文件。
2、創(chuàng)建初始化參數(shù)文件
數(shù)據(jù)庫系統(tǒng)啟動(dòng)時(shí)須要用初始化參數(shù)文件的設(shè)置分配內(nèi)存、啟動(dòng)必要的后臺(tái)進(jìn)程的。因此,初始化參數(shù)文件創(chuàng)建的是否正確、參數(shù)設(shè)置是否正確關(guān)系著整個(gè)建庫的“命運(yùn)”。
創(chuàng)建初始化參數(shù)文件可以通過拷貝現(xiàn)在的初始化參數(shù)文件并將其做適當(dāng)?shù)男薷募纯?,從?不必要用手工去一句一句地寫出來,因?yàn)槌跏蓟瘏?shù)文件的結(jié)構(gòu)體系基本上都是一樣的。在我們安裝Oracle的時(shí)候,系統(tǒng)已經(jīng)為我們安裝了一個(gè)名為orcl 的數(shù)據(jù)庫,于是我們可以從它那里得到一份初始化參數(shù)文件。打開D:\oracle\product\10.1.0\admin\orcl\pfile,找 到init.ora文件,把它拷貝到D:\oracle\product\10.1.0\bd_1\databse下,并將其改名為 initbook.ora。接著用記事本的方式打開initbook.ora,修改以下的內(nèi)容:
db_domain=""
db_name=book
control_files=("D:\oracle\product\10.1.0\oradata\book\control01.ctl", "D:\oracle\product\10.1.0\oradata\book\control02.ctl", "D:\oracle\product\10.1.0\oradata\book\control03.ctl")
undo_management=AUTO
undo_tablespace=UNDOTBS1 ――注意此處的“UNDOTBS1”要和建庫腳步本中對(duì)應(yīng)
background_dump_dest=D:\oracle\product\10.1.0\admin\book\bdump
core_dump_dest=D:\oracle\product\10.1.0\admin\book\cdump
user_dump_dest=D:\oracle\product\10.1.0\admin\book\udump
3、打開命令行,設(shè)置環(huán)境變量oracle_sid
C:\set oracle_sid=book
設(shè)置環(huán)境變量的目地是在默認(rèn)的情況下,指定命令行中所操作的數(shù)據(jù)庫實(shí)例是book。
4、創(chuàng)建實(shí)例(即后臺(tái)控制服務(wù))
C:\oradim –new –sid book
oradim是創(chuàng)建實(shí)例的工具程序名稱,-new表明執(zhí)行新建實(shí)例,-delete表明執(zhí)行刪掉實(shí)例,-sid指定害例的名稱。
5、創(chuàng)建口令文件
C:\orapwd file=D:\oracle\product\10.1.0\db_1\database\pwdbook.ora password=bookstore entries=2
orapwd是創(chuàng)建口令文件的工肯程序各稱,file參數(shù)指定口令文件所在的目錄和文件名稱,password參數(shù)指定sys用戶的口令,entries參數(shù)指定數(shù)據(jù)庫擁用DBA權(quán)限的用戶的個(gè)數(shù),當(dāng)然還有一個(gè)force參數(shù),相信您不指即明,這里就不再細(xì)述。
請(qǐng)注意,這里的命令要一行輸入,中間不得換行,否則會(huì)出現(xiàn)不必要的錯(cuò)誤。
口令文件是專門存放sys用戶的口令,因?yàn)閟ys用戶要負(fù)責(zé)建庫、啟動(dòng)數(shù)據(jù)庫、關(guān)閉數(shù)據(jù)庫等特殊任務(wù),把以sys用戶的中令單獨(dú)存放于口令文件中,這樣數(shù)據(jù)庫末打開時(shí)也能進(jìn)行口令驗(yàn)證。
6、啟動(dòng)數(shù)據(jù)庫到nomount(實(shí)例)狀態(tài)
C:\sqlplus /nolog
SQL*Plus:Release 10.1.0.2.0 - Production on 星期三 6月 29 23:09:35 2005
Copyright 1982,2004,Oracle. All rights reserved.
SQLconnect sys/bookstore as sysdba ---這里是用sys連接數(shù)據(jù)庫
已連接到空閑例程
SQLstartup nomount
ORACLE 例程已經(jīng)啟動(dòng)。
Total System Global Area 319888364bytes
Fixed Size 453612bytes
Variable Size 209715200bytes
Database Buffers 109051904bytes
Redo Buffers 667648bytes
SQL
7、執(zhí)行建庫腳本
執(zhí)行建庫腳本,首先要有建庫的腳本。(去哪找建庫腳本呢?我又沒有?。┎挥弥?,請(qǐng)接著往下看。
得到一個(gè)符合自己要求的建庫腳本有兩種方法,一種方法是在自己的電腦上用DBCA來 建,接照它的提示一步步地去做,在做到第十二步的時(shí)候,請(qǐng)選擇“生成建庫腳本”,然后就大功告成,你就可以到相應(yīng)的目錄上去找到那個(gè)腳本并適當(dāng)?shù)匦匏憧?便用。另一種方法就是自己手工去寫一份建庫腳本,這也是這里要見意使用的方法,用記事本編輯如下的內(nèi)容,并將其保存為文件名任取而后綴名為(*.sql) 的SQL腳本,這里保存到E盤根本錄下且文件名稱為book.sql。
Create database book
datafile 'D:\oracle\product\10.1.0\oradata\book\system01.dbf' size 300M reuse autoextend on next 10240Kmaxsize unlimited
extent management local
sysaux datafile 'D:\oracle\product\10.1.0\oradata\book\sysaux01.dbf'
size 120M reuse autoextend on next 10240K maxsize unlimited
default temporary tablespace temp
tempfile 'D:\oracle\product\10.1.0\oradata\book\temp01.dbf' size 20M reuse autoextend on next 640K maxsize unlimited
undo tablespace "UNDOTBS1" --請(qǐng)注意這里的undo表空間要和參數(shù)文件對(duì)應(yīng)
datafile 'D:\oracle\product\10.1.0\oradata\book\undotbs01.dbf' size 200M reuse autoextend on next 5120K maxsize unlimited
logfile
group 1 ('D:\oracle\product\10.1.0\oradata\book\redo01.log') size 10240K,
group 2 ('D:\oracle\product\10.1.0\oradata\book\redo02.log') size 10240K,
group 3 ('D:\oracle\product\10.1.0\oradata\book\redo03.log') size 10240K
接著就執(zhí)行剛建的建庫腳本:
SQLstart E:\book.sql
8、執(zhí)行catalog腳步本創(chuàng)建數(shù)據(jù)字典
SQLstart D:\oracle\product\10.1.0\db_1\rdbms\admin\catalog.sql
9、執(zhí)行catproc創(chuàng)建package包
SQLstart D:\oracle\product\10.1.0\db_1\rdbms\admin\catproc.sql
10、執(zhí)行pupbld
在執(zhí)行pupbld之前要把當(dāng)前用戶(sys)轉(zhuǎn)換成system,即以system賬戶連接數(shù)據(jù)庫。因?yàn)榇藬?shù)據(jù)庫是剛建的,所以system的口令是系統(tǒng)默認(rèn)的口令,即manager。你可以在數(shù)據(jù)庫建好以后再來重新設(shè)置此賬戶的口令。
SQLconnect system/manager
SQLstart D:\oracle\product\10.1.0\db_1\sqlplus\admin\pupbld.sql
11、由初始化參數(shù)文件創(chuàng)建spfile文件
SQLcreate spfile from pfile;
12、執(zhí)行scott腳本創(chuàng)建scott模式
SQLstart D:\oracle\product\10.1.0\db_1\rdbms\admin\scott.sql
13、把數(shù)據(jù)庫打開到正常狀態(tài)
SQLalter database open;
14、以scott連接到數(shù)據(jù)庫(口令為tiger),測試新建數(shù)據(jù)庫是否可以正常運(yùn)行
至此,整個(gè)數(shù)據(jù)庫就已經(jīng)建好了。接著你就可以在此數(shù)據(jù)庫上建立自己的賬戶和表空間啦以及數(shù)據(jù)庫對(duì)象,這里就不再作更多地?cái)⑹?/p>
--表create table my_toys( id varchar2(5), name varchar2(20), price number);--插入測試數(shù)據(jù)insert into my_toys values('G001','電熱毯',145);insert into my_toys values('G002','自行車',327);insert into my_toys values('G003','牙膏',14.5);insert into my_toys values('G004','棉被',105);insert into my_toys values('G005','熱水瓶',65);insert into my_toys values('G006','拖鞋',22.5); --包規(guī)范create or replace package toyspackas procedure UpdateToyPrice; function AvgToyPrice return number;end toyspack; --包主體create or replace package body toyspackas procedure UpdateToyPrice as avgPrice number := AvgToyPrice; begin while (avgPrice = 400) loop --循環(huán)更新 update my_toys set price= case when price*1.1500 then price*1.1 else price end; avgPrice := AvgToyPrice; commit; end loop; end UpdateToyPrice; function AvgToyPrice return number as v_avg number; begin select avg(price) into v_avg from my_toys; return v_avg; end AvgToyPrice;end toyspack; --調(diào)用execute toyspack.UpdateToyPrice;select toyspack.AvgToyPrice from dual;