oracle實體儲存體結構,oracle實體儲存體
oracle實體儲存體結構
資料庫其實是由一堆物理檔案組成的,主要有4個:
1. 控制檔案(control files)
2. 資料檔案(Date files)
3. 重做記錄檔(redolog)
1.控制檔案
控制檔案是資料庫的root file,由他來定位元據庫檔案
裡面有:
- 資料庫的name ,DBID,資料庫唯一識別碼。
- 資料庫建立日期
- 資料檔案,重做日誌,歸檔記錄檔的資訊。
- tablespace的資訊。
- rman 備份
控制檔案他有兩個目的
查詢控制檔案資訊
show parameter control_files;select name from v$controlfile;
control file的指定
其實是在pfile 裡面指定的,dbca建立資料庫的時候會指定。
2. 資料檔案
資料庫的資料實際存放在資料檔案中(data file)。他一般跟tablesapce的關係比較密切,一個tablespace可以由好幾個資料檔案,但是一個資料檔案只能對於一個tablespace。tablespace是邏輯上的概念。資料檔案則是一個物理概念。
查詢資料檔案
SQL> select name,status from v$datafile;
資料檔案的狀態
online,offline,system,主要是前2個,聯機和離線狀態,離線狀態下,資料就沒辦法訪問了。
比如將某個資料檔案offline可以執行
SQL> alter database datafile '/u01/app/oracle/oradata/test58/zabbix.dbf' offline;
但要注意,只有在db開啟歸檔模式時,才可以將資料檔案offline,否則會報錯
ORA-01145: offline immediate disallowed unless media recovery enabled
查看錯誤資訊
SQL> !oerr ora 0114501145, 00000, "offline immediate disallowed unless media recovery enabled"// *Cause: ALTER TABLESPACE ... OFFLINE IMMEDIATE or ALTER DATABASE DATAFILE// ... OFFLINE is only allowed if database is in ARCHIVELOG mode.// *Action:Take tablespace offline normally or shutdown abort. Reconsider your// backup strategy. You could do this if you were archiving your logs.
什麼是歸檔模式,請看redo log裡面的相關操作。
3. 重做記錄檔
redo log其實是非常重要的東西,redo一般在建庫的時候指定。
SQL> select * from v$log
開啟歸檔模式
1.查看是否在歸檔模式下:
SQL> archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/archOldest online log sequence 36Current log sequence 38
2.備份資料庫
3.編輯pfile
LOG_ARCHIVE_DEST="/u01/app/oracle/oradata/test58/archive"
確保有這個目錄。
4.啟動資料庫,但是不要open
startup mount
5.開啟歸檔模式,並且開啟資料庫
alter database ARCHIVELOG;alter database open;
6.查看狀態
SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination /u01/app/oracle/oradata/test58/archiveOldest online log sequence 36Next log sequence to archive 38Current log sequence 38