新聞中心
Oracle XE自帶數(shù)據(jù)庫是如何創(chuàng)建的呢?這是很多人都提到過的問題,下面就為您詳細介紹Oracle XE自帶數(shù)據(jù)庫創(chuàng)建的過程,供您參考。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供屯昌企業(yè)網(wǎng)站建設,專注與網(wǎng)站建設、成都網(wǎng)站設計、HTML5、小程序制作等業(yè)務。10年已為屯昌眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計公司優(yōu)惠進行中。
簡單的說了一下Oracle 10g XE的字符集問題, 我們接下來看看Oracle XE自帶數(shù)據(jù)庫如何創(chuàng)建的.
老實說,最開始在Windows上安裝XE的時候,步驟非常簡單,還以為Oracle已經(jīng)掩蓋了全部細節(jié)呢,安裝之后瀏覽一下相關目錄就清晰多了.我把XE 安裝到 D: 盤,在 D:\oraclexe\app\oracle\product\10.2.0\server\config\scripts 目錄下有如下文件:
- 2010-01-24 20:47 1,783 cloneDBCreation.sql
- 2010-01-24 20:47 321 CloneRmanRestore.sql
- 2010-01-24 20:48 2,410 init.ora
- 2010-01-24 20:48 2,177 initXETemp.ora
- 2010-01-24 20:47 929 postDBCreation.sql
- 2010-01-24 20:47 780 postScripts.sql
- 2010-01-24 20:47 1,334 rmanRestoreDatafiles.sql
- 2010-01-24 20:47 1,424 XE.bat
- 2010-01-24 20:47 716 XE.sql
XE.bat 批處理文件完成如下事情:添加需要的操作系統(tǒng)用戶; 創(chuàng)建相關目錄存放 Oracle 數(shù)據(jù)文件;設定 Oracle 環(huán)境變量主要是 SID 名字;調(diào)用 Oradim 命令創(chuàng)建XE 的實例; 然后調(diào)用 XE.sql 腳本.
XE.sql 腳本首先定義XE 實例的用戶需要用到的密碼,然后用 orapwd.exe 創(chuàng)建密碼文件, 這些步驟都和普通的 Oracle 創(chuàng)建實例的腳本非常相似.接下里就有意思了:XE.sql 調(diào)用 CloneRmanRestore.sql , CloneRmanRestore.sql 調(diào)用rmanRestoreDatafiles.sql.
- variable devicename varchar2(255);
- declare
- omfname varchar2(512) := NULL;
- done boolean;
- begin
- dbms_output.put_line(' ');
- dbms_output.put_line(' Allocating device.... ');
- dbms_output.put_line(' Specifying datafiles... ');
- :devicename := dbms_backup_restore.deviceAllocate;
- dbms_output.put_line(' Specifing datafiles... ');
- dbms_backup_restore.restoreSetDataFile;
- dbms_backup_restore.restoreDataFileTo(1, 'D:\oraclexe\oradata\XE\system.dbf', 0, 'SYSTEM');
- dbms_backup_restore.restoreDataFileTo(2, 'D:\oraclexe\oradata\XE\undo.dbf', 0, 'UNDOTBS1');
- dbms_backup_restore.restoreDataFileTo(3, 'D:\oraclexe\\oradata\XE\sysaux.dbf', 0, 'SYSAUX');
- dbms_backup_restore.restoreDataFileTo(4, 'D:\oraclexe\oradata\XE\users.dbf', 0, 'USERS');
- dbms_output.put_line(' Restoring ... ');
- dbms_backup_restore.restoreBackupPiece
- ('D:\oraclexe\app\oracle\product\10.2.0\server\config\seeddb\EXPRESS.dfb', done);
- if done then
- dbms_output.put_line(' Restore done.');
- else
- dbms_output.put_line(' ORA-XXXX: Restore failed ');
- end if;
- dbms_backup_restore.deviceDeallocate;
- end;
- /
非常有意思.XE 用的是非常規(guī)手段: dbms_backup_restore 過程.以前我曾經(jīng)在 RMAN 備份,未使用catalog,控制文件丟失的解決辦法 中作過介紹:
在 Oracle 816 以后的版本中,Oracle 提供了一個包:DBMS_BACKUP_RESTORE.DBMS_BACKUP_RESTORE 包是由 dbmsbkrs.sql 和 prvtbkrs.plb 這兩個腳本創(chuàng)建的.catproc.sql 腳本運行后會調(diào)用這兩個包.所以是每個數(shù)據(jù)庫都有的這個包. 是 Oracle服務器和操作系統(tǒng)之間 IO 操作的接口.由恢復管理器直接調(diào)用。
OracleXE 直接用這個包從一個種子備份 'D:\oraclexe\app\oracle\product\10.2.0\server\config\seeddb\EXPRESS.dfb' 恢復需要的文件.注意到上面只有四個必要的表空間,Oracle 在發(fā)行說明中所說的空間限制就是從這個地方而來.至于能否超過 4g 的限制,我后面再分析.
接下來 XE.sql 調(diào)用 cloneDBCreation.sql,這個腳本的主要目的是為了創(chuàng)建一個可用的控制文件.
并利用dbms_backup_restore 的 zerodbid(0) 函數(shù)創(chuàng)建了一個新的 DBID .
然后
alter database "XE" open resetlogs;alter database rename global_name to "XE";并添加了一個臨時表空間 Temp.
這個腳本執(zhí)行之后,XE.sql 調(diào)用 postDBCreation.sql, 通過如下過程定義端口:
- begin
- dbms_xdb.sethttpport('8080');
- dbms_xdb.setftpport('0');
- end;
/*** XE.sql 調(diào)用 postScripts.sql ,主要是一些后續(xù)的操作,Patch 腳本什么的.
到此,數(shù)據(jù)庫創(chuàng)建已經(jīng)完成.也就是圖形化安裝的時候 1~5 的幾個步驟省略的過程.其實沒那么復雜.
如果是 Linux 版本,則這一堆腳本在 /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts 這個目錄下.除了調(diào)用 oradim.exe 命令之外,其他差異不大.
【編輯推薦】
Oracle物化視圖創(chuàng)建全過程
ORACLE創(chuàng)建實例的過程
oracle時間加減的語句寫法
Oracle死鎖的處理
教您如何實現(xiàn)Oracle模糊查詢
當前名稱:OracleXE自帶數(shù)據(jù)庫創(chuàng)建的過程
文章URL:http://www.5511xx.com/article/cojojje.html


咨詢
建站咨詢
