第一課 表空間的創(chuàng)建管理
(一)表空間概述
一個數(shù)據(jù)庫可以多個表空間
一個表空間對應(yīng)多個數(shù)據(jù)文件柳击,一個表空間可以包含一個或多個模式對象
一個數(shù)據(jù)文件只能保存于一個表空間中
查找表空間所對應(yīng)的數(shù)據(jù)文件
select tablespace_name,file_name from dba_data_files;
(二)創(chuàng)建用戶表空間(本地管理方式)
創(chuàng)建時,應(yīng)明確表空間名碧浊、類型秧秉、對應(yīng)的數(shù)據(jù)文件的名稱和位置(至少一個)识虚、區(qū)的分配方式骗随、段的管理方式聘裁。
命名:不能超過30字符轰豆,必須字母開頭
類型:普通表空間胰伍、臨時表空間、撤銷表空間
表空間中區(qū)的分配方式:自動擴(kuò)展autoallocate(默認(rèn)) 和 定制 uniform
段的管理方式:自動管理auto(默認(rèn))只關(guān)注pctfree 和 手動manual 9i版本之前都是手動管理,pctuse和pctfree甥桂。
create 【temp | undo | 沒有的話就是默認(rèn)永久表空間】tablespace 表空間名
datafile '數(shù)據(jù)文件路徑及名稱' size 一般10m-50m,【 '第二個數(shù)據(jù)文件']】autoextend自動擴(kuò)展 若on 則next 擴(kuò)展大小 有限擴(kuò)展maxsize 無限擴(kuò)展unlimited
最小區(qū)分配 minimum extent 一般不需要分配
logging默認(rèn) nologging不寫入
區(qū)分配方式:extent management 【dictionary | local [ autoallocate | uniform size k|m ]】
段管理方式:segment space management 【auto | manual】
創(chuàng)建本地管理的永久表空間器钟,區(qū)自動分配allocate、段自動管理auto 渗饮,由于默認(rèn)不用設(shè)置
create tablespace 學(xué)生表空間
datafile '文件路徑及名字'
create tablespace index表空間
datafile '文件路徑及名字' size 10m
uniform size 512k
segment space management manual;
create tablespace tooltbs
datafile '文件路徑及名字' size 10m autoextend on next 5m maxsize 50m
(三)修改表空間大小
表空間大小是由數(shù)據(jù)文件決定的,因此只看對數(shù)據(jù)文件的操作方法即可宿刮。
1互站、添加數(shù)據(jù)文件
表空間添加數(shù)據(jù)文件
alter tablespace 名字
add datafile '文件路徑名稱' size 大小
注意:不能在永久表空間中添加臨時數(shù)據(jù)文件
臨時表空間中添加臨時數(shù)據(jù)文件
alter tablespace 臨時表空間名
add tempfile '臨時數(shù)據(jù)文件路徑名稱'
2、改變已有數(shù)據(jù)文件的大小
① 改變文件的可擴(kuò)展性
② 重新設(shè)置大小
改變數(shù)據(jù)文件的擴(kuò)展性(注意是對database操作)
關(guān)于數(shù)據(jù)文件的修改 是database
alter database datafile '文件路徑名稱'
autoextend on next 5m maxsize 50m;
取消擴(kuò)展性
alter database datafile '文件路徑名稱'
autoextend off;
重新設(shè)置數(shù)據(jù)文件大小
ALTER DATABASE DATAFILE 'D:\CL\index01.dbf'
RESIZE 50M;
(四)修改表空間的可用性
可用性指表空間的脫機(jī)(不能訪問)或聯(lián)機(jī)(可以訪問)操作僵缺。因?yàn)橛袝r需要脫機(jī)恢復(fù)管理胡桃,或者備份時。
system表空間存放大量數(shù)據(jù)字典磕潮,要時刻寫入數(shù)據(jù)翠胰,時刻會被訪問,因此不能脫機(jī)自脯。
存放在線回退信息的撤銷表空間也不能脫機(jī)
默認(rèn)臨時表空間不可以脫機(jī)之景,但臨時表空間可以
對某個表空間脫機(jī)后,該表空間的數(shù)據(jù)文件也脫機(jī)了冤今。
查看表空間的狀態(tài)
select tablespace_name,status,contents from dba_tablespaces;
查看數(shù)據(jù)文件的可用性
select file_name,online_status,tablespace_name from dba_data_files;
設(shè)置表空間可用性
alter tablespace 表空間名 offline/online
清理屏幕clear src;
(五)修改表空間的讀寫性
讀寫性:只讀/可讀可寫狀態(tài)
滿足下面條件的表空間才可以設(shè)置為只讀狀態(tài)
① 表空間必須處于聯(lián)機(jī)狀態(tài)闺兢,
② 表空間中不能包含任何活動的回退段
注意:
系統(tǒng)表空間system、輔助系統(tǒng)sysaux、臨時表空間不能設(shè)置只讀
若表空間正在進(jìn)行聯(lián)機(jī)數(shù)據(jù)備份屋谭,不能設(shè)置只讀
注意:表空間設(shè)置為只讀之后脚囊,執(zhí)行dml語句和除了drop命令之外的ddl語句,都會報(bào)錯桐磁。也就是只讀下悔耘,可以進(jìn)行drop操作。
alter tablespace 表空間名 read only
alter tablespace 表空間名 read writer
(六)設(shè)置默認(rèn)表空間
默認(rèn)永久表空間users表空間 我擂、默認(rèn)臨時表空間是temp表空間
alter databse default tablespace 表空間名
(七)刪除表空間
drop tablespace tablespace_name
若表空間非空則需要加入 including contents
刪除對應(yīng)的數(shù)據(jù)文件 再加入子句 and datafiles
若有約束則再加入 cascade constraints
(八)表空間信息查詢
查看數(shù)據(jù)字典結(jié)構(gòu) desc + 數(shù)據(jù)字典名
查看表空間基本信息 data_tablespace
查看表空間數(shù)據(jù)文件信息 dba_data_files
第二課 數(shù)據(jù)文件管理
一衬以、數(shù)據(jù)文件概述
1、內(nèi)容:(主語是數(shù)據(jù)文件)
用于保存數(shù)據(jù)庫中所有數(shù)據(jù)的文件
臨時數(shù)據(jù)文件的存儲內(nèi)容是臨時性的校摩,一定條件下自動釋放
每個數(shù)據(jù)文件都具有兩個文件號看峻,稱為絕對文件號和相對文件號
絕對文件號用于整個數(shù)據(jù)庫內(nèi)唯一標(biāo)識一個數(shù)據(jù)文件
相對文件號用于表空間范圍內(nèi)唯一標(biāo)識
2、與表空間關(guān)系
一個表空間可以包含多個數(shù)據(jù)文件
一個數(shù)據(jù)文件只能屬于一個表空間
3衙吩、創(chuàng)建數(shù)據(jù)文件
數(shù)據(jù)文件依附于表空間而存在互妓,創(chuàng)建數(shù)據(jù)文件就是添加表空間大小
創(chuàng)建數(shù)據(jù)文件時應(yīng)該根據(jù)文件數(shù)據(jù)量的大小確定文件的大小以及文件的增長方式
可以通過dba_data_files了解數(shù)據(jù)文件的文件名file_name、大小bytes坤塞、autoextnsible冯勉。
可以用set linesize 100;設(shè)置行大小。
alter tablespace 表空間名 add datafile 數(shù)據(jù)文件名
alter tablespace 臨時表空間名 add tempfile 臨時數(shù)據(jù)文件名
4摹芙、修改數(shù)據(jù)文件大小
方法
① 自動增長方式
1)創(chuàng)建時設(shè)置數(shù)據(jù)文件為自動增長
alter tablespace .... add datafile .... size ... autoextend on next ...
2)創(chuàng)建后修改數(shù)據(jù)文件為自動增長
alter database datafile ...size ... autoextend on next ...k|M maxsize ...k|m
② 手工改動大小
alter database datafile...resize...
重新設(shè)置數(shù)據(jù)文件的大小
alter database datafile .... resize...
5灼狰、改變數(shù)據(jù)文件的可用性
① 概念:可以通過將數(shù)據(jù)文件聯(lián)機(jī)或脫機(jī)來改變其可用性
② 改變數(shù)據(jù)文件可用性的情況
1) 要進(jìn)行數(shù)據(jù)文件脫機(jī)備份時
2) 需要重命名數(shù)據(jù)文件或改變數(shù)據(jù)文件位置
3) 寫入數(shù)據(jù)文件時發(fā)生錯誤,oracle會自動將數(shù)據(jù)文件脫機(jī)浮禾,故障解除后交胚,需要自己手動聯(lián)機(jī)
4) 數(shù)據(jù)文件丟失或損壞,需要在數(shù)據(jù)庫啟動之前將數(shù)據(jù)文件脫機(jī)
先看看現(xiàn)在是什么模式
select log_mode from v$database;
非歸檔模式下改變數(shù)據(jù)文件的可用性
非歸檔模式下盈电,通常不能將數(shù)據(jù)文件脫機(jī)
查看數(shù)據(jù)文件的狀態(tài)online_status
但如果由于數(shù)據(jù)文件的損壞承绸,需要將數(shù)據(jù)文件脫機(jī),然后重啟數(shù)據(jù)庫
alter database datafile .... offline drop;
在非歸檔模式下挣轨,不能直接online,需要將數(shù)據(jù)文件聯(lián)機(jī)之前進(jìn)行修復(fù)
RECOVER DATAFILE.....對數(shù)據(jù)文件進(jìn)行恢復(fù)轩猩,最后執(zhí)行聯(lián)機(jī)
alter database datafile .... online;
歸檔模式下改變數(shù)據(jù)文件可用性
alter database datafile .... online/offline
6卷扮、改變同一個表空間中的數(shù)據(jù)文件名稱 和 位置
為了提高數(shù)據(jù)庫系統(tǒng)的整體效率,減少某個磁盤上的IO均践。
在數(shù)據(jù)庫中晤锹,數(shù)據(jù)文件不僅僅要從物理地址上進(jìn)行修改,邏輯關(guān)系上也要修改
① 先將數(shù)據(jù)文件所在的表空間設(shè)置為脫機(jī)狀態(tài)
② 在操作系統(tǒng)中重命名數(shù)據(jù)文件或移動數(shù)據(jù)文件位置(物理上)
③ 進(jìn)行邏輯關(guān)系上的修改
alter tablespace ..... rename datafile
原來數(shù)據(jù)文件路徑及名稱1,原來數(shù)據(jù)文件路徑及名稱2
to
新的數(shù)據(jù)文件路徑及名稱1_2,新的數(shù)據(jù)文件路徑及名稱2_2;
④ 將表空間聯(lián)機(jī) alter tablespace ... online;
7彤委、刪除數(shù)據(jù)文件
刪除某個表空間中的某個 空 數(shù)據(jù)文件
alter tablespace .... drop datafile ...
空數(shù)據(jù)文件指為該文件分配的所有區(qū)都被回收
刪除數(shù)據(jù)文件的同時鞭铆,將刪除控制文件的數(shù)據(jù)字典中與該數(shù)據(jù)文件或臨時數(shù)據(jù)文件的相關(guān)信息
同時將刪除操作系統(tǒng)的物理文件
刪除數(shù)據(jù)文件或臨時數(shù)據(jù)文件時的約束:
數(shù)據(jù)庫要在打開open狀態(tài)
數(shù)據(jù)文件或臨時數(shù)據(jù)文件必須是空的
不能刪除表空間的第一個或唯一一個(臨時)數(shù)據(jù)文件。除非整個表空間刪除。
不能刪除只讀表空間中的數(shù)據(jù)文件
不能刪除system表空間的數(shù)據(jù)文件
不能刪除采用本地管理的處于脫機(jī)狀態(tài)的數(shù)據(jù)文件
8车遂、查詢數(shù)據(jù)文件信息(多練封断,熟悉)
dba_data_files: file_name
dba_temp_files ……在PPT中
查看數(shù)據(jù)文件動態(tài)信息v$datafile
查看數(shù)據(jù)文件的詳細(xì)信息和增長方式v$dba_data_files
查看臨時數(shù)據(jù)文件信息DBA_TEMP_FILES
第三課 其他表空間及存儲案例
其他表空間
本次課內(nèi)容
本節(jié)內(nèi)容
(一)臨時表空間管理
0、臨時表空間概述
臨時表空間主要由排序操作使用舶担。
臨時表空間可以由多個用戶共享坡疼,在其中不能包含任何永久對象。
1衣陶、臨時表空間作用
① 在數(shù)據(jù)庫實(shí)例運(yùn)行過程中柄瑰,用戶執(zhí)行排序等SQL語句時會產(chǎn)生大量的臨時數(shù)據(jù)。
② 臨時表空間由臨時數(shù)據(jù)文件組成剪况,是專門存儲臨時數(shù)據(jù)的表空間教沾,這些臨時數(shù)據(jù)在會話結(jié)束時會自動釋放。
③ Oracle11g中創(chuàng)建數(shù)據(jù)庫時會自動創(chuàng)建一個名稱為temp的臨時表空間译断。
④ 每個Oracle用戶都需要使用一個臨時表空間來存儲臨時數(shù)據(jù)授翻。
⑤ 臨時表空間數(shù)據(jù)主要自
1)索引create或rebuild
2)Order by 或 group by
3)distinct操作
4)union或intersect或minus(集合查詢:合并、交集)
5)sort-merge joins(排序合并連接)
6)analyze
⑥ 臨時表空間的消耗主要原因是需要對查詢的中間結(jié)果進(jìn)行排序镐作。
2藏姐、使用原理
① 在數(shù)據(jù)庫實(shí)例運(yùn)行過程中,系統(tǒng)會優(yōu)先使用PGA排序區(qū)存儲臨時數(shù)據(jù)该贾。
如果有大型池就占用大型池羔杨,沒有則占用一部分共享池。
② 若內(nèi)存不足以容納那么多數(shù)據(jù)杨蛋,此時會使用臨時表空間集中管理臨時數(shù)據(jù)兜材。
空間大了提高了排序操作的并發(fā)度,有專門的空間又提高了存儲空間管理的效率逞力。
③ 使用原則
1)創(chuàng)建用戶時要記得為用戶創(chuàng)建臨時表空間曙寡。
用戶臨時表空間 → 系統(tǒng)臨時表空間 → system表空間
2)合理設(shè)置PGA,減少臨時表空間使用的幾率寇荧。
優(yōu)先使用內(nèi)存PGA举庶,提高系統(tǒng)性能。
3)要為臨時表空間保留足夠的硬盤空間揩抡。
尤其是Linux系統(tǒng)户侥,系統(tǒng)會在使用時才為臨時文件分配空間。
3峦嗤、創(chuàng)建與管理
1)創(chuàng)建臨時表空間時蕊唐,一般使用本地管理表空間,并且必須使用標(biāo)準(zhǔn)數(shù)據(jù)塊烁设。
2)臨時表空間的區(qū)只能采用統(tǒng)一定制uniform分配方式替梨,不能使用autoallocate。
創(chuàng)建一個臨時表空間temp1
SQL>CREATE TEMPORARY TABLESPACE temp1
TEMPFILE D:\APP\ADMINISTRATOR\ORADATA\ORCL\temp01.dbf'
SIZE 20M
UNIFORM SIZE 512K;
創(chuàng)建一個臨時表空間temp2。
SQL>CREATE TEMPORARY TABLESPACE temp2
TEMPFILE D:\APP\ADMINISTRATOR\ORADATA\ORCL\temp02.dbf' SIZE 20M;
默認(rèn)是uniform size 1M副瀑。
3)使用 ALTER TABLESPACE 修改臨時表空間
ADD/DROP TEMPFILE:為臨時表空間增加/刪除數(shù)據(jù)文件弓熏。
RESIZE:重置臨時數(shù)據(jù)文件大小。
開啟/關(guān)閉文件自動增長
4)使用DROP TABLESPACE刪除臨時表空間
不能刪除當(dāng)前用戶的默認(rèn)表空間俗扇。
4硝烂、臨時表空間組
1)在Oracle可以創(chuàng)建多個臨時表空間,并把它們組成一個臨時表空間組铜幽,這樣應(yīng)用數(shù)據(jù)用于排序時可以使用組里的多個臨時表空間滞谢。臨時表空間組至少有一個臨時表空間。
2)使用臨時表空間組的優(yōu)點(diǎn)
① 數(shù)據(jù)庫層面可以同時指定多個臨時表空間除抛,避免引起的磁盤排序(外排序)問題狮杨;
② 當(dāng)一個用戶同時有多個會話時,可以使得它們使用不同的臨時表空間到忽;
③ 并行操作中橄教,不同的進(jìn)程可以使用不同的臨時表空間。
④ 不同臨時表空間使用不同磁盤喘漏,可以提升系統(tǒng)性能护蝶。
3)創(chuàng)建一個臨時表空間temp3,同時創(chuàng)建臨時表空間組temp_group翩迈。
SQL>CREATE TEMPORARY TABLESPACE temp3
TEMPFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\temp03.dbf‘ SIZE 20M
UNIFORM SIZE 512K
TABLESPACE GROUP temp_group;
4)將temp2臨時表空間加入組temp_group中
SQL>alter tablespace temp2 tablespace group temp_group ;
5)將temp3臨時表空間移動到指定臨時表空間組tb_group2(沒有的話會自動創(chuàng)建)
alter tablespace temp3 to tb_group2;
5持灰、臨時表空間使用
1)創(chuàng)建用戶時指定臨時表空間或臨時表空間組
通過default temporary tablespace字句指定
2)修改用戶的臨時表空間或臨時表空間組
alter user scott temporary tablespace temp_group;
6、設(shè)置系統(tǒng)默認(rèn)臨時表空間
系統(tǒng)默認(rèn)表空間是給沒有指定臨時表空間的用戶使用的负饲。
SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_group;
7堤魁、臨時表空間查詢
1)DBA_TABLESPACES
視圖中CONTENTS字段的取值為TEMPORARY則表示是臨時表空間
2)V$TEMP_SPACE_HEADER
查看每個臨時表空間中使用的空間和空閑空間情況
3)DBA_TEMP_FREE_SPAC
查看每個臨時表空間中每個空閑空間情況,以分析磁盤碎片情況
(二)撤銷表空間
https://blog.csdn.net/yangshangwei/article/details/53181076
https://www.cnblogs.com/lijiaman/p/7617351.html
1返十、撤銷表空間概念(回滾表空間)
undo段組成妥泉,用來保存舊數(shù)據(jù)(undo數(shù)據(jù)),保持?jǐn)?shù)據(jù)一致性洞坑。
新的數(shù)據(jù)存放在緩沖區(qū)對應(yīng)的數(shù)據(jù)塊中盲链。
修改數(shù)據(jù)行,先從文件中把這條數(shù)據(jù)讀入內(nèi)存迟杂,然后將新的數(shù)據(jù)放入數(shù)據(jù)段中匈仗,原來的舊數(shù)據(jù)放入undo段。
2逢慌、撤銷表空間作用
1)事物回退
從undo段中將舊數(shù)據(jù)拿出來替換數(shù)據(jù)段中的新數(shù)據(jù)。
2)事物恢復(fù)
從undo段拿新的數(shù)據(jù)(事務(wù)已提交间狂,但DBWr尚未寫入)替換數(shù)據(jù)表中的舊數(shù)據(jù)攻泼。
如:一條用戶數(shù)據(jù),其中工資800,事務(wù)1將800修改為2000忙菠,
用戶commit提交何鸡,此時800存入undo段,2000寫在數(shù)據(jù)段中牛欢;
事務(wù)1提交了骡男。
此時,事務(wù)2啟動了傍睹,將2000修改4000隔盛,2000放入undo段、4000放入數(shù)據(jù)段拾稳;
此時突然斷電吮炕,所以事務(wù)2還沒提交,DBWR沒有啟動寫入數(shù)據(jù)文件访得,日志文件不記錄龙亲;
通電之后,數(shù)據(jù)段中的4000變成舊的800悍抑,首先要將事務(wù)2回退(因?yàn)槭聞?wù)2沒有提交)鳄炉,
撤銷過程是:先從undo段拿新數(shù)據(jù)2000(相對于800是新的)
拿出2000來替換數(shù)據(jù)表中的舊800
關(guān)鍵在于通電之后,數(shù)據(jù)段中的4000變成了800(因?yàn)槭聞?wù)2還沒提交)
例如:事務(wù)1將emp表7733雇員的sal由800改成2000搜骡,并完成提交拂盯。
事務(wù)2將7733雇員的sal由2000再次修改為4000,在未提交的時候浆兰,系統(tǒng)斷電了磕仅。
數(shù)據(jù)庫再次打開時,應(yīng)該將事務(wù)1恢復(fù)(重做)簸呈,將事務(wù)2回退(撤銷)榕订。
此時,事務(wù)1的恢復(fù)就需要使用到撤銷段蜕便。
3)讀一致性
Oracle默認(rèn)總是使得用戶只能看到被提交過的數(shù)據(jù)(讀取提交的)劫恒。
如果Oracle服務(wù)器在執(zhí)行SELECT查詢,發(fā)現(xiàn)某數(shù)據(jù)行有未提交的數(shù)據(jù)更改轿腺,
Oracle 服務(wù)器會從撤銷段檢索這些更改的舊值两嘴,并顯示該舊值。
4)閃回查詢
閃回查詢用于撤銷段中取得特定時間點(diǎn)的數(shù)據(jù)庫數(shù)據(jù)族壳。
3憔辫、撤銷表空間創(chuàng)建與管理
1)創(chuàng)建命令類似于用戶表空間
不能在撤銷表空間上創(chuàng)建任何數(shù)據(jù)對象(因?yàn)橄到y(tǒng)自動創(chuàng)建管理)
創(chuàng)建時不能使用default storage子句
2)創(chuàng)建一個本地管理的撤銷表空間undotbs1。
SQL>CREATE UNDO TABLESPACE undotbs1
DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\undotbs01.dbf' SIZE 20M;
3)使用 ALTER TABLESPACE 修改撤銷表空間
ADD/DROP DATAFILE:增加/刪除數(shù)據(jù)文件仿荆。
RESIZE:調(diào)整數(shù)據(jù)文件大小贰您。
調(diào)整數(shù)據(jù)文件自動增長設(shè)置坏平。
4)使用DROP TABLESPACE刪除撤銷表空間
只有撤銷表空間沒有被數(shù)據(jù)庫使用時才可以刪除。
如果撤銷表空間中包含有任何未完成的事務(wù)信息锦亦,則不能刪除表空間舶替。
不被使用的撤銷表空間可能還有舊的事務(wù)未完成。
4杠园、撤銷表使用模式
1)undo_management
① 設(shè)置為auto
Oracle會自動在該表空間上建立撤銷段顾瞪,以供事務(wù)操作自動使用。
但是如果沒有撤銷表空間可用抛蚁,則Oracle會使用SYSTEM撤銷段存放撤銷記錄陈醒,并在ALTER文件中記載警告。
② 設(shè)置manual
手工管理撤銷段的創(chuàng)建篮绿、分配孵延、調(diào)整。這是Oracle9i之前的唯一方法亲配。
5尘应、使用撤銷表空間
1)UNDO_TABLESPACE參數(shù)
該參數(shù)用于設(shè)置系統(tǒng)使用的撤銷表空間。
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOtbs1;
如果不設(shè)置該參數(shù)吼虎,Oracle默認(rèn)自動選擇第一個可用的撤銷表空間存放撤銷數(shù)據(jù)犬钢。
2)UNDO_RETENTION參數(shù)
該參數(shù)用于指定保留撤銷數(shù)據(jù)的時間,以便提供讀一致性思灰,默認(rèn)值為900s玷犹。
6、查看撤銷表空間信息
1)查詢撤銷表空間信息
DBA_TABLESPACES視圖:CONTENTS值為ROLLBACK表示是撤銷表空間洒疚。
DBA_ROLLBACK_SEGS視圖:獲取有關(guān)撤銷段的信息
DBA_SEGMENTS視圖:字段SEGMENT_TYPE的值為ROLLBACK時表示該段是撤銷段歹颓。
2)監(jiān)控撤銷表空間
動態(tài)性能視圖V$UNDOSTAT:取得撤銷空間的統(tǒng)計(jì)信息。
視圖中的每一行保留的是每隔10分鐘就在例程中收集一次的統(tǒng)計(jì)數(shù)據(jù)油湖。
可以使用此視圖估算當(dāng)前工作所需的還原空間量巍扛,進(jìn)而調(diào)整撤銷表空間的大小提供依據(jù)。
(三)表空間管理策略
1乏德、將數(shù)據(jù)字典與用戶數(shù)據(jù)分離撤奸,避免由于數(shù)據(jù)字典對象和用戶對象保存在一個數(shù)據(jù)文件中而產(chǎn)生I/O沖突。
不要使用系統(tǒng)表空間存儲用戶數(shù)據(jù)喊括,用戶數(shù)據(jù)要放在用戶表空間胧瓜,不然IO沖突。
2郑什、將回滾數(shù)據(jù)與用戶數(shù)據(jù)分離府喳,避免由于硬盤損壞而導(dǎo)致永久性的數(shù)據(jù)丟失。
管理方式使用auto蘑拯,用一個專門的撤銷表空間使用劫拢,不然磁盤壞了肉津,數(shù)據(jù)文件丟了,回滾數(shù)據(jù)也丟了舱沧,則數(shù)據(jù)可能永久丟失。
3偶洋、由于對數(shù)據(jù)庫的操作最終轉(zhuǎn)換為對數(shù)據(jù)文件的操作熟吏,將表空間的數(shù)據(jù)文件分散保存到不同的硬盤上,可以并行訪問數(shù)據(jù)玄窝,提升I/O效率牵寺。
4、為不同的應(yīng)用創(chuàng)建獨(dú)立的表空間恩脂,避免多個應(yīng)用之間的相互干擾帽氓。
5、合理劃分表空間俩块,以便通過表空間對數(shù)據(jù)庫的一部分進(jìn)行備份或恢復(fù)黎休。
6、能夠?qū)⒈砜臻g設(shè)置為只讀狀態(tài)玉凯,從而將數(shù)據(jù)庫的一部分設(shè)置為只讀狀態(tài)势腮。
將有些重要的表空間設(shè)置為只讀狀態(tài)
7、專門創(chuàng)建臨時表空間漫仆,以優(yōu)化表空間的使用效率捎拯。
8、靈活設(shè)置配額盲厌。(權(quán)限是虛的署照,配額是實(shí)的)
9、其他物理文件最好不要與數(shù)據(jù)文件存放在同一個磁盤上吗浩,以免數(shù)據(jù)發(fā)送介質(zhì)故障建芙。
小結(jié):
臨時表空間
為臨時數(shù)據(jù)提供空間,建議使用臨時表空間組拓萌。
撤銷表空間
為事務(wù)提供存儲空間岁钓,保證數(shù)據(jù)庫一致性。自動管理微王,合理設(shè)置存儲時間屡限。
表空間管理策略
分類管理、分散存儲炕倘。
第四課 重做日志文件及歸檔
目標(biāo)
最重要的物理文件是重做日志文件
保證數(shù)據(jù)庫安全和文件備份钧大,可以將破潰的數(shù)據(jù)庫恢復(fù)到最近的狀態(tài)
(一)重做日志文件基本概念
1、保存了用戶對數(shù)據(jù)庫所做的更新操作(DDL和DML)
主要記錄事務(wù)的開始和結(jié)束罩旋、實(shí)務(wù)中每項(xiàng)操作的對象和類型啊央、更新前后的數(shù)值
2眶诈、數(shù)據(jù)修改將會寫入數(shù)據(jù)高速緩沖區(qū),但在此之前瓜饥,
服務(wù)進(jìn)程會先將這個產(chǎn)生的修改記錄寫入重做日志緩沖區(qū)逝撬。
在一定條件下(如檢查點(diǎn)的發(fā)生),DBWR將數(shù)據(jù)高速緩沖區(qū)修改后的結(jié)果成批寫入數(shù)據(jù)文件中乓土,
此時會啟動LGWR進(jìn)程將重做日志緩沖區(qū)中的重做記錄寫入重做日志文件宪潮。
3、利用重做日志文件恢復(fù)數(shù)據(jù)庫是通過 事務(wù)的重做(Redo)或 回退(Undo)實(shí)現(xiàn)的
1)重做:提交事務(wù)之后趣苏,重做日志將這個操作登記狡相,但DBWR還沒將數(shù)據(jù)寫入數(shù)據(jù)文件之前,如果發(fā)生故障食磕,就會通過重做日志文件中記錄的事務(wù)修改進(jìn)行重做尽棕。
如,你執(zhí)行了一個更新操作彬伦,將100改為200滔悉,此時重做日志文件登記這個操作、登記舊值100和新值200(已經(jīng)提交)媚朦,但是DBWR還沒有將200記錄寫入數(shù)據(jù)文件氧敢,此時出現(xiàn)故障,等到重新啟動后询张,數(shù)據(jù)庫將這個操作自動重新來一遍孙乖,然后你會發(fā)現(xiàn)數(shù)據(jù)是200。
2)回退:DBWR將數(shù)據(jù)寫入數(shù)據(jù)文件的過程中份氧,LGWR已經(jīng)將記錄寫入重做日志唯袄,但是數(shù)據(jù)文件并沒有全部完成寫入,所以就要進(jìn)行回退到數(shù)據(jù)高速緩沖區(qū)修改之前的結(jié)果蜗帜。
未提交事務(wù)的數(shù)據(jù)是否會進(jìn)入重做日志文件的實(shí)驗(yàn)
http://www.itpub.net/thread-2060680-1-1.html
例子:如恋拷,你執(zhí)行了一個更新操作,將100改為200厅缺,此時重做日志文件登記這個操作蔬顾、登記舊值100和新值200,但是沒有提交這個事務(wù)湘捎,此時出現(xiàn)故障诀豁,等到重新啟動后,數(shù)據(jù)庫將這個操作撤回窥妇,然后你會發(fā)現(xiàn)數(shù)據(jù)依舊是100舷胜。
4、工作原理:
最少有兩個重做日志文件(組)活翩,采用循環(huán)寫入烹骨。
日志緩沖區(qū)寫入達(dá)到1/3時翻伺,會啟動LGWR將日志緩沖區(qū)的數(shù)據(jù)寫入重做日志文件,
當(dāng)一個重做日志文件寫滿后沮焕,進(jìn)程LGWR就會移到下一個日志吨岭,稱為日志切換,
日志序列號會自動增1峦树,同時信息會寫到控制文件中未妹。
5、為了保證LGWR進(jìn)程的正常進(jìn)行空入,通常采用重做日志文件組(GROUP),
每個組中包含若干完全相同的重做日志文件成員(MEMBER)族檬,這些成員文件相互鏡像歪赢,放于不同磁盤。
6单料、重做日志文件的寫入順序埋凯,按照序號從小到大的順序?qū)懭耄骋唤M重做日志文件寫完后開始下一組扫尖。
當(dāng)前正在被LGWR進(jìn)程寫入日志記錄的重做日志文件稱為聯(lián)機(jī)重做日志文件白对。
1)Current狀態(tài):正在被LGWR進(jìn)程寫入的重做日志文件的狀態(tài)
2)Active狀態(tài):正在被數(shù)據(jù)庫實(shí)例用于數(shù)據(jù)庫恢復(fù)的重做日志文件的狀態(tài)
3)Inactive狀態(tài):其他未被使用的重做日志文件狀態(tài)
4)Unused狀態(tài):重做日志文件組是新的或者被格式化
(二)查詢重做日志文件信息
1、數(shù)據(jù)字典視圖
V$LOG
:包含從控制文件中獲取的所有重做日志文件組的基本信息换怖。
V$LOGFILE
:包含重做日志文件組及其成員文件的信息甩恼。
V$LOG_HISTORY
:包含關(guān)于重做日志文件的歷史信息。
2沉颂、查詢重做日志文件組的信息
SELECT GROUP#,SEQUENCE#,MEMBERS,STATUS,
ARCHIVED FROM V$LOG;
3条摸、查詢重做日志文件的信息
SQL>SELECT GROUP#,TYPE,MEMBER
FROM V$LOGFILE ORDER BY GROUP#;
(三)創(chuàng)建重做日志文件組及其成員
1、創(chuàng)建重做日志文件組
可以使用ALTER DATABASE ADD LOGFILE GROUP
語句為數(shù)據(jù)庫創(chuàng)建重做日志文件組铸屉。
一個數(shù)據(jù)庫中可以包含的重做日志文件組的最大數(shù)量是由控制文件中的MAXLOGFILES
參數(shù)決定的钉蒲。
為當(dāng)前數(shù)據(jù)庫創(chuàng)建一個包括兩個成員文件的重做日志文件組。
SQL>ALTER **DATABASE** ADD LOGFILE GROUP 4
('D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO04a.LOG',
D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO04b.LOG')
SIZE 10M;
重做日志文件組里面的成員是一模一樣的彻坛,不論是內(nèi)容還是大小顷啼。
2、創(chuàng)建重做日志文件成員
可以使用ALTER DATABASE ADD LOGFILE MEMBER…TO GROUP語句為數(shù)據(jù)庫重做日志文件組添加成員文件昌屉。
一個重做日志文件組中可以擁有的最多成員文件數(shù)量是由控制文件中的MAXLOGMEMBERS參數(shù)決定的钙蒙。
為數(shù)據(jù)庫的重做日志文件組1、2怠益、3分別創(chuàng)建一個成員文件仪搔。
ALTER DATABASE ADD LOGFILE MEMBER
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01B.LOG' TO GROUP 1,
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02B.LOG' TO GROUP 2,
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03B.LOG' TO GROUP 3;
(四)重做日志文件切換
1、當(dāng)LGWR進(jìn)程結(jié)束對當(dāng)前重做日志文件組的使用蜻牢,
開始寫入下一個重做日志文件組時烤咧,稱為發(fā)生了一次“日志切換”汛聚。
只有當(dāng)前的重做日志文件組寫滿后才發(fā)生日志切換,
但是可以通過設(shè)置參數(shù)ARCHIVE_LAG_TARGET
控制日志切換的時間間隔琢感,
在必要時也可以采用手工強(qiáng)制進(jìn)行日志切換碗暗。
2、如果需要將當(dāng)前處于 CURRENT 狀態(tài)的重做日志組立即切換到 INACTIVE 狀態(tài)昌阿,
必須進(jìn)行手工日志切換饥脑。
手動日志切換的語法
ALTER SYSTEM SWITCH LOGFILE 文件名
3、查看日志切換狀態(tài)
SELECT * FROM V$LOGFILE;
當(dāng)發(fā)生日志切換時懦冰,系統(tǒng)將為新的重做日志文件產(chǎn)生一個日志序列號灶轰,在歸檔時該日志序列號一同被保存。
日志序列號是在線日志文件和歸檔日志文件的唯一標(biāo)識刷钢。
(五)修改重做日志文件的名稱或位置
若重做日志文件不處于inactive狀態(tài)笋颤,就需要進(jìn)行日志切換(切換后變成inactive)才可以修改名稱或位置。
也就是只有inactive狀態(tài)下的重做日志文件才可以進(jìn)行重命名和移動内地。
A:讓重做日志文件處于inactive狀態(tài)伴澄,在操作系統(tǒng)中進(jìn)行重命名或移動到指定位置。
B:執(zhí)行ALTER DATABASE RENAME FILE 文件名1 TO 文件名2
修改數(shù)據(jù)庫的控制文件與數(shù)據(jù)字典中相應(yīng)重做日志文件信息阱缓。(邏輯上的修改)
(六)刪除重做日志文件組及其成員
1非凌、刪除重做日志文件成員
刪除的重做日志文件必須處于inactive狀態(tài),且至少還有一個可用的重做日志文件荆针。
然后使用
alter database drop logfile member 重做日志文件名
例子:
刪除第4個重做日志文件組中的成員文件REDO04B.LOG敞嗡。
ALTER DATABASE DROP LOGFILE MEMBER
'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO04B.LOG;
2、刪除重做日志文件組
數(shù)據(jù)庫中至少需要保留兩個重做日志文件組祭犯,
且要刪除的重做日志文件組必須處于INACTIVE狀態(tài)秸妥。
ALTER DATABASE DROP LOGFILE group
刪除第4個重做日志文件組。
SQL>ALTER DATABASE DROP LOGFILE GROUP 4;
(七)歸檔模式下的重做日志文件
1沃粗、重做日志文件歸檔的概念
重做日志文件歸檔是指將寫滿了的重做日志文件保存到一個或多個指定的離線位置粥惧,
這些被保存的歷史重做日志文件的集合稱為歸檔重做日志文件。
根據(jù)是否對重做日志文件進(jìn)行歸檔最盅,數(shù)據(jù)庫運(yùn)行模式分為歸檔模式與非歸檔模式兩種突雪。
2、數(shù)據(jù)庫歸檔模式的設(shè)置
可以先查看數(shù)據(jù)庫的模式
select log_mode from v$database;
1)關(guān)閉數(shù)據(jù)庫
SQL>SHUTDOWN IMMEDIATE
2)設(shè)置歸檔目的地 (單獨(dú)再第3講)
3)將數(shù)據(jù)庫啟動到加載mount狀態(tài)(此時可以讀取日志信息)
SQL>STARTUP MOUNT
4)改變數(shù)據(jù)庫歸檔模式
SQL>ALTER DATABASE ARCHIVELOG;(從非歸檔變成歸檔)
SQL>ALTER DATABASE NOARCHIVELOG;(從歸檔變成非歸檔)
5)打開數(shù)據(jù)庫
SQL>ALTER DATABASE OPEN;
3涡贱、指定歸檔目標(biāo)(設(shè)置歸檔目的地)
1)設(shè)置初始化參數(shù)
LOG_ARCHIVE_DEST
(主要目的地)
LOG_ARCHIVE_DUPLEX_DEST
(輔助目的地)
使用初始化參數(shù)LOG_ARCHIVE_DEST
和LOG_ARCHIVE_DUPLEX_DEST
只能設(shè)置兩個本地的歸檔目標(biāo)咏删,
一個主歸檔目標(biāo)和一個輔助歸檔目標(biāo)。(注意是System中)
SQL>ALTER SYSTEM
SET LOG_ARCHIVE_DEST='D:\BACKUP \ARCHIVE';
SQL>ALTER SYSTEM
SET LOG_ARCHIVE_DUPLEX_DEST='E:\BACKUP\ARCHIVE';
2)設(shè)置初始化參數(shù)LOG_ARCHIVE_DEST_n
(表示初始化文件數(shù)量)
初始化參數(shù)LOG_ARCHIVE_DEST_n
最多可以設(shè)置31個歸檔目標(biāo)问词,即n取值范圍為1-31督函。
其中1-10可以用于指定本地的或遠(yuǎn)程的歸檔目標(biāo),
11-31只能用于指定遠(yuǎn)程的歸檔目標(biāo)。
設(shè)置初始化參數(shù)LOG_ARCHIVE_DEST_n時辰狡,
需要使用關(guān)鍵字LOCATION或SERVICE指明歸檔目標(biāo)是本地的還是遠(yuǎn)程的锋叨。
可以使用關(guān)鍵字OPTIONAL(默認(rèn))或MANDATORY指定
是可選歸檔目標(biāo)還是強(qiáng)制歸檔目標(biāo)。
強(qiáng)制歸檔目標(biāo)的歸檔必須成功進(jìn)行宛篇,否則數(shù)據(jù)庫將掛起娃磺。
SQL>ALTER SYSTEM
SET LOG_ARCHIVE_DEST_1='LOCATION=D:\BACKUP\ARCHIVE MANDATORY';
SQL>ALTER SYSTEM
SET LOG_ARCHIVE_DEST_2='LOCATION=E:\BACKUP\ARCHIVE MANDATORY';
SQL>ALTER SYSTEM
SET LOG_ARCHIVE_DEST_5='SERVICE=STANDBY1';(網(wǎng)絡(luò)服務(wù)名)
4、進(jìn)行手工歸檔
1)當(dāng)日志操作模式轉(zhuǎn)變?yōu)?strong>ARCHIVELOG模式時叫倍,Oracle會自動啟動ARCH進(jìn)程偷卧。
2)若數(shù)據(jù)庫處于非歸檔模式,可以進(jìn)行手工歸檔
使用手工歸檔的命令語句如下:
ALTER SYSTEM ARCHIVELOG ALL吆倦;
5听诸、查詢歸檔信息
1)可以通過查詢數(shù)據(jù)字典視圖V$DATABASE
、V$ARCHIVED_LOG
蚕泽、V$ARCHIVE_DEST
蛇更、V$ARCHIVE_PROCESSES
等獲取重做日志文件歸檔的信息。
SQL> SELECT SEQUENCE#,FIRST_CHANGE#,
NEXT_CHANGE# FROM V$ARCHIVED_LOG
;
SQL>SELECT DEST_NAME,STATUS,BINDING,
TARGET,LOG_SEQUENCE FROM V$ARCHIVE_DEST
;
2)查看歸檔目標(biāo)參數(shù)名
Select dest_name from V$archive_dest;
3)顯示當(dāng)前歸檔信息
Show user赛糟;
Archive log list;(以中文顯示砸逊,方便快捷)
第五課 日志案例及控制文件
本次課目標(biāo)
這里只講控制文件璧南。
1、控制文件的概念
1) 控制文件是一個很小的二進(jìn)制文件师逸。
2) 控制文件描述了整個數(shù)據(jù)庫的結(jié)構(gòu)司倚。(數(shù)據(jù)庫結(jié)構(gòu)是指物理存儲文件的結(jié)構(gòu))
3) 在加載mount數(shù)據(jù)庫時,實(shí)例必須首先通過初始化參數(shù)control_files
文件找到數(shù)據(jù)庫的控制文件篓像。(找到之后打開控制文件动知,獲取整個數(shù)據(jù)庫的物理存儲結(jié)構(gòu),但不進(jìn)行打開员辩,只適合對物理存儲結(jié)構(gòu)進(jìn)行管理盒粮。如添加文件、刪除文件奠滑、添加重做日志文件丹皱、修改文件、備份等等)
4) 每個數(shù)據(jù)庫至少擁有一個控制文件宋税。一個數(shù)據(jù)庫也可以同時擁有多個控制文件摊崭。
5) 可以通過control_files查看數(shù)據(jù)庫有多少各控制文件。
show parameters control_files;
2杰赛、控制文件管理策略
1)創(chuàng)建多個控制文件(默認(rèn)2個)呢簸,且分配在不同的物理硬盤中,以免數(shù)據(jù)庫或硬盤損壞時,避免控制文件丟失后無法打開數(shù)據(jù)庫根时。
2)做好備份瘦赫,當(dāng)全部控制文件丟失時可以利用備份的控制文件啟動數(shù)據(jù)庫實(shí)例,可以提高數(shù)據(jù)庫的可靠性啸箫。
3)制作并更新創(chuàng)建控制文件的腳本耸彪,以備最后時刻使用。
4)修改了 Oracle 數(shù)據(jù)庫的物理結(jié)構(gòu)(物理文件發(fā)生改變)后忘苛,最好對控制文件進(jìn)行一次備份蝉娜。
3、控制文件的內(nèi)容
1)數(shù)據(jù)庫名稱和標(biāo)識扎唾;√√
2)數(shù)據(jù)庫創(chuàng)建的時間召川;
3)表空間名稱;
4)數(shù)據(jù)文件和重做日志文件的名稱和位置胸遇;√√
5)當(dāng)前重做日志文件序列號荧呐;√
6)數(shù)據(jù)庫檢查點(diǎn)的信息;√
7)回退段的開始和結(jié)束纸镊;√
8)重做日志的歸檔信息倍阐;√
9)RMAN備份信息;√
10)數(shù)據(jù)庫恢復(fù)所需要的同步信息逗威。
4峰搪、最大化參數(shù):
◆MAXDATAFILES
:用于指定控制文件可記載的最大數(shù)據(jù)文件個數(shù)。
◆MAXLOGFILES
:用于指定數(shù)據(jù)庫中重做日志組的最大個數(shù)凯旭。
◆MAXLOGMEMBERS
:用于指定每個日志組的最大日志成員個數(shù)概耻。
◆MAXLOGHISTORY
:用于指定控制文件可記載日志歷史(歸檔信息)的最大個數(shù)。
◆MAXINSTANCES
:用于指定可以同時訪問數(shù)據(jù)庫的最大實(shí)例個數(shù)罐呼。
5鞠柄、創(chuàng)建控制文件
CREATE CONTROLFILE [REUSE]
[SET] DATABASE 數(shù)據(jù)庫名稱
[LOGFILE logfile_clause]
RESETLOGS|NORESETLOGS //是否重新寫日志
[DATAFILE file_specification] //所有數(shù)據(jù)文件信息
[MAXLOGFILES]
[MAXLOGMEMBERS]
[MAXLOGHISTORY]
[MAXDATAFILES]
[MAXINSTANCES]
[ARCHIVELOG|NOARCHIVELOG]
[FORCE LOGGING]
[CHARACTER SET character_set
控制文件是Oracle數(shù)據(jù)庫中非常重要的物理文件。除非沒有任何辦法恢復(fù)控制文件嫉柴,否則厌杜,一般不建議手工創(chuàng)建控制文件。
(1)創(chuàng)建控制文件的基本步驟
1)數(shù)據(jù)庫中所有的數(shù)據(jù)文件和重做日志文件列表
SQL>SELECT MEMBER FROM V$LOGFILE;
SQL>SELECT NAME FROM V$DATAFILE
;
SQL>SELECT VALUE FROM V$PARAMETER
WHERE NAME = 'CONTROL_FILES';
2)如果數(shù)據(jù)庫仍然處于運(yùn)行狀態(tài)计螺,則關(guān)閉數(shù)據(jù)庫
SQL>SHUTDOWN IMMEDIATE
3)在操作系統(tǒng)級別備份所有的數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件(即手工復(fù)制粘貼)
4)啟動實(shí)例到NOMOUNT狀態(tài)
SQL>STARTUP NOMOUNT
5)利用前面得到的文件列表或備份出來的信息期奔,執(zhí)行CREATE CONTROLFILE創(chuàng)建一個新控制文件。
6)在操作系統(tǒng)級別對新建的控制文件進(jìn)行備份
7)有必要(如修改名稱或者路徑)就修改初始化參數(shù)CONTROL_FILE
8)如果數(shù)據(jù)庫需要恢復(fù)危尿,則進(jìn)行恢復(fù)數(shù)據(jù)庫操作
(2)打開數(shù)據(jù)庫
如果數(shù)據(jù)庫不需要恢復(fù)或已經(jīng)對數(shù)據(jù)庫進(jìn)行了完全恢復(fù)呐萌,則可以正常打開數(shù)據(jù)庫。
SQL>ALTER DATABASE OPEN;
如果在創(chuàng)建控制文件時使用了RESETLOGS參數(shù)谊娇,則必須以RESETLOGS方式打開數(shù)據(jù)庫肺孤。
SQL>ALTER DATABASE OPEN RESETLOGS;
6罗晕、添加多路復(fù)用控制文件
(1)控制文件一旦丟失或損壞,就會導(dǎo)致整個數(shù)據(jù)庫不可用赠堵。保證控制文件的可用性小渊,對Oracle數(shù)據(jù)庫來說是至關(guān)重要的。
(2)多路復(fù)用控制文件是保護(hù)控制文件的最好方法茫叭。
(3)每個數(shù)據(jù)庫至少包含兩個控制文件酬屉,最多不超過8個。
(4)在設(shè)計(jì)數(shù)據(jù)庫時揍愁,盡可能將控制文件分布到不同的磁盤上呐萨,以避免磁盤損壞導(dǎo)致所有控制文件丟失。
(5)控制文件多路復(fù)用步驟
1)編輯初始化參數(shù)文件中的CONTROL_FILES參數(shù)莽囤,將新添加的控制文件的名稱添加到控制文件列表中谬擦。
2)關(guān)閉數(shù)據(jù)庫。
3)使用操作系統(tǒng)命令拷貝一個控制文件的副本到新的位置朽缎,并重新命名惨远;或者改變控制文件的名稱或位置。
4)重新啟動數(shù)據(jù)庫话肖。
1)編輯初始化參數(shù)CONTROL_FILES北秽。
SQL>ALTER SYSTEM SET CONTROL_FILES= 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL‘,
'D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL‘,
'C:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL03.CTL'
SCOPE=SPFILE;(參數(shù)的修改不在內(nèi)存中立即生效,下次啟動時再生效)
若scope=memory(放在內(nèi)存里面最筒,當(dāng)前實(shí)例馬上生效羡儿,但在下次啟動失效)
若scpoe=both(spfile+memory)
2)關(guān)閉數(shù)據(jù)庫
SQL>SHUTDOWN IMMEDIATE;
3)拷貝一個原有的控制文件到新的位置,并重新命名是钥。
SQL>HOST COPY D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL C:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL03.CTL
4)重新啟動數(shù)據(jù)庫
SQL>STARTUP
7、備份控制文件
(1)將控制文件備份為二進(jìn)制文件
ALTER DATABASE BACKUP CONTROLFILE TO 路徑及文件
(2)將控制文件備份為文本文件
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
默認(rèn)將控制文件備份到<ORACLE_BASE>\diag\rdbms<Oracle_sid><Oracle_sid>\trace目錄下的跟蹤文件中
將控制文件備份為二進(jìn)制文件缅叠。
SQL>ALTER DATABASE BACKUP CONTROLFILE
TO 'D:\ORACLE\CONTROL.BKP';
將控制文件備份為文本文件悄泥。
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
8、刪除控制文件
(1)編輯CONTROL_FILES初始化參數(shù)肤粱,使其不包含要刪除的控制文件弹囚;
(2)關(guān)閉數(shù)據(jù)庫;
(3)在操作系統(tǒng)中刪除控制文件领曼;
(4)重新啟動數(shù)據(jù)庫鸥鹉。
9、查詢控制文件信息
(1)V$DATABASE
從控制文件中獲取的數(shù)據(jù)庫信息庶骄;
(2)V$CONTROLFILE
包含所有控制文件名稱與狀態(tài)信息毁渗;
(3)V$CONTROLFILE_RECORD_SECTION
包含控制文件中各記錄文檔段信息;
(4)V$PARAMETER
可以獲取初始化參數(shù)CONTROL_FILES的值单刁。
控制文件中記錄的視圖除了上面的之外灸异,主要有