Oracle管理文件(一)
?
??? Oracle的管理文件說白了就是Oracle自動來進行文件的管理,如此則不再需要認為得進行指定和對OS上的文件系統進行操作,只需要操作Oracle的對象即可。這樣的做法可以提供比原始的管理更加有效的操作方式,不好的地方在于和我們以前的思維邏輯不太一致,可能會不太容易接受。先看一下關于Oracle管理文件的介紹。
?
?
一、Oracle管理文件
?
??? “Oracle管理文件”可以簡化Oralce數據庫的管理,不需要DBA直接管理Oracle數據庫在操作系統上的文件。根據數據庫對象而不是文件名來指定操作。
?
??? “Oracle管理文件”可以是:跟蹤文件、審計文件、報警文件、核心文件等。
?
??? Oracle可以對“表空間”、“聯機重做日志”、“控制文件”來創建相應的唯一的Oracle管理文件,并在不需要時刪除。
?
?
二、Oracle管理文件的好處
?
??? 1、使得數據庫管理更加方便。
??????? 不需要構造文件名和存儲要求,可相應命名,定義存儲特征并分配存儲池
?
??? 2、減少由管理員指定錯誤文件而產生的破壞
??????? 管理文件創造的文件及文件名都是唯一的,不會在不同數據庫使用同一文件,一個文件使用不同名稱等
?
??? 3、減少由廢棄文件消耗引起的磁盤空間浪費
??????? Oracle管理的文件不用時會自動刪除,并防止了刪除文件時可能出現的錯誤
?
??? 4、簡化測試和開發數據庫的創建過程
??????? 決定有關文件結構和名稱的時間減少,執行更少的文件管理任務
?
??? 5、便攜式第三方工具的開發更容易展開
??????? 不必將操作系統特定的文件名稱放到SQL腳本中
?
?
三、Oracle管理文件的條件
?
??? Oracle管理文件可以單獨存在,即可以以前的文件都是非Oracle管理,之后創建的為Oracle管理文件
?
??? 初始化參數:
?
??? DB_CREATE_FILE_DEST:定義默認文件系統目錄位置。以后創建時將默認創建在此。
??????? 可以在這個目錄下創建:數據文件、臨時文件、聯機重做日志文件、控制文件。
??????? 例: DB_CREATE_FILE_DEST = '/u01/oradata/payroll'
?
??? DB_CREATE_ONLINE_LOG_DEST_n:聯機重做日志文件和控制文件的默認目錄位置。n表示多錄備份的不同位置。
??????? 可以在這個目錄下創建:聯機重做日志文件、控制文件。
??????? 例: DB_CREATE_ONLINE_LOG_DEST_1 = '/u02/oradata/payroll'
??????????? DB_CREATE_ONLINE_LOG_DEST_2 = '/u03/oradata/payroll'
?
??? 注意:上面指定的目錄必須要事先存在,Oracle不會自己創建。另改參數可以使用ALTER SYSTEM、ALTER SESSION來設置。
????????? 當創建命令中沒有指定文件,且上面兩個參數有設定的時候,Oracle將會創建Oracle管理文件。
?
?
四、管理文件的創建
?
??? 1、名稱創建規則
?
??? 數據文件: ora_%t_%u.dbf??? /u01/oradata/payroll/ora_tbs1_2ixfh90q.dbf
??? 臨時文件: 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位隨機字符;%g是聯機重做日志文件組號
?
??? 2、在創建數據庫時創建Oracle管理文件
?
??? 創建數據庫時可以包含以下子句來指定創建的文件名和地址:
??????? CONTROL_FILES、LOGFILE、DATAFILE、UNDO TABLESPACE、TEMPORARY TABLESPACE
?
??? * 如果在創建語句中指定了文件名,則不創建Oracle管理文件
??? * 在創建過程中未指定文件名,且已經配置了初始化管理文件地址參數,則創建為Oracle管理文件
??? * 如果即沒有文件名,也沒有指定參數,那么有的在默認路徑創建,有的報錯
?
??? 舉例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,自動擴展,無大小限制
??? * u02、u03下生成兩個聯機日志組,每組兩個成員,每個組員100M
??? * 自動撤銷有效則在u01下生成撤銷表空間,大小10M
??? * u02、u03下生成兩個控制文件,u02為主控制文件
?
?
五、創建Oracle管理文件
?
??? 1、表空間的數據文件
?
????? CREATE TABLESPACE tablespace_name
????? CREATE UNDO TABLESPACE tablespace_name
????? ALTER TABLESPACE tablespace_name ADD DATAFILE
?
??? 注1:只要不加文件地址和文件名,其他的命令參數都可以加入,不影響Oracle管理文件的創建
??? 注2:要注意表空間名不代表數據文件名
?
??? 2、臨時表空間的臨時文件
?
????? CREATE TEMPORARY TABLESPACE tablespace_name
????? ALTER TABLESPACE tablespace_name ADD TEMPFILE
?
??? 3、控制文件
?
??? 控制文件的創建地址順序確定:
?
????? ① 看命令中是否直接指定地址
????? ② 看啟動參數中是否有CONTROL_FILES參數
????? ③ 看DB_CREATE_ONLINE_LOG_DEST_n
????? ④ DB_CREATE_FILE_DEST
????? ⑤ 以上都無時,在默認路徑創建
?
??? 注意RESETLOGS/NORESETLOGS子句的使用,下面是創建實例:
?
??? 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、聯機重做日志
?
??? ALTER DATABASE ADD LOGDILE
??? ALTER DATABASE OPEN RESETLOGS
?
?