官术网_书友最值得收藏!

2.2 使用DBCA生成數據庫創建腳本

沒有理由不使用DBCA交互式創建數據庫,但在許多情況下,最好通過命令行創建數據庫。為什么?原因可能如下:

● 服務器可能沒有圖形功能。

● 更改控制功能可能需要測試過的腳本。

● 可能需要創建許多相同的數據庫。

● 不希望坐在屏幕前響應提示。

無論什么原因,如果有腳本,手工創建數據庫都很簡單。編寫腳本的最簡單方式是讓DBCA完成。

2.2.1 生成腳本

要生成腳本,可以啟動DBCA,進入對話框,選擇合適的選項。在步驟10,選擇對應的復選框,再選擇一個目錄。默認位置是ORACLE_BASE下面。在Windows上,數據庫orcl121的一般位置如下:

        c:\app\oracle\admin\orcl121\scripts

在Linux上,一般位置如下:

        /u01/app/oracle/admin/orcl121/scripts

無論什么平臺,腳本的結構都相同:以數據庫命名的外殼腳本(例如,對于Linux,是orcl121.sh;對于Windows,是orcl121.bat)。該腳本執行一些操作系統(OS)任務,再啟動SQL*Plus,以運行SQL腳本(稱為oracle121.sql)。SQL腳本完成數據庫創建的剩余工作。研究這些腳本和它們調用的腳本是有益的。

2.2.2 創建腳本

起點是外殼腳本??纯碙inux版本示例:

        #! /bin/sh
        OLD_UMASK='umask'
        umask 0027
        mkdir -p /u01/app/oracle/admin/orcl121/adump
        mkdir -p /u01/app/oracle/admin/orcl121/dpdump
        mkdir -p /u01/app/oracle/admin/orcl121/pfile
        mkdir -p /u01/app/oracle/audit
        mkdir -p /u01/app/oracle/cfgtoollogs/dbca/orcl121
        mkdir -p /u01/app/oracle/fast_recovery_area
        mkdir -p /u01/app/oracle/fast_recovery_area/orcl121
        mkdir -p /u01/app/oracle/oradata/orcl121
        mkdir -p /u01/app/oracle/product/12.1.0/dbhome_1/dbs
        umask ${OLD_UMASK}
        ORACLE_SID=orcl121; export ORACLE_SID
        PATH=$ORACLE_HOME/bin:$PATH; export PATH
        echo You should Add this entry in the /etc/oratab:
        orcl121:/u01/app/oracle/product/12.1.0/dbhome_1:Y
        /u01/app/oracle/product/12.1.0/dbhome_1/bin/sqlplus /nolog
        @/u01/app/oracle/admin/orcl121/scripts/orcl121.sql

這會通過DBCA對話框提供的、ORACLE_BASE和ORACLE_HOME環境變量的值,或者默認值,利用合適的訪問權限來創建幾個目錄。接著調用SQL *Plus 啟動SQL腳本oracle121.sql。Windows 上的變化是調用ORADIM實用程序,在運行實例的賬戶下創建Windows服務。

根據在DBCA對話框中選擇的選項,生成的SQL腳本有很大區別。下面是一個例子:

        set verify off
        ACCEPT sysPassword CHAR PROMPT 'Enter new password for SYS: ' HIDE
        ACCEPT systemPassword CHAR PROMPT 'Enter new password for SYSTEM: ' HIDE
        host /u01/app/oracle/product/12.1.0/dbhome_1/bin/orapwd file=/u01/app/oracle/
        product/12.1.0/dbhome_1/dbs/orapworcl121

       force=y extended=y
        @/u01/app/oracle/admin/orcl121/scripts/CreateDB.sql
        @/u01/app/oracle/admin/orcl121/scripts/CreateDBFiles.sql
        @/u01/app/oracle/admin/orcl121/scripts/CreateDBCatalog.sql
        @/u01/app/oracle/admin/orcl121/scripts/sampleSchema.sql
        @/u01/app/oracle/admin/orcl121/scripts/apex.sql
        @/u01/app/oracle/admin/orcl121/scripts/postDBCreation.sql
        @/u01/app/oracle/admin/orcl121/scripts/lockAccount.sql

ACCEPT命令提示輸入SYS和SYSTEM模式的密碼。接著,腳本調用一個主外殼程序,運行orapwd實用程序。這個實用程序用平臺特定的名稱創建外部密碼文件。在Linux上,它是$ORACLE_ HOME/dbs/orapw<DBNAME>(其中<DBNAME>是數據庫的名稱);在Windows上,它是% ORACLE_ HOME%\database\PWD<DBNAME>.ora。

下面是一組對其他SQL腳本的調用,從CreateDB.sql開始:

        SET VERIFY OFF
        connect "SYS"/"&&sysPassword" as SYSDBA
        set echo on
        spool /u01/app/oracle/admin/orcl121/scripts/CreateDB.log append
        startup nomount pfile="/u01/app/oracle/admin/orcl121/scripts/init.ora";
        CREATE DATABASE "orcl121"
        MAXINSTANCES 8
        MAXLOGHISTORY 1
        MAXLOGFILES 16
        MAXLOGMEMBERS 3
        MAXDATAFILES 100
        DATAFILE '/u01/app/oracle/oradata/orcl121/system01.dbf' SIZE 700M
        REUSE AUTOEXTEND ON NEXT  10240K MAXSIZE UNLIMITED
        EXTENT MANAGEMENT LOCAL
        SYSAUX DATAFILE '/u01/app/oracle/oradata/orcl121/sysaux01.dbf' SIZE 550M
        REUSE AUTOEXTEND ON NEXT  10240K MAXSIZE UNLIMITED
        SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP

       TEMPFILE '/u01/app/oracle/oradata/orcl121/temp01.dbf' SIZE 20M
        REUSE AUTOEXTEND ON NEXT  640K MAXSIZE UNLIMITED
        SMALLFILE UNDO TABLESPACE "UNDOTBS1"

       DATAFILE  '/u01/app/oracle/oradata/orcl121/undotbs01.dbf' SIZE 200M
        REUSE AUTOEXTEND ON NEXT  5120K MAXSIZE UNLIMITED
        CHARACTER SET AL32UTF8
        NATIONAL CHARACTER SET AL16UTF16
        LOGFILE GROUP 1 ('/u01/app/oracle/oradata/orcl121/redo01.log') SIZE 51200K,
        GROUP 2 ('/u01/app/oracle/oradata/orcl121/redo02.log') SIZE 51200K,
        GROUP 3 ('/u01/app/oracle/oradata/orcl121/redo03.log') SIZE 51200K
        USER SYS IDENTIFIED BY "&&sysPassword"

       USER SYSTEM IDENTIFIED BY "&&systemPassword";
        spool off

第二行使用提供的密碼用SYS用戶的身份進行連接。第5行使用參數文件init.ora以非裝載模式啟動數據庫。這個文件包含的參數是默認設置的,或者是在DBCA對話框中指定的。下一個命令(一直到文件尾)創建了數據庫。

提示:

記住模式:nomount命令表示“建立內存結構,啟動進程?!?/p>

CREATE DATABASE “oracle121”命令行的后面是一些限制的設置 ( 例如MAXDATAFILES=100表示這個數據庫限制為100個數據文件),之后是4個表空間的子句:

● SYSTEM表空間(存儲數據字典)在數據文件system01.dbf中,其大小為700MB。

● SYSAUX表空間(不與數據字典關聯、但關系緊密的對象)在數據文件sysaux01.dbf中,其大小為550MB。

● 默認的臨時表空間TEMP(用于臨時數據——會話需要的空間,僅持續較短時間)在臨時文件temp01.dbf中,其大小為20MB。撤消表空間UNDOTBS1(用于撤消段,是確保事務持續性所必須的)使用數據文件undotbs01.dbf,其大小為200MB。

接著指定數據庫和語言的字符集。在例子中指定了Unicode。LOGFILE部分指定,數據庫應有3個聯機日志文件組,每個組都包含一個50MB的文件(日志文件成員)。最后,設置SYS和SYSTEM的密碼。

這個數據庫創建目錄僅運行了幾分鐘。它只是創建了數據庫所需的最小結構,最重要的是創建了數據字典。然后,控制權返回給調用的SQL腳本,它(在本例中)啟動了更多的腳本。

● CreateDBFiles.sql創建了表空間USERS,用作默認的表空間,以存儲永久對象(如表)。

● CreateDBCatalog.sql調用一組腳本,根據數據字典和各種提供的PL/SQL包,生成需要的視圖。

● 接著幾個腳本(JServer.sql到apex.sql)生成在DBCA對話框中選擇的各個選項。

● postDBCreation.sql在創建后立即運行所有必要的操作,例如應用綁定的包,把pfile轉換為spfile。

● lockAccount.sql鎖定所有預先注冊的賬戶(有幾個例外),最后重新啟動數據庫。

根據DBCA對話框中的選項,生成的腳本及其內容互不相同。例如,如果第3步選擇從模板中創建數據庫,整個過程就簡單許多,因為數據庫不需要創建,大多數工作都通過調用RMAN Recovery Manager過程來完成,實際上是在模板中從一個備份中恢復數據庫。

2.2.3 初始化參數文件

要啟動數據庫實例,DBCA必須創建一個初始化參數文件。選擇創建數據庫或生成腳本的選項時,就會生成該文件。該文件在其他腳本所在的目錄下生成,在CreateDB.sql腳本的STARTUP命令下指定。

        startup nomount pfile="/u01/app/oracle/admin/orcl121/scripts/init.ora";

下面是練習2-1的對話框生成的文件(為簡潔起見,刪除了注釋):

        db_block_size=8192
        open_cursors=300
        db_domain=""
        db_name="orcl121"
        control_files=("/u01/app/oracle/oradata/orcl121/control01.ctl",
        "/u01/app/oracle/fast_recovery_area/orcl121/control02.ctl")
        db_recovery_file_dest="/u01/app/oracle/fast_recovery_area"
        db_recovery_file_dest_size=5061476352
        compatible=12.0.0.0.0
        diagnostic_dest=/u01/app/oracle
        processes=300
        sga_target=503316480
        audit_file_dest="/u01/app/oracle/admin/orcl121/adump"
        audit_trail=db
        remote_login_passwordfile=EXCLUSIVE
        dispatchers="(PROTOCOL=TCP) (SERVICE=orcl121XDB)"
        pga_aggregate_target=167772160
        undo_tablespace=UNDOTBS1

所有這些參數都在后面的章節中討論。該文件在上百個參數中僅指定了16個,是運行典型數據庫所需的最少參數集。根據環境、規模和性能的要求,后面將添加更多的參數。

練習2-2 使用DBCA生成數據庫創建腳本

使用DBCA生成幾組數據庫創建腳本。盡量多重復幾次,每次都提供不同的數據庫名和SID,選擇不同的選項。下面是要執行的步驟:

(1) 啟動DBCA。響應提示,如下所示:

A.選擇Create Database單選按鈕。單擊Next按鈕。

B.選擇Advanced Mode 單選按鈕。如果選擇Create A Database With Default Configuration,就不會顯示生成腳本的提示。單擊Next按鈕。

C.選擇General Purpose Or Transaction Processing單選按鈕。單擊Next按鈕。

D.把Global Database Name和SID值都指定為gpdb。單擊Next按鈕。

E.取消選擇所有選項,單擊Next按鈕。

F.輸入密碼Oracle121。單擊Next按鈕。

G.在Storage Type下拉框中選擇File System,其他使用默認值。單擊Next按鈕。

H.使用所有默認值,單擊Next按鈕。

I.使用所有默認值,單擊Next按鈕。

J.取消選擇Create Database和Save As A Database Template復選框,選擇Generate Database Creation Scripts復選框。注意創建腳本的目錄。單擊Next按鈕。

K.這一步不需要任何輸入。

L.研究匯總。注意從模板中安裝,將包含上一練習提到的所有選項,還給不同的參數指定了值。單擊Finish按鈕。

M.生成腳本,單擊OK按鈕,再單擊Close按鈕。

(2) 研究腳本。

嘗試逆向工程創建過程。注意使用模板,使該過程簡單許多。比較這個練習和上個練習生成的腳本。

(3) 重復。

重復這個練習,使用不同的設置,熟悉DBCA對話框和它生成的腳本非常重要。

主站蜘蛛池模板: 察雅县| 桃源县| 瓮安县| 安仁县| 岫岩| 五华县| 新和县| 科尔| 曲靖市| 攀枝花市| 台中市| 高碑店市| 寻乌县| 丹江口市| 安平县| 青铜峡市| 台北县| 祥云县| 江北区| 吉隆县| 惠水县| 修水县| 洞头县| 门头沟区| 宜兰市| 许昌县| 沂源县| 黄山市| 吴桥县| 海口市| 东平县| 长海县| 留坝县| 肥城市| 临夏市| 南召县| 囊谦县| 绿春县| 湾仔区| 江阴市| 巩义市|