oracle 数据文件表空间日志文件控制文件数据库管理_第1页
oracle 数据文件表空间日志文件控制文件数据库管理_第2页
oracle 数据文件表空间日志文件控制文件数据库管理_第3页
oracle 数据文件表空间日志文件控制文件数据库管理_第4页
oracle 数据文件表空间日志文件控制文件数据库管理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验四oracle数据库管理

一、试验目的

掌握对数据文件、表空间、日志文件、控制文件的常用命令,作为DBA的必要准备。

二、实验内容

2.1数据文件的管理

(1)在安装完毕之后,在INITsid.ORA参数文件有一个DB.FILES参数,用于设置

当前实例的数据外文件的个数。如:

db_files=80

如果在INITsidQRA文件没有该参数,则可以用下面查询语句从视图中查到。如:

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:建立一个新的表空间,具有两个数据文件:

CREATETABLESPACECRMTAB

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

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

(3)对一个已存在的表空间追加新数据文件:

例1ALTERTABLESPACEuser_stu

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

例2为表空间增加数据文件

ALTERTABLESPACEusers

ADDDATAFILE'useroral.dbf'SIZE10M;

(4)数据文件更名

ALTERTABLESPACEusers

RENAMEDATAFILE?'filenamel','filename2,

TO'filenames','filename4';

(5)变更数据文件大小

在创建表空间时,可以将表空间说明为自动扩展或固定大小。因而管理员的一项工作

就是查看系统所有的表空间对应的数据文件情况。看是否为自动扩展。如:

SQL>coltablespace_namefora12

SQL>colfile_namefora48

SQL>selecttablespace_name,file_name,AUTOEXTENSIBLE,bytesfrom

dba_data_files

(6)数据文件的自动扩展与调整。重新调整数据文件大小的命令如下:

ALTERDATABASEDATAFILE[datafile_name]RESIZE[new_size];

当我们发现数据文件过大而不可能用完时,可以用上面命令将数据文件调小。

对于设置数据文件的自动扩展问题,可用下面命令来达到:

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)、与数据文件有关的视图

selectfile_namefromdba_data_files;

select*fromv$datafile;

DBA_DATA_FILES

DBA.EXTENTS

DBA_FREE_SPACE

V$DATAFILE

V$DATAFILE_HEADER

(11)、为了保证表空间的可用,除了掌握表空间的创建外,还应该查看dba_free_space

中表空间的信息,以确保系统正常运行。一般管理员应该关心的内容有:表空间共有多少

个;总共有多少自由空间;最大的自由空间是什么;下面例子是一个经常使用的脚本,可

以查出数据文件和表空间的可用情况。

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)查询是否存在表的扩展超出表空间可用大小

一般在系统使用较长时间后,表空间的连续块被多次的修改与删除等操作后出现了许

多的不连续的块(叫碎片X这样就有可能出现表的扩展所需要的连续块不能满足的情况。

为了避免这样的情况发生而导致扩展失败,管理员要经常查询系统的表空间情况。下面就

是这样的一个脚本:

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)查询表空间自由、最大及碎片

其实,平常管理最关系就是表空间的总量、最大字节、使用多少、碎片多少等。下面

脚本可以查询出所有表空间的自由空间、总空间数、已用空间、自由百分比及最大块的字

节数。

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)实现强行的日志切换

Altersystemswitchlogfile;

(2)检测点(checkpoint)

Oracle为了在出现故障后能退回去重演原来的信息,就需要一个叫开始点。在这个开

始点时刻,数据和事务是已知的。这样的开始点就叫检测点。

在Oracle里,只要检查点一到(出现\Oracle就强行将当前的SGA中的redo区的

改动过的块写入重做日志文件中。这个步骤完成后,在重做日志文件中放入一个特殊的检

测点标志记录。如果在下一个检测点完成前出现失败,恢复操作进程就会在日志文件和数

据文件前一个检测点同步(改回去\检测点检查完成后,对数据块的任何改动都记录在其

检测点标志后写入重做日志项中。因此,恢复也就只能从最近的检测点标志记录开始。

Oracle在INITsid.ORA文件中给出LOG_CHECKPOINT」NTERVAL参数可以设置检

测点的数目。比如日志文件大小为1000块,而设置检查点间隔

LOG_CHECKPOINT_INTERVAL为250,则文件写达到1/4、2/4、3/4及4/4时产生检测

点(250块、500块、750块和1000块处)。

可用下面命令来查日志文件大小:

SQL>selectgroup#,bytesfromv$log;

showparameterlog_checkpoint_interval

(3)添加日志组

建立一个新组4,组内有两个成员

ALTERDATABASEADDLOGFILE

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

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

===当添加一个日志组时,可以不给出组号,有系统自动分配一个组号===

ALTERDATABASEADDLOGFILE

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

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

此时添加的组号为5

(4)为日志组增加成员

ALTERDATABASE

ADDLOGFILEMEMBER'Iog22.log'TOGROUP2;

===添加成员时,可以不给定成员的大小,因为oracle要求组内的所有成员的大小一

律相等。

(5岚]果将一个日志成员从一个硬盘移到另一个硬盘,就需要重新命名日志成员名字。

需要进行下面步骤:

1.关闭数据库,并进行完全备份;

2.使用操作系统命令拷贝原来的日志文件到新的地方;

3.用startupmount启动数据库;

4.用ALTERDATABASERENAMEFILE'<old_redo_file_name>'TO

'<new_redo_file_name>';

5.用ALTERDATABASEOPEN打开数据库;

6.备份控制文件。

为文件更名

ALTERDATABASE

RENAMEFILE'filenamel','filename2'

TO'filenames','filename4';

(6)日志删除

a.删除日志组成员:

在下面情况下可能需要删除重做日志文件,如日志文件个数太多(超出需要);日志文

件的大小不一致等。这样的情况可以删除日志组成员。

b.当日志组损坏时,就删除日志组,但必须满足:

a)删除一个日志组后,系统中至少还有两个其它的日志组;

b)被删除的日志组必须是不需要存档;

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

删除日志文件的语法:

ALTERDATABASEdatabase_name

DROPLOGFILE

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

删除日志成员的语法:

ALTERDATABASEdatabasename

DROPLOGFILEMEMBERfilename;

c.联机重做日志的紧急替换:

当一个重做日志组偶而被损坏使数据库不能继续使用时,不能直接删除它们,而是要

用一个干净的文件或一组成员去替代这个损坏的日志组。联机重做日志的紧急替换命令语

法如下:

ALTERDATABASEdatabase_name

CLEAR[UNARCHIVED]LOGFILEgroupjdentifier

[UNRECOVERABLEDATAFILE]

如果该文件正在等待存档(归档模式),就需要UNARCHIVED。

如果需要脱机恢复一个数据文件,就用

UNRECOVERABLEDATAFILEO

d.了解重做日志的当前状态:

V$LOGFILE

V$LOG

V$THREAD

V$LOG_HISTORY

e.例子:

删除一个组3:

ALTERDATABASEDROPLOGFILEGROUP3;

删除一个成员:

ALTERDATABASEDROP?LOGFILEMEMBER

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

4.了解重做日志的当前状态的视图主要有:

V$LOGFILE

V$LOG

V$THREAD

V$LOG_HISTORY

5例子:

察看是否归档

ARCHIVE?LOG?LIST

日志归档

alterdatabasenoarchivelog;

3、控制文件的管理

(1)关于控制文件

控制文件存放有数据库的结构信息,包括数据文件、日志文件。控制文件是一个二进

制文件,它是在数据库建立时自动被建立。控制文件可以在当你改变文件名或移动文件时

而被更新。在任何时候,你都不能编辑控制文件。

控制文件的内容包括:

1数据库名字(控制文件只能属于一个数据库X

2数据库建立时的邮戳。

3数据文件-名字,位置及联机/脱机。

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记录字节大小

RECORDS_TOTALNUMBERE殳的记录数

RECORDS_USEDNUMBER段中已使用的记录数

FIRSTJNDEXNUMBER第一个记录索引位置

LAST」NDEXNUMBER最后一个记录索引位置

LAST_RECIDNUMBER最后一个记录ID号

select*fromV$CONTROLFILE_RECORD_SECTION;

7.6.4控制文件信息的更改

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

建立控制文件的步骤

1.建立控制文件准备。

必须有数据文件(查DBA_DATA_FILES数据字典)、日志文件(查V$LOGFILE数据字

典)的详细列表。下面是创建控制文件的命令:

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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论