- Oracle DBA基礎教程
- 林樹澤
- 4477字
- 2021-03-26 13:21:36
1.3 使用DBCA創建數據庫
本節我們講解如何使用DBCA來協助創建數據庫,相對于原始的使用手工方式創建數據庫,使用DBCA可以明顯減少建庫時間,從而提高建庫的效率。為了使讀者從本質上理解DBCA建庫的過程,我們對使用DBCA建庫時生成的建庫腳本文件進行分析,讓讀者不但學會使用DBCA,還能從根本上理解DBCA是如何創建數據庫的,其實Oracle的自動化工具就是在后臺運行,以前手工建庫的過程,只是做了一些封裝使得讀者少犯錯誤,并且提高建庫效率。
1.3.1 DBCA概述
DBCA是Oracle設計基于Java的圖形用戶界面工具,所以它可以運行在任何安裝了Java虛擬機的操作系統平臺上,在安裝Oracle數據庫時,會自動安裝Java虛擬機,在啟動DBCA時Oracle會啟動虛擬機來運行DBCA。
啟動DBCA的方式有兩種,一是通過Oracle數據庫軟件安裝程序的“配置和移植工具”→“Database Configuration Assistant”來啟動數據庫,如圖1-1所示。

圖1-1 使用安裝程序啟動DBCA
二是通過在DOS窗口中輸入DBCA來啟動,如圖1-2所示。

圖1-2 在DOS中啟動DBCA
此時,DOS運行了DBCA程序,并且在DBCA運行期間DOS界面會一直存在。
使用DBCA不僅僅是創建數據庫,作為數據庫配置助手它還有其他功能,即“配置數據庫”,“刪除數據庫”,“管理創建數據庫模板”(使用以前的模板創建新模板,從已存在的數據庫創建新模板,刪除模板)。
1.3.2 創建數據庫過程
使用1.3.1節中的方法啟動DBCA工具后,單擊“下一步”按鈕,彈出如圖1-3所示的對話框。

圖1-3 選擇DBCA的操作
此時,對話窗口提示用戶可以執行的操作,它也說明了DBCA具有“創建數據庫”、“配置數據庫選件”、“刪除數據庫”、“管理模板”以及“配置自動存儲管理”等功能。選擇創建數據庫,然后單擊“下一步”按鈕。此時,彈出數據庫模板對話框,如圖1-4所示。

圖1-4 選擇創建數據庫的模板
在圖1-4中有三個選項使用模板來創建數據庫,即“一般用途或事務處理”、“定制數據庫”和“數據倉庫”,我們根據數據庫的業務要求選擇其一,筆者選擇“一般用途或事務處理”。單擊“下一步”按鈕,彈出設置數據庫標識對話框,如圖1-5所示。圖1-5中參數“全局數據庫名”提示設置數據庫標識,用以標識一個唯一的全局數據庫,因為數據庫至少需要一個實例來維護和使用,所以還要設置實例名,一般實例名和全局數據庫名相同(便于維護),在讀者輸入“全局數據庫名”時,在實例名SID中會自動輸入相同的內容。我們設置其名稱為lin。然后單擊“下一步”按鈕,彈出“管理選項”如圖1-6所示。

圖1-5 設置數據庫標識
在圖1-6中選擇管理數據庫的工具,默認選擇使用Enterprise Manager來配置數據庫,使用Enterprise Manager的Database Control來管理數據庫。我們單擊“下一步”按鈕,彈出設置數據庫身份證明對話框,如圖1-7所示。此時要求設置數據庫口令,兩種選擇來設置數據庫口令,一是對所有用戶使用一個口令,一是“使用不同的管理口令”使得不同的用戶可以設置自己的管理口令,我們選擇“所有賬戶使用同一管理口令”來設置統一口令。

圖1-6 管理選項

圖1-7 設置用戶密碼
單擊圖1-7的“下一步”按鈕,彈出“網絡設置”對話框,如圖1-8所示。需要將剛創建的數據庫注冊到系統已有的監聽程序,因為我們在安裝數據庫軟件時已經創建了一個數據庫,所以已經存在一個監聽程序。此時,我們選擇“將此數據庫注冊到所有監聽程序”,單擊“下一步”按鈕,彈出如圖1-9所示的“存儲選項”對話框。

圖1-8 網絡設置
在圖1-9中,要求選擇存儲設置,此時有三個選項。使用“文件系統”存儲數據庫這個方式基于操作系統的數據庫文件,使用“自動存儲管理(ASM)”可以有效改進系統I/O,但是對ASM系統需要配置一個磁盤組,也可以使用“裸設備”。此時我們選擇使用“文件系統”。單擊“下一步”按鈕,彈出“數據庫文件所在位置”對話框,如圖1-10所示。

圖1-9 存儲選項
在圖1-10中指定數據庫文件的位置,即將數據庫的各種數據文件存放的目錄,此時有三個選項:“使用模板中的數據庫文件位置”、“所有數據庫文件使用公共位置”和“使用Oracle-Managed Files”,默認“使用模板中的數據庫文件位置”,我們使用默認設置。

圖1-10 數據文件所在位置
默認設置的Oracle_HOME為F:\app\Administrator\product\11.1.0\db_1,單擊圖1-10的“下一步”按鈕,彈出“恢復配置”對話框,如圖1-11所示。

圖1-11 恢復設置
在圖1-11中要求設置快速恢復區,在Oracle10g中提供了一個快速恢復區,用戶數據庫自動恢復時使用的是備份數據空間,當使用RMAN備份時可以選擇使用該恢復區,使得數據庫的各類恢復行為自動化,該區域默認為{Oracle_BASE}\flash_recovery_area,區域空間大小為2GB,這些參數都可以調節,快速恢復區的存儲目錄通過“瀏覽”按鈕選擇,而快速恢復區的大小通過輸入數值設置。我們繼續單擊“下一步”按鈕,彈出如圖1-12所示的數據庫內容設置對話框。
圖1-12的“數據庫內容設置”提示是否使用“示例方案”,該方案會創建一個EXAMPLE的表空間,提供了如“人力資源”、“產品介質”等具體方案,主要作為演示用,我們選擇默認設置,即不使用“示例方案”,也不使用“定制腳本”,單擊“下一步”按鈕,彈出如圖1-13所示的對話框,該對話框要求設置數據庫的初始化參數。

圖1-12 數據庫內容設置

圖1-13 設置內存初始化參數1
這里需要設置四項內容,分別是“內存”、“調整大小”、“字符集”和“連接模式”。我們依次介紹這些內容,首先設置內存大小,如圖1-13所示。Oracle的DBCA自動獲取了當前數據庫的內存大小,根據經驗,設置內存大小的40%給該數據庫使用,我們采用默認值并選擇“使用自動內存管理”,內存參數在建庫后可以動態修改。然后單擊“調整大小”,彈出調整大小對話框如圖1-14所示。
在圖1-14中,首先需要設置Oracle數據庫塊大小,該塊是Oracle分配存儲空間的最小單位,也是Oracle數據輸入輸出的最小單位,該參數一旦確定無法修改,除非重建數據庫,接著是設置和該數據庫連接的操作系統進程數量,該值最小為6,因為其中5個是啟動實例時必需的后臺進程,1個為用戶進程。單擊“字符集”,彈出設置字符集對話框如圖1-15所示。

圖1-14 設置內存初始化參數2

圖1-15 設置內存初始化參數3
在圖1-15中設置數據庫字符集,默認是采用操作系統的語言設置,如果是中文Windows系統,則默認為ZHS16GBK。單擊“連接模式”,彈出設置連接模式對話框,如圖1-16所示。連接模式分為專用連接和共享連接兩種,專用模式是每個客戶連接啟動一個專有的PGA和專有的相關資源,而共享模式是多個客戶連接數據庫服務器時使用共享的資源空間。我們選擇默認設置,即專用服務器模式。
單擊圖1-16中的“下一步”按鈕,彈出如圖1-17所示的對話框進行“安全設置”。此時,選擇“保留增強的11g默認安全設置”,單擊“下一步”按鈕,彈出如圖1-18所示的“自動維護任務”對話框。

圖1-16 設置內存初始化參數4

圖1-17 創建數據庫的安全設置
在圖1-18中選擇“啟用自動維護任務”使得Oracle 11g數據庫完成自動管理維護任務,這些任務可以在預定義的維護時間窗口內完成,系統同時限定了使用OS的CPU時間。然后單擊“下一步”按鈕,彈出如圖1-19所示的“數據庫存儲”對話框。

圖1-18 啟動數據庫的自動維護任務

圖1-19 數據庫存儲參數設置
在圖1-19中,需要用戶進行控制文件、表空間、數據文件以及重做日志組的參數設置,如控制文件中的最大重做日志文件數、最大數據文件數等,可以進行修改表空間的大小,創建重做日志組等操作。然后單擊“下一步”按鈕,彈出“創建選項”的對話框,如圖1-20所示。

圖1-20 數據庫創建選項
圖1-20中的創建選項有:“創建數據庫”、“另存為數據庫模板”和“生成數據庫創建腳本”,我們選擇“創建數據庫”和“生成數據庫創建腳本”,此時在“目標目錄”中自動顯示腳本文件的存儲目錄,用戶也可以通過“瀏覽…”按鈕自己選擇一個存儲目錄,然后單擊“完成”按鈕,則創建數據庫,并生成數據庫模板和數據庫創建腳本,如圖1-21所示。
在圖1-21中提示建庫的詳細信息,如初始化參數、字符集、表空間、數據文件、重做日志文件等信息。單擊“確定”按鈕,則彈出如圖1-22所示的對話框,生成建庫的腳本文件,單擊“確定”按鈕后開始創建數據庫,建庫過程如圖1-23所示。

圖1-21 創建數據庫的詳細信息

圖1-22 生成創建數據庫的腳本

圖1-23 開始創建數據庫
當圖1-23中的創建進度達到100%時,會彈出如圖1-24所示的對話框,提供創建數據庫的詳細信息,如數據庫標識,數據庫服務器參數文件位置以及賬戶信息等。單擊“退出”按鈕,完成數據庫的創建。

圖1-24 數據庫創建完成
1.3.3 理解建庫腳本的含義
在使用DBCA創建數據庫時,依據之前的配置生成了創建數據庫的腳本,其實只要修改一些參數,如數據庫名,然后通過手工執行這些腳本就可以創建數據庫。我們通過在Oracle10g中使用DBCA創建數據庫中生成的腳本來理解DBCA創建數據庫的過程,首先查看腳本文件的文件目錄,如下所示。
F:\Oracle\product\10.2.0\admin\lin\scripts>dir 驅動器 F 中的卷是 Oracle10g 卷的序列號是 000B-1DED F:\Oracle\product\10.2.0\admin\lin\scripts 的目錄 2009-09-15 08:42 <DIR> . 2009-09-15 08:42 <DIR> .. 2009-09-15 08:43 338 context.sql 2009-09-15 08:43 1,176 CreateDB.sql 2009-09-15 08:43 717 CreateDBCatalog.sql 2009-09-15 08:43 339 CreateDBFiles.sql 2009-09-15 08:43 192 cwmlite.sql 2009-09-15 08:43 292 emRepository.sql 2009-09-15 08:43 2,488 init.ora 2009-09-15 08:43 187 interMedia.sql 2009-09-15 08:43 408 JServer.sql 2009-09-15 08:43 790 lin.bat 2009-09-15 08:43 1,247 lin.sql 2009-09-15 08:43 191 odm.sql 2009-09-15 08:43 196 ordinst.sql 2009-09-15 08:43 1,214 postDBCreation.sql 2009-09-15 08:43 180 spatial.sql 2009-09-15 08:43 371 xdb_protocol.sql 16 個文件 10,326 字節 2 個目錄 64,568,418,304 可用字節
如果手工創建數據庫,首先需要運行lin.bat文件,下面我們看看該文件的內容,如圖1-25所示。

圖1-25 查看腳本文件lin.bat的內容
可見,該文件首先是創建一系列目錄,然后設置數據庫名,通過oradim.exe工具配置實例,然后啟動SQLPLUS,執行lin.sql腳本文件創建數據庫。
我們繼續查看lin.sql的內容。如圖1-26所示,該文件的開始部分用于定義用戶口令,然后使用sys用戶的口令創建口令文件。

圖1-26 查看腳本文件lin.sql的內容
接著將執行一系列的腳本文件,如下所示。
@F:\Oracle\product\10.2.0\admin\lin\scripts\CreateDB.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\CreateDBFiles.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\CreateDBCatalog.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\JServer.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\odm.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\context.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\xdb_protocol.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\ordinst.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\interMedia.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\cwmlite.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\spatial.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\emRepository.sql @F:\Oracle\product\10.2.0\admin\lin\scripts\postDBCreation.sql
下面我們主要介紹幾個重要的腳本文件。
1.CreateDB.sql
該腳本文件用于創建數據庫,內容如下所示。首先使用SYS用戶登錄數據庫,該用戶具有SYSDBA權限。然后啟動數據庫實例,此時使用參數腳本文件中的初始化參數文件init.ora。然后創建數據庫。
F:\Oracle\product\10.2.0\admin\lin\scripts>type createdb.sql connect "SYS"/"&&sysPassword" as SYSDBA set echo on spool F:\Oracle\product\10.2.0\admin\lin\scripts\CreateDB.log startup nomount pfile="F:\Oracle\product\10.2.0\admin\lin\scripts\init.ora"; CREATE DATABASE "lin" MAXINSTANCES 8 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 DATAFILE SIZE 300M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE SIZE 120M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE SIZE 20M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED CHARACTER SET ZHS16GBK NATIONAL CHARACTER SET AL16UTF16 LOGFILE GROUP 1 SIZE 51200K, GROUP 2 SIZE 51200K, GROUP 3 SIZE 51200K USER SYS IDENTIFIED BY "&&sysPassword" USER SYSTEM IDENTIFIED BY "&&systemPassword"; set linesize 2048; column ctl_files NEW_VALUE ctl_files; select concat('control_files=''', concat(replace(value, ', ', ''','''), '''')) ctl_files from v$parameter where name ='c ontrol_files'; host "echo &ctl_files >>F:\Oracle\product\10.2.0\admin\lin\scripts\init.ora"; spool off
最后將控制文件信息注冊到初始化參數文件init.ora中,并且該腳本文件的執行過程都記錄在文件F:\Oracle\product\10.2.0\admin\lin\scripts\CreateDB.log中。
2.CreateDBFiles.sql
該腳本文件的作用是創建數據庫數據文件的表空間,并且將該表空間作為用戶創建的數據庫對象的默認存儲空間,其內容如下所示。
F:\Oracle\product\10.2.0\admin\lin\scripts>type createdbfiles.sql connect "SYS"/"&&sysPassword" as SYSDBA set echo on spool F:\Oracle\product\10.2.0\admin\lin\scripts\CreateDBFiles.log CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE SIZE 5M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEME NT LOCAL SEGMENT SPACE MANAGEMENT AUTO; ALTER DATABASE DEFAULT TABLESPACE "USERS"; spool off
上述輸出說明表空間USERS為小文件表空間(在Oracle10g中與大對象表空間對應)以及表空間的一些參數設置。如區段管理方式、表空間增長方式以及段管理方式等。
3.CreateDBCatalog.sql
該腳本文件主要用于創建數據庫的數據字典,創建PL/SQL所需要的軟件包和過程,以及用戶的概要文件和相關過程等信息,該文件的內容如下所示。
F:\Oracle\product\10.2.0\admin\lin\scripts>type CreateDBCatalog.sql connect "SYS"/"&&sysPassword" as SYSDBA set echo on spool F:\Oracle\product\10.2.0\admin\lin\scripts\CreateDBCatalog.log @F:\Oracle\product\10.2.0\db_1\rdbms\admin\catalog.sql; @F:\Oracle\product\10.2.0\db_1\rdbms\admin\catblock.sql; @F:\Oracle\product\10.2.0\db_1\rdbms\admin\catproc.sql; @F:\Oracle\product\10.2.0\db_1\rdbms\admin\catoctk.sql; @F:\Oracle\product\10.2.0\db_1\rdbms\admin\owminst.plb; connect "SYSTEM"/"&&systemPassword" @F:\Oracle\product\10.2.0\db_1\sqlplus\admin\pupbld.sql; connect "SYSTEM"/"&&systemPassword" set echo on spool F:\Oracle\product\10.2.0\admin\lin\scripts\sqlPlusHelp.log @F:\Oracle\product\10.2.0\db_1\sqlplus\admin\help\hlpbld.sql helpus.sql; spool off spool off
4.emRepository.sql
該腳本文件用于創建EM(企業管理器)的檔案庫,該文件的內容如下所示。
F:\Oracle\product\10.2.0\admin\lin\scripts>type emRepository.sql connect "SYS"/"&&sysPassword" as SYSDBA set echo off spool F:\Oracle\product\10.2.0\admin\lin\scripts\emRepository.log @F:\Oracle\product\10.2.0\db_1\sysman\admin\emdrep\sql\emreposcre F:\Oracle\product\10.2.0\db_1 SYSMAN &&sysmanPassword TEMP ON; WHENEVER SQLERROR CONTINUE; spool off
5.postDBCreation.sql
該腳本文件用于完成數據庫創建以后的工作,如創建SPFILE參數文件、修改用戶口令、配置監聽器等,該腳本文件的內容如下所示。
F:\Oracle\product\10.2.0\admin\lin\scripts>type postDBCreation.sql connect "SYS"/"&&sysPassword" as SYSDBA set echo on spool F:\Oracle\product\10.2.0\admin\lin\scripts\postDBCreation.log connect "SYS"/"&&sysPassword" as SYSDBA set echo on create spfile='F:\Oracle\product\10.2.0\db_1\database\spfilelin.ora' FROM pfile='F:\Oracle\product\10.2.0\admin\lin\scri pts\init.ora'; shutdown immediate; connect "SYS"/"&&sysPassword" as SYSDBA startup ; alter user SYSMAN identified by "&&sysmanPassword" account unlock; alter user DBSNMP identified by "&&dbsnmpPassword" account unlock; select 'utl_recomp_begin: ' || to_char(sysdate, 'HH:MI:SS') from dual; execute utl_recomp.recomp_serial(); select 'utl_recomp_end: ' || to_char(sysdate, 'HH:MI:SS') from dual; host F:\Oracle\product\10.2.0\db_1\bin\emca.bat -config dbcontrol db -silent -DB_UNIQUE_NAME lin -PORT 1521 -EM_HOME F:\ Oracle\product\10.2.0\db_1 -LISTENER LISTENER -SERVICE_NAME lin -SYS_PWD &&sysPassword -SID lin -Oracle_HOME F:\Oracle\p roduct\10.2.0\db_1 -DBSNMP_PWD &&dbsnmpPassword -HOST localhost -LISTENER_OH F:\Oracle\product\10.2.0\db_1 -LOG_FILE F:\ Oracle\product\10.2.0\admin\lin\scripts\emConfig.log -SYSMAN_PWD &&sysmanPassword; spool F:\Oracle\product\10.2.0\admin\lin\scripts\postDBCreation.log
這里主要是告訴讀者腳本就是手動建庫的SQL指令操作的集合,自動建庫就是將手工建庫的過程通過各種.SQL文件自動化,這樣就使得讀者能更好地理解DBCA自動建庫的過程。
- 程序員修煉之道:程序設計入門30講
- 控糖控脂健康餐
- React Native Cookbook
- Magento 2 Theme Design(Second Edition)
- Python測試開發入門與實踐
- Blender 3D Incredible Machines
- 假如C語言是我發明的:講給孩子聽的大師編程課
- Visual C
- 琢石成器:Windows環境下32位匯編語言程序設計
- Hands-On GUI Programming with C++ and Qt5
- 代替VBA!用Python輕松實現Excel編程
- 3ds Max印象 電視欄目包裝動畫與特效制作
- 代碼閱讀
- SQL Server 2016 從入門到實戰(視頻教學版)
- 小程序從0到1:微信全棧工程師一本通