一、Oracle管理文件
?
??? “Oracle管理文件”可以簡化Oralce數(shù)據(jù)庫的管理,不需要DBA直接管理Oracle數(shù)據(jù)庫在操作系統(tǒng)上的文件。根據(jù)數(shù)據(jù)庫對象而不是文件名來指定操作。
?
??? “Oracle管理文件”可以是:跟蹤文件、審計(jì)文件、報(bào)警文件、核心文件等。
?
??? Oracle可以對“表空間”、“聯(lián)機(jī)重做日志”、“控制文件”來創(chuàng)建相應(yīng)的唯一的Oracle管理文件,并在不需要時(shí)刪除。
?
?
二、Oracle管理文件的好處
?
??? 1、使得數(shù)據(jù)庫管理更加方便。
??????? 不需要構(gòu)造文件名和存儲(chǔ)要求,可相應(yīng)命名,定義存儲(chǔ)特征并分配存儲(chǔ)池
?
??? 2、減少由管理員指定錯(cuò)誤文件而產(chǎn)生的破壞
??????? 管理文件創(chuàng)造的文件及文件名都是唯一的,不會(huì)在不同數(shù)據(jù)庫使用同一文件,一個(gè)文件使用不同名稱等
?
??? 3、減少由廢棄文件消耗引起的磁盤空間浪費(fèi)
??????? Oracle管理的文件不用時(shí)會(huì)自動(dòng)刪除,并防止了刪除文件時(shí)可能出現(xiàn)的錯(cuò)誤
?
??? 4、簡化測試和開發(fā)數(shù)據(jù)庫的創(chuàng)建過程
??????? 決定有關(guān)文件結(jié)構(gòu)和名稱的時(shí)間減少,執(zhí)行更少的文件管理任務(wù)
?
??? 5、便攜式第三方工具的開發(fā)更容易展開
??????? 不必將操作系統(tǒng)特定的文件名稱放到SQL腳本中
?
?
三、Oracle管理文件的條件
?
??? Oracle管理文件可以單獨(dú)存在,即可以以前的文件都是非Oracle管理,之后創(chuàng)建的為Oracle管理文件
?
??? 初始化參數(shù):
?
??? DB_CREATE_FILE_DEST:定義默認(rèn)文件系統(tǒng)目錄位置。以后創(chuàng)建時(shí)將默認(rèn)創(chuàng)建在此。
??????? 可以在這個(gè)目錄下創(chuàng)建:數(shù)據(jù)文件、臨時(shí)文件、聯(lián)機(jī)重做日志文件、控制文件。
??????? 例: DB_CREATE_FILE_DEST = '/u01/oradata/payroll'
?
??? DB_CREATE_ONLINE_LOG_DEST_n:聯(lián)機(jī)重做日志文件和控制文件的默認(rèn)目錄位置。n表示多錄備份的不同位置。
??????? 可以在這個(gè)目錄下創(chuàng)建:聯(lián)機(jī)重做日志文件、控制文件。
??????? 例: DB_CREATE_ONLINE_LOG_DEST_1 = '/u02/oradata/payroll'
???????????? DB_CREATE_ONLINE_LOG_DEST_2 = '/u03/oradata/payroll'
?
??? 注意:上面指定的目錄必須要事先存在,Oracle不會(huì)自己創(chuàng)建。另改參數(shù)可以使用ALTER SYSTEM、ALTER SESSION來設(shè)置。
????? ??? 當(dāng)創(chuàng)建命令中沒有指定文件,且上面兩個(gè)參數(shù)有設(shè)定的時(shí)候,Oracle將會(huì)創(chuàng)建Oracle管理文件。
?
?
四、管理文件的創(chuàng)建
?
??? 1、名稱創(chuàng)建規(guī)則
?
??? 數(shù)據(jù)文件: ora_%t_%u.dbf??? /u01/oradata/payroll/ora_tbs1_2ixfh90q.dbf
??? 臨時(shí)文件: ora_%t_%u.tmp??? /u01/oradata/payroll/ora_temp1_6dygh80r.tmp
??? 日志文件: ora_%g_%u.log??? /u01/oradata/payroll/ora_1_wo94n2xi.log
??? 控制文件: ora_%u.ctl?????? /u01/oradata/payroll/ora_cmre7t30p.ctl
?
??? 注:%t是表空間名稱;%u是8位隨機(jī)字符;%g是聯(lián)機(jī)重做日志文件組號
?
??? 2、在創(chuàng)建數(shù)據(jù)庫時(shí)創(chuàng)建Oracle管理文件
?
??? 創(chuàng)建數(shù)據(jù)庫時(shí)可以包含以下子句來指定創(chuàng)建的文件名和地址:
??????? CONTROL_FILES、LOGFILE、DATAFILE、UNDO TABLESPACE、TEMPORARY TABLESPACE
?
??? * 如果在創(chuàng)建語句中指定了文件名,則不創(chuàng)建Oracle管理文件
??? * 在創(chuàng)建過程中未指定文件名,且已經(jīng)配置了初始化管理文件地址參數(shù),則創(chuàng)建為Oracle管理文件
??? * 如果即沒有文件名,也沒有指定參數(shù),那么有的在默認(rèn)路徑創(chuàng)建,有的報(bào)錯(cuò)
?
??? 舉例1:
??? DB_CREATE_FILE_DEST = '/u01/oradata/sample'
??? DB_CREATE_ONLINE_LOG_DEST_1 = '/u02/oradata/sample'
??? DB_CREATE_ONLINE_LOG_DEST_2 = '/u03/oradata/sample'
??? CREATE DATABASE sample;
?
??? * u01下生成SYSTEM表空間的文件,大小100M,自動(dòng)擴(kuò)展,無大小限制
??? * u02、u03下生成兩個(gè)聯(lián)機(jī)日志組,每組兩個(gè)成員,每個(gè)組員100M
??? * 自動(dòng)撤銷有效則在u01下生成撤銷表空間,大小10M
??? * u02、u03下生成兩個(gè)控制文件,u02為主控制文件
?
?
五、創(chuàng)建Oracle管理文件
?
??? 1、表空間的數(shù)據(jù)文件
?
????? CREATE TABLESPACE tablespace_name
????? CREATE UNDO TABLESPACE tablespace_name
????? ALTER TABLESPACE tablespace_name ADD DATAFILE
?
??? 注1:只要不加文件地址和文件名,其他的命令參數(shù)都可以加入,不影響Oracle管理文件的創(chuàng)建
??? 注2:要注意表空間名不代表數(shù)據(jù)文件名
?
??? 2、臨時(shí)表空間的臨時(shí)文件
?
????? CREATE TEMPORARY TABLESPACE tablespace_name
????? ALTER TABLESPACE tablespace_name ADD TEMPFILE
?
??? 3、控制文件
?
??? 控制文件的創(chuàng)建地址順序確定:
?
? ??? ① 看命令中是否直接指定地址
?? ?? ② 看啟動(dòng)參數(shù)中是否有CONTROL_FILES參數(shù)
?? ?? ③ 看DB_CREATE_ONLINE_LOG_DEST_n
?? ?? ④ DB_CREATE_FILE_DEST
?? ?? ⑤ 以上都無時(shí),在默認(rèn)路徑創(chuàng)建
?
??? 注意RESETLOGS/NORESETLOGS子句的使用,下面是創(chuàng)建實(shí)例:
?
??? CREATE CONTROLFILE
??? DATABASE sample
??? LOGFILE GROUP 1 ('/u02/oradata/sample/ora_1_o220rtt9.log',
?????????????????????'/u03/oradata/sample/ora_1_vhs82jdm.log',) SIZE 100M,
??????????? GROUP?2 ('/u02/oradata/sample/ora_2_82jd6nd9.log',
?????????????????????'/u03/oradata/sample/ora_2_nmisk9wj.log',) SIZE 100M
??? NORESETLOGS
??? DATAFILE '/u01/oradata/sample/ora_system_xu34ymd7.dbf' SIZE 100M
??? MAXLOGFILES 5
??? MAXLOGHISTORY 100
??? MAXDATAFILES 10
??? MAXINSTANCES 2
??? ARCHIVELOG;
?
??? 4、聯(lián)機(jī)重做日志
?
??? ALTER DATABASE ADD LOGDILE
??? ALTER DATABASE OPEN RESETLOGS
?
?