Oracle控制文件、数据文件、临时文件总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.控制文件(Control Files)
1.控制文件的作用
控制文件在Oracle数据库中扮演着很重要的角色,没有控制文件(或者控制文件损坏了),运行着的实例立即崩溃,关闭着的死活打不开,你以为你是谁,可以说,控制文件一旦损坏,数据库必然down了。Oracle 数据库实例启动过程中,当启动到unmount时,此时只是在内存中为Oracle实例分配了实例空间,然后如果继续要启动到mount状态,这个时候控制文件就闪亮登场了,因为Oracle要依据控制文件找到数据文件跟重做日志文件的路径,确定找到了再进去mount状态,至于打开数据库就是确定这些文件都一致,没有问题的话就能打开了。
2.控制文件包括了哪些重要内容
控制文件包括了很多重要的信息,比如数据库的数据文件、重做日志文件、数据库的名称、数据库创建信息、表空间信息、数据文件的状态、日志文件信息、备份信息、检查点信息等
3.控制文件的性质
控制文件是一个2进制文件,不可以直接通过文本编辑器进行编写,这个文件由Oracle自己进行维护,Oracle建议控制文件至少有两份冗余,并且放在不同的磁盘中,这样能够避免一个磁盘的损坏,造成整个控制
文件都丢失的情况,因为他还有一个兄弟健在,尽管一个坏了,数据库还是得down,但是有一个在的话,至少我恢复起来要快不少。
4.查看控制文件
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ -----------
------------------------------
control_files string /opt/oracle/ oradata/orcl/control01.ctl,
/opt/oracle/oradata/orcl/control02.ctl,
/opt/o racle/oradata/orcl/control03.ctl
也可以通过 v$controlfile
SQL> desc v$controlfile;
Name Type Nullable Default Comments --------------------- ------------- -------- ------- -------- STATUS VARCHAR2(7) Y NAME VARCHAR2(513) Y
IS_RECOVERY_DEST_FILE VARCHAR2(3) Y BLOCK_SIZE NUMBER Y FILE_SIZE_BLKS NUMBER Y
SQL> col name for a30
SQL> select * from v$controlfile;
STATUS NAME IS_RECOVERY_DEST_FILE BLOCK_SIZE FILE_SIZE_BLKS
------- ------------------------------ --------------------- ---------- --------------
/opt/oracle/oradata/orcl/contr
NO 16384 49 2
ol01.ctl
/opt/oracle/oradata/orcl/contr
NO 16384 49 2
ol02.ctl
/opt/oracle/oradata/orcl/contr
NO 16384 49 2
ol03.ctl 默认控制文件的块大小为16K
二.数据文件(Data Files)
1.数据文件的作用
数据文件当然是用来存储实际数据的啦,数据文件是存储数据的物理概念,我们还有一个更大的逻辑概念,叫做表空间,表空间跟数据文件又是一个什么样的关系呢?简单的说就是一个表空间至少包含可一个数据文件,创建数据库对象的时候指定的是使用的表空间,所以就不难理解为什么一个对象(比如一张大表)可以跨越多个数据文件了。
2.数据文件的状态
表空间可以置为offline、online、readonly、readwrite,数据文件也可以置为offline、online,不过这也是有限制的,比如你不可以把system表空间offline,你当然也不能把system表空间的数据文件
offline,如果连system表空间的数据文件都不工作了,那大家都可以一边玩去了。
3.查看数据文件的信息
SQL> col name for a30
SQL> select file#,name,status from v$datafile;
FILE# NAME STATUS
---------- ------------------------------ -------
1 /opt/oracle/oradata/orcl/syste SYSTEM
m01.dbf
2 /opt/oracle/oradata/orcl/gdyx0 ONLINE
3.dbf
3 /opt/oracle/oradata/orcl/sysau ONLINE
x01.dbf
4 /opt/oracle/oradata/orcl/users ONLINE
01.dbf
5 /opt/oracle/oradata/orcl/gdyx. ONLINE
dbf
6 /data1/dbf/gdyx05.dbf ONLINE
7 /opt/oracle/oradata/orcl/gdyx2 ONLINE
.dbf
8 /data1/dbf/UNDOTBS2.DBF ONLINE
9 /data1/dbf/gdyx04.dbf ONLINE
10 /data1/dbf/undotbs01_01.dbf ONLINE
11 /data1/dbf/system02.dbf SYSTEM
12 /data1/dbf/SYSAUX02.dbf ONLINE
12 rows selected
4.修改数据文件的状态
两种方式:
比如我现在要把上面查到的用红色标记了的数据文件offline
SQL>alter database datafile '/data1/dbf/gdyx05.dbf' offline;
这里实际我就没试了,肯定可以,因为我是在备份库上做的测试,尽管是备份库,那也是公司的东西,要是出问题了,屌丝担当不起
(O(∩_∩)O~)