|
創(chuàng)建數據庫雖說是一件很平常的工作,在ORACLE的參考文檔中也有一定的描述,但現實中確有很多人都不會,一方面是因為平時很少有這樣的機會讓你去做,而真有了這樣的機會讓你做的時候,可能又手忙腳亂的不知道如何下手,本文將為你提供一個完整的參考。
詳細步驟如下:
第一步:準備工作
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
# 這部分根據你的具體環(huán)境,不過有的參數在數據庫建成后最好還是明確寫出來, # 如: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密碼文件的文件名是有嚴格規(guī)范的:orapw[sid]。默認的查找順序是:先找orapwsid,再找orapw,如果同一臺機子上有兩個數據庫,為了區(qū)分起見必須有一個要指明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、 建立其它表空間
此部分首先對系統(tǒng)表空間作適當的修改,然后開始創(chuàng)建其它表空間,詳細腳本如下:
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)建數據字典
在本部分中將調用oracle自帶的腳本創(chuàng)建數據字典。其中catalog.sql用于創(chuàng)建相對于系統(tǒng)基表的視圖和系統(tǒng)動態(tài)性能視圖以及他們的同義詞。同時該腳本將運行創(chuàng)建其他對象的腳本,主要有基本的PL/SQL環(huán)境(包括PL/SQL的聲明:數據類型、預定義例外、內建的過程和函數、SQL操作等),審計,導入/導出,SQL*Loader以及安裝選項等。 Catproc.sql用于建立PL/SQL的使用環(huán)境。此外,還創(chuàng)建幾個PL/SQL包用于擴展RDBMS功能。該腳本同時還為下面的一些RDBMS功能創(chuàng)建另外的一些包和視圖: 警告、管道、日志分析、對象、大對象、高級隊列、復制選項以及其他的一些內建包和選項等。 以上兩個是必須運行的,其他的則根據實際需求了,這里對用到的幾個作一下說明: caths.sql用于安裝異類服務管理包。 helpbld.sql和helpus.sql用于創(chuàng)建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----------------------------------------------------
總結:
好了,到此為止我們就建立一個新的數據庫,不知你現在對這一過程是否清晰了?在我們對數據庫的邏輯結構都很熟悉的情況下,建庫過程中需要重點考慮的是數據庫的物理存儲,而這和我們具體的應用有關,不是一兩句話就能說情的,希望大家能夠一起來探討…… 刁饞
|