數據庫其實是由一堆物理文件組成的,主要有4個:
1. 控制文件(control files)
2. 數據文件(Date files)
3. 重做日志文件(redolog)
控制文件是數據庫的root file,由他來定位數據庫文件
裡面有:
控制文件他有兩個目的
包含一些data files,redo files存放在哪裡的信息。所以沒有control file,數據庫是沒辦法mount的,因為他定位不到基本的數據文件。 數據庫允許的一些元數據會記錄在裡面,比如檢查點的相關信息等。show parameter control_files;
select name from v$controlfile;
其實是在pfile 裡面指定的,dbca創建數據庫的時候會指定。
數據庫的數據實際存放在數據文件中(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 01145
01145, 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裡面的相關操作。
redo log其實是非常重要的東西,redo一般在建庫的時候指定。
SQL> select * from v$log
1.查看是否在歸檔模式下:
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Oldest online log sequence 36
Current 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 Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/oradata/test58/archive
Oldest online log sequence 36
Next log sequence to archive 38
Current log sequence 38