明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

UNIX下ORACLE數(shù)據(jù)庫(kù)的創(chuàng)建

[摘要]創(chuàng)建數(shù)據(jù)庫(kù)雖說(shuō)是一件很平常的工作,在ORACLE的參考文檔中也有一定的描述,但現(xiàn)實(shí)中確有很多人都不會(huì),一方面是因?yàn)槠綍r(shí)很少有這樣的機(jī)會(huì)讓你去做,而真有了這樣的機(jī)會(huì)讓你做的時(shí)候,可能又手忙腳亂的不知道如何下手,本文將為你提供一個(gè)完整的參考。詳細(xì)步驟如下:第一步:準(zhǔn)備工作1、 環(huán)境變量:ox1>...
創(chuàng)建數(shù)據(jù)庫(kù)雖說(shuō)是一件很平常的工作,在ORACLE的參考文檔中也有一定的描述,但現(xiàn)實(shí)中確有很多人都不會(huì),一方面是因?yàn)槠綍r(shí)很少有這樣的機(jī)會(huì)讓你去做,而真有了這樣的機(jī)會(huì)讓你做的時(shí)候,可能又手忙腳亂的不知道如何下手,本文將為你提供一個(gè)完整的參考。

詳細(xì)步驟如下:

第一步:準(zhǔn)備工作

1、 環(huán)境變量:
ox1> more .profile_oracyx
# 這部分建議提供
PATH=/data4/ora817/app/oracle/product/8.1.7/bin:/data4/ora817/bin::/usr/bin:.
ORACLE_BASE=/data4/ora817/app/oracle
ORACLE_SID=oracyx
ORA_NLS33=/data4/ora817/app/oracle/product/8.1.7/ocommon/nls/admin/data
ORACLE_HOME=/data4/ora817/app/oracle/product/8.1.7

# 這部分根據(jù)你的具體環(huán)境,不過(guò)有的參數(shù)在數(shù)據(jù)庫(kù)建成后最好還是明確寫出來(lái),
# 如:LD_LIBRARY_PATH等,這樣自己看起來(lái)會(huì)更清楚些。
LD_LIBRARY_PATH=/data4/ora817/app/oracle/product/8.1.7/lib:/usr/lib
TNS_ADMIN=/data4/ora817/app/oracle/product/8.1.7/network/admin
USER=ora817
NLS_LANG=american_america.zhs16cgb231280
LOGNAME=ora817
ORA_DB=/data4/ora817/app/oracle/product/8.1.7/dbs
TERM=vt100
HOME=/data4/ora817
ORACLE_TERM=vt100
SHELL=/bin/ksh
DISPLAY=ox1:0.0

2、參數(shù)文件
ox1> pwd
/data4/ora817/app/oracle/product/8.1.7/dbs
ox1> cp init.ora initoracyx.ora
ox1> vi initoracyx.ora
# --------------------------BEGIN---------------------------------------------------------
# db_name是唯一一個(gè)需要在建庫(kù)時(shí)候提供的參數(shù),
# 但通常以下參數(shù)都會(huì)做部分調(diào)整的
db_name = "oracyx"
instance_name = oracyx
service_names = oracyx
control_files = ('/data4/ora817/oradata/oracyx/control1.ctl', '/data2/oradata/or
acyx/control2.ctl','/data5/oradata/oracyx/control3.ctl')
open_cursors = 1000
max_enabled_roles = 40
db_block_buffers = 18800
shared_pool_size = 204800000
java_pool_size = 0
log_checkpoint_interval = 1000000000
log_checkpoint_timeout = 1800
processes = 2000
log_buffer = 2048000
timed_statistics = true
max_dump_file_size = 10000
log_archive_start = true
log_archive_dest_1 = "location=/data5/archive/oracyx"
log_archive_format = arch_%t_%s.arc
global_names = false
background_dump_dest = /data4/ora817/app/oracle/admin/oracyx/bdump
background_core_dump = partial
core_dump_dest = /data4/ora817/app/oracle/admin/oracyx/cdump
shadow_core_dump = none
user_dump_dest = /data4/ora817/app/oracle/admin/oracyx/udump
db_block_size = 8192
remote_login_passwordfile = exclusive
os_authent_prefix = ""
distributed_transactions = 1500
compatible = "8.1.7.0.0"
sort_area_size = 1024000
sort_area_retained_size = 1024000
db_files = 400
db_file_multiblock_read_count = 16
parallel_max_servers = 8
lm_ress=900000
lm_locks=1500000
session_cached_cursors = 20
transactions_per_rollback_segment = 10
db_block_lru_latches = 6
instance_number = 1
resource_limit=TRUE
# --------------------------END-----------------------------------------------------------

3、密碼文件:
ox1> pwd
/data4/ora817/app/oracle/product/8.1.7/dbs
ox1> orapwd file=orapworacyx password=cyx entries=10

值得注意的是,oracle密碼文件的文件名是有嚴(yán)格規(guī)范的:orapw[sid]。默認(rèn)的查找順序是:先找orapwsid,再找orapw,如果同一臺(tái)機(jī)子上有兩個(gè)數(shù)據(jù)庫(kù),為了區(qū)分起見必須有一個(gè)要指明SID。

同時(shí)不要忘了確認(rèn)sqlnet.ora含如下內(nèi)容:
sqlnet.authentication_services = (none)

當(dāng)然你也可以不用密碼文件,那么這一步就可以省略了。

4、準(zhǔn)備目錄:
ORACLE真的很笨,不會(huì)自己建立子目錄,所以我們不得不在開始建庫(kù)之前將所有數(shù)據(jù)文件存放的目錄先建好,這里建的目錄有:
/data2/oradata/oracyx
/data3/oradata/oracyx
/data4/ora817/oradata/oracyx/
/data5/oradata/oracyx
/data6/oradata/oracyx
/data7/oradata/oracyx
/data4/ora817/app/oracle/admin/oracyx/bdump
/data4/ora817/app/oracle/admin/oracyx/udump
/data4/ora817/app/oracle/admin/oracyx/cdump


第二步:開始建庫(kù)

1、 建立基本數(shù)據(jù)庫(kù)文件:

在本部分中將建立基本的數(shù)據(jù)庫(kù)文件,包括control file, system data file和online redo log file。具體腳本如下:

ox1> more cdb1_base.sh
#!/bin/sh
#---------------------------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
ORACLE_HOME=/data4/ora817/app/oracle/product/8.1.7 export ORACLE_HOME

/data4/ora817/app/oracle/product/8.1.7/bin/svrmgrl<< EOF
connect internal/cyx
spool /data4/ora817/cyx/cdb/crdb1.log
startup nomount pfile='/data4/ora817/app/oracle/product/8.1.7/dbs/initoracyx.ora'

CREATE DATABASE "oracyx"
CONTROLFILE REUSE
maxdatafiles 254
maxinstances 8
maxloghistory 100
maxlogmembers 2
maxlogfiles 64
character set ZHS16CGB231280
national character set ZHS16CGB231280
DATAFILE '/data4/ora817/oradata/oracyx/system.dbf'
SIZE 240M REUSE AUTOEXTEND OFF

logfile '/data4/ora817/oradata/oracyx/log1.rdo' SIZE 4M REUSE ,
'/data4/ora817/oradata/oracyx/log2.rdo' SIZE 4M REUSE ,
'/data4/ora817/oradata/oracyx/log3.rdo' SIZE 4M REUSE;

disconnect
spool off
exit
EOF
#---------------------------------END----------------------------------------------------

2、 建立其它表空間

此部分首先對(duì)系統(tǒng)表空間作適當(dāng)?shù)男薷,然后開始創(chuàng)建其它表空間,詳細(xì)腳本如下:

ox1> more cdb2_storage.sh
#!/bin/sh
#----------------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/svrmgrl << EOF
spool /data4/ora817/cyx/cdb/crdb2.log
connect internal/cyx

REM ********** ALTER SYSTEM TABLESPACE *********
ALTER TABLESPACE SYSTEM
DEFAULT STORAGE (
INITIAL 640K NEXT 640K MINEXTENTS 1
MAXEXTENTS UNLIMITED PCTINCREASE 0);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;

REM ********** TABLESPACE FOR TOOLS**********
CREATE TABLESPACE TOOLS DATAFILE '/data4/ora817/oradata/oracyx/tools_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR INDX1 **********
CREATE TABLESPACE INDX1 DATAFILE '/data2/oradata/oracyx/indx1_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR USER**********
CREATE TABLESPACE USER1 DATAFILE '/data6/oradata/oracyx/user1_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR TEMP **********
CREATE TABLESPACE TEMP DATAFILE '/data7/oradata/oracyx/temp_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR RBS **********
CREATE TABLESPACE RBS DATAFILE '/data3/oradata/oracyx/rbs1_1.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM **** Creating Six Rollback Segments ****************
CREATE PUBLIC ROLLBACK SEGMENT RBS_01 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_01 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_02 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_02 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_03 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_03 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_04 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_04 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_05 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_05 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_06 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_06 ONLINE;

disconnect
spool off
exit
EOF
#-------------------END----------------------------------------------------

3、 創(chuàng)建數(shù)據(jù)字典

在本部分中將調(diào)用oracle自帶的腳本創(chuàng)建數(shù)據(jù)字典。其中catalog.sql用于創(chuàng)建相對(duì)于系統(tǒng)基表的視圖和系統(tǒng)動(dòng)態(tài)性能視圖以及他們的同義詞。同時(shí)該腳本將運(yùn)行創(chuàng)建其他對(duì)象的腳本,主要有基本的PL/SQL環(huán)境(包括PL/SQL的聲明:數(shù)據(jù)類型、預(yù)定義例外、內(nèi)建的過(guò)程和函數(shù)、SQL操作等),審計(jì),導(dǎo)入/導(dǎo)出,SQL*Loader以及安裝選項(xiàng)等。
Catproc.sql用于建立PL/SQL的使用環(huán)境。此外,還創(chuàng)建幾個(gè)PL/SQL包用于擴(kuò)展RDBMS功能。該腳本同時(shí)還為下面的一些RDBMS功能創(chuàng)建另外的一些包和視圖:  警告、管道、日志分析、對(duì)象、大對(duì)象、高級(jí)隊(duì)列、復(fù)制選項(xiàng)以及其他的一些內(nèi)建包和選項(xiàng)等。
以上兩個(gè)是必須運(yùn)行的,其他的則根據(jù)實(shí)際需求了,這里對(duì)用到的幾個(gè)作一下說(shuō)明:
caths.sql用于安裝異類服務(wù)管理包。
helpbld.sql和helpus.sql用于創(chuàng)建SQL*PLUS幫助所用到的表(to create the help facility tables)。
另外一個(gè)pupbld.sql,對(duì)于低版本需要運(yùn)行,否則在登錄時(shí)會(huì)出現(xiàn)“Product user profile does not exit”的提示信息,pupbld.sql用于建立PUP(Product_User_Profile)表,以在用戶級(jí)別安全性的基礎(chǔ)上,提供產(chǎn)品級(jí)(product_level)的安全機(jī)制。

ox1> more cdb3_dd.sh
#!/bin/sh
#-----------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/sqlplus internal/cyx << EOF
spool /data4/ora817/cyx/cdb/crdb3.log

@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/catalog.sql;
@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/catproc.sql;
@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/caths.sql;
connect system/manager
@/data4/ora817/app/oracle/product/8.1.7/sqlplus/admin/help/helpbld.sql helpus.sql;

disconnect
spool off
exit
EOF
#------------------END----------------------------------------------------

4、 完善處理

為了使數(shù)據(jù)庫(kù)達(dá)到較好的性能,我們還需要對(duì)數(shù)據(jù)庫(kù)作進(jìn)一步的調(diào)整,這里舉的例子是修改用戶的默認(rèn)表空間和臨時(shí)表空間,改變數(shù)據(jù)庫(kù)為archive log運(yùn)行模式。

ox1> more cdb4_perf.sh
#!/bin/sh
#-----------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/sqlplus internal/cyx << EOF
spool /data4/ora817/cyx/cdb/crdb4.log

alter user sys temporary tablespace TEMP;
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;

shutdown normal;
startup mount pfile='/data4/ora817/app/oracle/product/8.1.7/dbs/initoracyx.ora';
alter database archivelog;
alter database open;
alter system archive log start;
alter system switch logfile;

disconnect
spool off
exit
EOF
#------------------END----------------------------------------------------

總結(jié):

好了,到此為止我們就建立一個(gè)新的數(shù)據(jù)庫(kù),不知你現(xiàn)在對(duì)這一過(guò)程是否清晰了?在我們對(duì)數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)都很熟悉的情況下,建庫(kù)過(guò)程中需要重點(diǎn)考慮的是數(shù)據(jù)庫(kù)的物理存儲(chǔ),而這和我們具體的應(yīng)用有關(guān),不是一兩句話就能說(shuō)情的,希望大家能夠一起來(lái)探討……
刁饞