導覽
近期變更
隨機頁面
新手上路
新頁面
優質條目評選
繁體
不转换
简体
繁體
3.139.239.157
登入
工具
閱讀
檢視原始碼
特殊頁面
頁面資訊
求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。
檢視 物理结构 的原始碼
←
物理结构
前往:
導覽
、
搜尋
由於下列原因,您沒有權限進行 編輯此頁面 的動作:
您請求的操作只有這個群組的使用者能使用:
用戶
您可以檢視並複製此頁面的原始碼。
{| class="wikitable" align="right" |- | style="background: #FF2400" align= center| '''<big>物理结构</big>''' |- |<center><img src=https://img14.360buyimg.com/pop/jfs/t1/127365/31/33614/41680/63c8be4fFd0a49d6e/ea4937cac2837096.jpg width="300"></center> <small>[https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E7%89%A9%E7%90%86%E7%BB%93%E6%9E%84&step_word=&hs=0&pn=99&spn=0&di=58720257&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=2425833415%2C458665624&os=2685752587%2C1941555648&simid=2425833415%2C458665624&adpicid=0&lpn=0&ln=1413&fr=&fmq=1675982986642_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined©right=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=14&oriquery=&objurl=https%3A%2F%2Fimg14.360buyimg.com%2Fpop%2Fjfs%2Ft1%2F127365%2F31%2F33614%2F41680%2F63c8be4fFd0a49d6e%2Fea4937cac2837096.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Ftpj4_z%26e3B4_z%26e3B31_z%26e3Bv54AzdH3Fr6517vpAzdH3F8aam0ll9ccnm09_z%26e3Bip4s%3Fv7%3Dp67j%267p4_f576vj%3Dkwt17-37ij%267p4_4j1t74%3Dh5g2%267p4_vw4rwt2g%3Dp_8aaa8c8dna_37ij&gsm=5a&rpstart=0&rpnum=0&islist=&querylist=&nojc=undefined&dyTabStr=MCw0LDMsNiwxLDUsMiw3LDgsOQ%3D%3D 来自 呢图网 的图片]</small> |- | style="background: #FF2400" align= center| '''<big></big>''' |- | align= light| 中文名称;物理结构 又称;物理存储结构 含义;数据元素的表示和关系的表示 |} 数据结构在计算机中的表示(映像)称为数据的'''物理(存储)结构'''。它包括数据元素的表示和关系的[[表示]]。 物理结构,即oracle数据库使用的操作系统文件结构。对于数据库物理结构[[文件]],不同的oracle版本,不同的操作[[系统]]平台上有不同的存储目录结构。<ref>[https://www.cnblogs.com/sdau20171778/p/9566653.html 什么是逻辑结构以及物理结构- ORZ!!! ] , 博客园,发表时间:2018年8月31日 </ref> ==释义== 数据结构在计算机中的表示(映像) ==分类== 数据库的物理结构[[文件]]按其作用可以分为三类: 数据文件 日志文件 控制文件 ==重做日志文件== 重做日志文件记录对数据库的所有修改信息。它是三类文件中最复杂的一类文件,也是保证数据库安全与数据库备份与恢复有直接关系的文件。 日志文件组与日志成员 在每一个oracle数据库中,至少有两个重做日志文件组。每组有一个个或多个重做日志文件,即日志成员。同一组中的成员是镜像关系,它们存储的内容是一模一样的。oracle在写日志时,以一个日志组为逻辑单位写入,只在将日志都写入日志组中的每个成员文件中后,写日志才[[完成]]。 日志工作原理 oracle有多个日志文件组,当一个日志文件组中所有的成员所有的成员同时被写满数据时,系统自动转换到下一个日志文件组,这个转换过程称为日志切换。 当日志切换后,会给前一个日志组编一个号,用于归档日志的编号,这个编号称为日志序列号。此编号由1开始,每切换一次,序列号自动加1,最大值受参数MAXLOGHISTORY限制,该参数的最大值为65534。 当oracle把最后一个日志组写满了以后,自动转向第一个日志组,这时,再向第一个日志组写日志的时候,[[如果]]数据库运行在非归档模式下,这个日志组中的原有日志信息就会被覆盖。 使用以下语句查询日志文件信息: sql>select * from v$log 相关字段说明如下: GROUP#:日志文件组号 THREAD#:日志文件线程号,一般为1,双机容时为2 SEQUENCE#:日志序列号 BYTES:日志文件大小 MEMBERS:该组的日志成员个数 ARC:该组日志信息是否已经完成归档 STATUS:该组状态(CURRENT:表示当前正在使用的组;NACTIVE:表示非[[活动]]组;ACTIVE:表示归档未完成) FIRST_CHANGE#:系统改变号SCN,也叫检查点号 FIRST_TIME:系统改变时间 DBA可以使用下列命令进行强制日志[[切换]] sql>alter system switch logfile NOARCHIVELOG/ARCHIVELOG NOARCHIVELOG是非归档模式,如果数据库运行在这种模式下,当日志切换时,新切换到的日志组中的日志[[信息]]会被覆盖。ARCHIVELOG:归档模式,如果数据库运行在这种模式下,日志会被归档存储,产生归档日志,且在未归档之前,日志不允许被覆盖写入。 要确认数据库的归档方式,可以查询数据字典v$database: sql>select log_mode from v$database 要了解归档日志的信息,可以查询数据字典v$archived_log。 要将数据库改为归档模式: a.alter database archivelog b.设置初始化参数LOG_ARCHIVE_START=TRUE c.设置归档文件目标存储路径 LOG_ARCHIVE_DEST=C:\ORA\ARCHIVE d.设置归档文件命名格式[[参数]] LOG_ARCHIVE_FORMAT="ORCK%T%S.ARC"。这个格式中的%S表示日志序列号,自动左边补零;%s表示日志序列号,自动左边不补零;%T表示日志线程号,左边补零;%t表示日志线程号不补零。 e.重新启动数据库 CKPT进程 CKPT进程保证有修改过的数据库缓冲区中的数据都被写入到数据[[文件]],日志文件、数据文件、数据库头和控制文件中都有写入检查点标记。数据库在恢复时,只需提供自上一个检查以来所做的修改。检查点完成时系统将更新数据库数据库头和控制文件。 参数LOG_CHECKPOINT_TIMEOUT决定一个检查点发生的时间间隔。LOG_CHECKPOINT_INTERVAL决定一个检查需要填充的日志文件块的数量。检查点号,也称系统改变号(SCN),它标识一个检查点。可以通过v$log查询日志文件的检查点信息,通过v$datafile查询数据文件的检查点信息,通过v$database查询数据库头的检查点信息。三个地方的检查点号[[相同]],如果不同,说明发明数据库不同步,此时数据库肯定无法正常启动。 增加与删除日志文件组、日志成员 (详细语法请参考oracle文档) alter database [database] add logfile [group integer] filespec[,[group... alter database [database] add logfile (...) alter database [database] drop logfile [grout integer] alter database [database] add logfile member "filespec" [reuse] to group integer alter database [database] drop logfile member "filename","filename"... alter database [database] rename file "filename" to "filename" 清除日志文件数据 alter database [database] clear [unarchived] logfile group integer|filespec ==控制文件== 控制文件是一个二进制文件,用来描述数据库的[[物理结构]],一个数据库只需要一个控制文件,控制文件的内容包括: 数据库名及数据库唯一标识 数据文件和日志文件标识 数据库恢复所需的同步信息,即检查点号 控制文件由参数control_files指定,格式如下: control_files=("home/app/.../control01.ctl","home/app/.../control02.ctl") 参数中各个文件是镜像关系,也就是说,几个文件中只要有一个文件完好,数据库就可以正常运行。 以下语句查询控制文件的信息: sql>select * from v$controlfile 如果控制文件损坏或丢失,数据库将终止并且无法[[启动]],所以,要对控制文件进行镜象,手工镜像步骤如下: a.关闭数据库 b.复制控制文件 c.修改参数文件,加入新增的控制文件[[位置]]描述 d.重新启动数据库 另外注意,控制文件中还包含几个服务器参数的设置,如果修改这些参数的值,刚需要重新创建控制[[文件]],这些参数是: MAXLOGFILES:最大日志文件个数 MAXLOGMEMBERS:最大日志成员个数 MAXLOGHISTORY:最大历史日志个数 MAXDATAFILES:最大数据文件个数 MAXINSTANCES:最大实例文件个数 所有修改数据库结构的命令都会引起控制文件的[[改变]]。同时出会记录在oracle跟踪文件中,跟踪文件的名称为alter_SID.log,路径如下: d:\oracle\product\10.1.0\admin\DB_NAME\bdump\SIDALRT.log(unix是alter_SID.ora) 也可以在参数文件中指定跟踪文件的存储路径,后台进程跟踪文件目录由参数background_dump_dest指定,用户跟踪文件位置由参数user_bdump_dest指定,如: background_bdump_dest=/u01/app/oracle/oralog/bdump user_bdump_dest=/u01/app//oralog/udump ==数据文件== 数据文件用来存储数据库的数据,如表、索引等。读取数据时,系统首先从数据库文件中读取[[数据]],并存储到SGA的数据缓冲区中。这是为了减少I/O,如果读取数据时,缓冲区中已经有要读取的数据,就不需要再从磁盘中读取了。存储数据时也是一样,事务提交时改变的数据先存储到内存缓冲区中,再由oracle后台进程DBWR决定如何将其写入到数据文件中。 查询数据文件的信息 sql>select * from dba_data_files或 sql>select * from v$datafile(此数据字典包含文件的动态信息) 一个数据文件只与一个数据库相联系。数据文件的大小是可以改变的。可以通过以下语句查询表[[空间]]的空间空闲量 sql>select * from dba_free_space 修改数据文件的大小 sql>alter database datafile "d:\...\df1.dbf" resize 800m 数据库文件的自动扩展特性 请看下面的例子: sql>alter tablespace tbs1 add datafile "d:\...\df2.dbf" size 500m autoextend on next 50m maxsize 1000m sql>alter database mydb1 datafile "d:\...\df2.dbf","d:\...\df3.dbf" autoexetend off sql>alter database mydb1 datafile "d:\...\df2.dbf","d:\...\df3.dbf" autoexetend on next 30m maxsize unlimited == 相关视频 == <center> {{#iDisplay:z01869ehi0y|480|270|qq}} <center>文件的物理结构</center> </center> == 参考资料 == [[Category: 330 物理學總論]]
返回「
物理结构
」頁面