oracle 數(shù)據(jù)文件表空間日志文件控制文件數(shù)據(jù)庫管理_第1頁
oracle 數(shù)據(jù)文件表空間日志文件控制文件數(shù)據(jù)庫管理_第2頁
oracle 數(shù)據(jù)文件表空間日志文件控制文件數(shù)據(jù)庫管理_第3頁
oracle 數(shù)據(jù)文件表空間日志文件控制文件數(shù)據(jù)庫管理_第4頁
oracle 數(shù)據(jù)文件表空間日志文件控制文件數(shù)據(jù)庫管理_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

實驗四oracle數(shù)據(jù)庫管理

一、試驗目的

掌握對數(shù)據(jù)文件、表空間、日志文件、控制文件的常用命令,作為DBA的必要準備。

二、實驗內(nèi)容

2.1數(shù)據(jù)文件的管理

(1)在安裝完畢之后,在INITsid.ORA參數(shù)文件有一個DB.FILES參數(shù),用于設置

當前實例的數(shù)據(jù)外文件的個數(shù)。如:

db_files=80

如果在INITsidQRA文件沒有該參數(shù),則可以用下面查詢語句從視圖中查到。如:

SQL>colnamefora20

SQL>colvaluefora50

SQL>setlin100

SQL>selectname,valuefromv$parameterwherename='db_files';

NAMEVALUE

dbfiles1024

(2)行命令建立表空間:

例1CREATETABLESPACEuser_stu

DATAFILE'h:/oracle/oradata/orcl/user_stu.dat'SIZE20M

DEFAULTSTORAGE

(INITIAL10K

NEXT50K

MINEXTENTS1

MAXEXTENTS99

PCTINCREASE10)

ONLINE;

例2:建立一個新的表空間,具有兩個數(shù)據(jù)文件:

CREATETABLESPACECRMTAB

DATAFILE'h:/oracle/oradata/orcl/crm01.dbfsize10

MB,'h:/oracle/oradata/orcl/crm02.dbfsize10MB;

(3)對一個已存在的表空間追加新數(shù)據(jù)文件:

例1ALTERTABLESPACEuser_stu

Adddatafile'H:/oracle/oradata/orcl/user_stu01.dbfsize30M;

例2為表空間增加數(shù)據(jù)文件

ALTERTABLESPACEusers

ADDDATAFILE'useroral.dbf'SIZE10M;

(4)數(shù)據(jù)文件更名

ALTERTABLESPACEusers

RENAMEDATAFILE?'filenamel','filename2,

TO'filenames','filename4';

(5)變更數(shù)據(jù)文件大小

在創(chuàng)建表空間時,可以將表空間說明為自動擴展或固定大小。因而管理員的一項工作

就是查看系統(tǒng)所有的表空間對應的數(shù)據(jù)文件情況??词欠駷樽詣訑U展。如:

SQL>coltablespace_namefora12

SQL>colfile_namefora48

SQL>selecttablespace_name,file_name,AUTOEXTENSIBLE,bytesfrom

dba_data_files

(6)數(shù)據(jù)文件的自動擴展與調(diào)整。重新調(diào)整數(shù)據(jù)文件大小的命令如下:

ALTERDATABASEDATAFILE[datafile_name]RESIZE[new_size];

當我們發(fā)現(xiàn)數(shù)據(jù)文件過大而不可能用完時,可以用上面命令將數(shù)據(jù)文件調(diào)小。

對于設置數(shù)據(jù)文件的自動擴展問題,可用下面命令來達到:

ALTERDATABASEDATAFILE[file_spec]

AUTOEXTENDONNEXT[increment_size]MAXSIZE[max_size,UNLIMITED];

如:

ALTERDATABASEDATAFILE'H:\ORACLE\ORADATA\ORCL\USER_STU01.DBF'

AUTOEXTENDONNEXT10mMAXSIZE60M;

(7)行命令修改表空間:

ALTERTABLESPACEUSER_STU

ONLINE;

(8)ALTERTABLESPACEaccounting

OFFLINENORMAL;

(9)行命令刪除表空間:

DROPTABLESPACE表空間名

INCLUDINGCONTENTS

CASCADECONSTRAINTS

(10)、與數(shù)據(jù)文件有關的視圖

selectfile_namefromdba_data_files;

select*fromv$datafile;

DBA_DATA_FILES

DBA.EXTENTS

DBA_FREE_SPACE

V$DATAFILE

V$DATAFILE_HEADER

(11)、為了保證表空間的可用,除了掌握表空間的創(chuàng)建外,還應該查看dba_free_space

中表空間的信息,以確保系統(tǒng)正常運行。一般管理員應該關心的內(nèi)容有:表空間共有多少

個;總共有多少自由空間;最大的自由空間是什么;下面例子是一個經(jīng)常使用的腳本,可

以查出數(shù)據(jù)文件和表空間的可用情況。

clearbuffer

clearcolumns

clearbreaks

columnalheading'Tablespace'formatal5

columna2heading'dataFile'formata45

columna3heading'Total|Space'format999,999.99

columna4heading'Free|Space'format999,999.99

columna5heading'Free|perc'format999,999.99

breakonalonreport

computesumofa3onal

computesumofa4onal

computesumofa3onreport

computesumofa4onreport

setlinesize120

selecta.tablespace_nameal,a.file_namea2,a.availa3,nvl(b.free,0)a4,

nvl(round({(free/avail)*100),2),0)a5

from(selecttablespace_name,substr(file_name,l,45)file_name,

filejd,round(sum(bytes/(1024*1024)),3)avail

fromsys.dba_data_files

groupbytablespace_name,substr(file_name,l,45),

file_id)a,

(selecttablespace_name,filejd,

round(sum(bytes/(1024*1024)),3)free

fromsys.dba_free_space

groupbytablespace_name,filejd)b

wherea.file」d=b.filejd(+)

orderby1,2;

(12)查詢是否存在表的擴展超出表空間可用大小

一般在系統(tǒng)使用較長時間后,表空間的連續(xù)塊被多次的修改與刪除等操作后出現(xiàn)了許

多的不連續(xù)的塊(叫碎片X這樣就有可能出現(xiàn)表的擴展所需要的連續(xù)塊不能滿足的情況。

為了避免這樣的情況發(fā)生而導致擴展失敗,管理員要經(jīng)常查詢系統(tǒng)的表空間情況。下面就

是這樣的一個腳本:

Colsegment_namefora20

Selectsegment_name,segment_type,owner,a.tablespace_nametablespace,

Initial_extent,next_extent,pct_increase,b.bytesmax_bytes

Fromdba_segmentsa,

(selecttablespace_name,max(bytes)bytesfromdba_free_space

groupbytablespace_name)b

wherea.tablespace_name=b.tablespace_nameandnext_extent>b.bytes;

(13)查詢表空間自由、最大及碎片

其實,平常管理最關系就是表空間的總量、最大字節(jié)、使用多少、碎片多少等。下面

腳本可以查詢出所有表空間的自由空間、總空間數(shù)、已用空間、自由百分比及最大塊的字

節(jié)數(shù)。

setpauoff

colfreeheading'Free(Mb)'format99999.9

coltotalheading'Total(Mb),format999999.9

colusedheading'Used(Mb)'format99999.9

colpct_freeheading'Pct|Free'format99999.9

collargestheading'Largest(Mb)'format99999.9

computesumoftotalonreport

computesumoffreeonreport

computesumofusedonreport

breakonreport

selectsubstr(a.tablespace_name,l,13)tablespace,

round(sum(a.totall)/1024/1024,1)Total,

round(sum(a.totall)/1024/1024,l)-round(sum(a.suml)/1024/1024,1)used,

round(sum(a.suml)/1024/1024,1)free,

round(sum(a.suml)/1024/1024,l)*100/round(sum(a.totall)/1024/1024,1)

pct_free,

round(sum(a.maxb)/1024/1024,1)largest,

max(t)fragment

from

(selecttablespace_name,0totall,sum(bytes)suml,

max(bytes)MAXB,

count(bytes)ent

fromdba_free_space

groupbytablespace_name

union

selecttablespace_name,sum(bytes)totall,0,0,0fromdba_data_files

groupbytablespace_name)a

groupbya.tablespace_name

2.2日志文件的管理

(0)日志查詢

selectgroup#,bytesfromv$log;?

selectgroup#,bytesfromv$logfile;

(1)實現(xiàn)強行的日志切換

Altersystemswitchlogfile;

(2)檢測點(checkpoint)

Oracle為了在出現(xiàn)故障后能退回去重演原來的信息,就需要一個叫開始點。在這個開

始點時刻,數(shù)據(jù)和事務是已知的。這樣的開始點就叫檢測點。

在Oracle里,只要檢查點一到(出現(xiàn)\Oracle就強行將當前的SGA中的redo區(qū)的

改動過的塊寫入重做日志文件中。這個步驟完成后,在重做日志文件中放入一個特殊的檢

測點標志記錄。如果在下一個檢測點完成前出現(xiàn)失敗,恢復操作進程就會在日志文件和數(shù)

據(jù)文件前一個檢測點同步(改回去\檢測點檢查完成后,對數(shù)據(jù)塊的任何改動都記錄在其

檢測點標志后寫入重做日志項中。因此,恢復也就只能從最近的檢測點標志記錄開始。

Oracle在INITsid.ORA文件中給出LOG_CHECKPOINT」NTERVAL參數(shù)可以設置檢

測點的數(shù)目。比如日志文件大小為1000塊,而設置檢查點間隔

LOG_CHECKPOINT_INTERVAL為250,則文件寫達到1/4、2/4、3/4及4/4時產(chǎn)生檢測

點(250塊、500塊、750塊和1000塊處)。

可用下面命令來查日志文件大?。?/p>

SQL>selectgroup#,bytesfromv$log;

showparameterlog_checkpoint_interval

(3)添加日志組

建立一個新組4,組內(nèi)有兩個成員

ALTERDATABASEADDLOGFILE

GROUP4('H:/oracle/oradata/orcl/redo0401.log',

'H:/oracle/oradata/orcl/redo0402.1og')size10m;

===當添加一個日志組時,可以不給出組號,有系統(tǒng)自動分配一個組號===

ALTERDATABASEADDLOGFILE

('HVoracle/oradata/orcl/redoOSOl.log',

'H:/oracle/oradata/orcl/redo0502.log')size10m;

此時添加的組號為5

(4)為日志組增加成員

ALTERDATABASE

ADDLOGFILEMEMBER'Iog22.log'TOGROUP2;

===添加成員時,可以不給定成員的大小,因為oracle要求組內(nèi)的所有成員的大小一

律相等。

(5嵐]果將一個日志成員從一個硬盤移到另一個硬盤,就需要重新命名日志成員名字。

需要進行下面步驟:

1.關閉數(shù)據(jù)庫,并進行完全備份;

2.使用操作系統(tǒng)命令拷貝原來的日志文件到新的地方;

3.用startupmount啟動數(shù)據(jù)庫;

4.用ALTERDATABASERENAMEFILE'<old_redo_file_name>'TO

'<new_redo_file_name>';

5.用ALTERDATABASEOPEN打開數(shù)據(jù)庫;

6.備份控制文件。

為文件更名

ALTERDATABASE

RENAMEFILE'filenamel','filename2'

TO'filenames','filename4';

(6)日志刪除

a.刪除日志組成員:

在下面情況下可能需要刪除重做日志文件,如日志文件個數(shù)太多(超出需要);日志文

件的大小不一致等。這樣的情況可以刪除日志組成員。

b.當日志組損壞時,就刪除日志組,但必須滿足:

a)刪除一個日志組后,系統(tǒng)中至少還有兩個其它的日志組;

b)被刪除的日志組必須是不需要存檔;

c)不是正在使用的日志組。

刪除日志文件的語法:

ALTERDATABASEdatabase_name

DROPLOGFILE

GROUPgroup_number|file_name|(file_name,file_name(,...))

刪除日志成員的語法:

ALTERDATABASEdatabasename

DROPLOGFILEMEMBERfilename;

c.聯(lián)機重做日志的緊急替換:

當一個重做日志組偶而被損壞使數(shù)據(jù)庫不能繼續(xù)使用時,不能直接刪除它們,而是要

用一個干凈的文件或一組成員去替代這個損壞的日志組。聯(lián)機重做日志的緊急替換命令語

法如下:

ALTERDATABASEdatabase_name

CLEAR[UNARCHIVED]LOGFILEgroupjdentifier

[UNRECOVERABLEDATAFILE]

如果該文件正在等待存檔(歸檔模式),就需要UNARCHIVED。

如果需要脫機恢復一個數(shù)據(jù)文件,就用

UNRECOVERABLEDATAFILEO

d.了解重做日志的當前狀態(tài):

V$LOGFILE

V$LOG

V$THREAD

V$LOG_HISTORY

e.例子:

刪除一個組3:

ALTERDATABASEDROPLOGFILEGROUP3;

刪除一個成員:

ALTERDATABASEDROP?LOGFILEMEMBER

7orant/oradata'mydb02'redo02.log';

4.了解重做日志的當前狀態(tài)的視圖主要有:

V$LOGFILE

V$LOG

V$THREAD

V$LOG_HISTORY

5例子:

察看是否歸檔

ARCHIVE?LOG?LIST

日志歸檔

alterdatabasenoarchivelog;

3、控制文件的管理

(1)關于控制文件

控制文件存放有數(shù)據(jù)庫的結構信息,包括數(shù)據(jù)文件、日志文件??刂莆募且粋€二進

制文件,它是在數(shù)據(jù)庫建立時自動被建立??刂莆募梢栽诋斈愀淖兾募蛞苿游募r

而被更新。在任何時候,你都不能編輯控制文件。

控制文件的內(nèi)容包括:

1數(shù)據(jù)庫名字(控制文件只能屬于一個數(shù)據(jù)庫X

2數(shù)據(jù)庫建立時的郵戳。

3數(shù)據(jù)文件-名字,位置及聯(lián)機/脫機。

4重做日志文件-名字及位置。

5表空間名字。

6當前日志序列號。

7最近檢查點信息。

8恢復管理器信息(RMANx

(2)控制文件信息

在spfile.ora的配置文件中有:

control_files=("/home/oracle/app/oracle/oradata/s450/control01.ctl",

"/home/oracle/app/oracle/oradata/s450/control02.ctl",

7home/oracle/app/oracle/oradata/s450/control03.ctl")

(3)查詢控制文件的信息

showparameters;

select*fromv$controlfile;

descV$CONTROLFILE_RECORD_SECTION

v$datafile

db_data_files

v$logfile

v$log

v$controlfile

showparametercontrol_files

其中,

RECORD_SIZENUMBER記錄字節(jié)大小

RECORDS_TOTALNUMBERE殳的記錄數(shù)

RECORDS_USEDNUMBER段中已使用的記錄數(shù)

FIRSTJNDEXNUMBER第一個記錄索引位置

LAST」NDEXNUMBER最后一個記錄索引位置

LAST_RECIDNUMBER最后一個記錄ID號

select*fromV$CONTROLFILE_RECORD_SECTION;

7.6.4控制文件信息的更改

需要在spfile.ora中做出相應的更改。

建立控制文件的步驟

1.建立控制文件準備。

必須有數(shù)據(jù)文件(查DBA_DATA_FILES數(shù)據(jù)字典)、日志文件(查V$LOGFILE數(shù)據(jù)字

典)的詳細列表。下面是創(chuàng)建控制文件的命令:

CREATECONTROLFILESETDATABASE"ORACLE"

NORESETLOGSNOARACHIVELOG

MAXLOGFILES32

MAXLOGMEMBERS2

MAXDATAFILES32

MAXINSTANCES1

MAXLOGHISTORY1630

LOGFILE

GROUP1'C:\ORACLE\DATABASE\LOG1ORCLLOG'SIZE200K,

GROUP2'C:\ORACLE\DATABASE\LOG2ORCLLOG'SIZE200K,

DATAFILE

'C:\ORACLE\DATABASE\SYS1ORCL.ORA',

'C:\ORACLE\DATABASE\USER1ORCLORA',

'C:\ORACLE\DATABASE\RBS1ORCLORA,,

'C:\ORACLE\DATABASE\TMP1ORCLORA',

'C:\ORACLE\DATABASE\APPDATA1.ORA',

'C:\ORACL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論