UNIX下ORACLE數據庫的創建
2024-08-29 13:32:32
供稿:網友
創建數據庫雖說是一件很平常的工作,在oracle的參考文檔中也有一定的描述,但現實中確有很多人都不會,一方面是因為平時很少有這樣的機會讓你去做,而真有了這樣的機會讓你做的時候,可能又手忙腳亂的不知道如何下手,本文將為你提供一個完整的參考。
詳細步驟如下:
第一步:準備工作
1、 環境變量:
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
# 這部分根據你的具體環境,不過有的參數在數據庫建成后最好還是明確寫出來,
# 如:ld_library_path等,這樣自己看起來會更清楚些。
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、參數文件
ox1> pwd
/data4/ora817/app/oracle/product/8.1.7/dbs
ox1> cp init.ora initoracyx.ora
ox1> vi initoracyx.ora
# --------------------------begin---------------------------------------------------------
# db_name是唯一一個需要在建庫時候提供的參數,
# 但通常以下參數都會做部分調整的
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密碼文件的文件名是有嚴格規范的:orapw[sid]。默認的查找順序是:先找orapwsid,再找orapw,如果同一臺機子上有兩個數據庫,為了區分起見必須有一個要指明sid。
同時不要忘了確認sqlnet.ora含如下內容:
sqlnet.authentication_services = (none)
當然你也可以不用密碼文件,那么這一步就可以省略了。
4、準備目錄:
oracle真的很笨,不會自己建立子目錄,所以我們不得不在開始建庫之前將所有數據文件存放的目錄先建好,這里建的目錄有:
/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
第二步:開始建庫
1、 建立基本數據庫文件:
在本部分中將建立基本的數據庫文件,包括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、 建立其它表空間
此部分首先對系統表空間作適當的修改,然后開始創建其它表空間,詳細腳本如下:
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、 創建數據字典
在本部分中將調用oracle自帶的腳本創建數據字典。其中catalog.sql用于創建相對于系統基表的視圖和系統動態性能視圖以及他們的同義詞。同時該腳本將運行創建其他對象的腳本,主要有基本的pl/sql環境(包括pl/sql的聲明:數據類型、預定義例外、內建的過程和函數、sql操作等),審計,導入/導出,sql*loader以及安裝選項等。
catproc.sql用于建立pl/sql的使用環境。此外,還創建幾個pl/sql包用于擴展rdbms功能。該腳本同時還為下面的一些rdbms功能創建另外的一些包和視圖: 警告、管道、日志分析、對象、大對象、高級隊列、復制選項以及其他的一些內建包和選項等。
以上兩個是必須運行的,其他的則根據實際需求了,這里對用到的幾個作一下說明:
caths.sql用于安裝異類服務管理包。
helpbld.sql和helpus.sql用于創建sql*plus幫助所用到的表(to create the help facility tables)。
另外一個pupbld.sql,對于低版本需要運行,否則在登錄時會出現“product user profile does not exit”的提示信息,pupbld.sql用于建立pup(product_user_profile)表,以在用戶級別安全性的基礎上,提供產品級(product_level)的安全機制。
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、 完善處理
為了使數據庫達到較好的性能,我們還需要對數據庫作進一步的調整,這里舉的例子是修改用戶的默認表空間和臨時表空間,改變數據庫為archive log運行模式。
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----------------------------------------------------
總結:
好了,到此為止我們就建立一個新的數據庫,不知你現在對這一過程是否清晰了?在我們對數據庫的邏輯結構都很熟悉的情況下,建庫過程中需要重點考慮的是數據庫的物理存儲,而這和我們具體的應用有關,不是一兩句話就能說情的,希望大家能夠一起來探討……
刁饞
中國最大的web開發資源網站及技術社區,