续 http://nvd11.blog.163.com/blog/static/20001831220127710369356/
五、数据文件
数据文件是数据库中最重要的一个要求,是所有的数据库内容存放的地方
datafile是按照表空间为组织单位,表空间的构成是按照段区块为层次---数据文件的逻辑结构
datafile就是表空间的物理文件。
datafile中的内容是通过dbwr把data buffer cache中的dirty buffer data写入的
dbwr触发:
ckpt触发,dirty buffer到一定量的时候,data buffer caceh的内存空间快用完了
查询空闲内存空间超时,表空间offline/read only,表的drop, truncate开始执备份表空间的时候*/
--查看数据文件
SQL> select file# ,name,status,enabled,bytes/1024/1024 M from v$datafile;
FILE# NAMESTATUSENABLEDM
---------- -------------------------------------------------- ------- ---------- ----------
1 /u01/app/oracle/oradata/orcl/system01.dbfSYSTEMREAD WRITE490
2 /u01/app/oracle/oradata/orcl/undotbs01.dbfONLINEREAD WRITE30
3 /u01/app/oracle/oradata/orcl/sysaux01.dbfONLINEREAD WRITE250
4 /u01/app/oracle/oradata/orcl/users01.dbfONLINEREAD WRITE5
5 /u01/app/oracle/oradata/orcl/example01.dbfONLINEREAD WRITE100
6 /u01/app/oracle/oradata/orcl/tbs1_1.dbfONLINEREAD WRITE100
7 /u01/app/oracle/oradata/orcl/tbs1_2.dbfONLINEREAD WRITE60
SQL> select tablespace_name,file_name,user_bytes/1024/1024 M from dba_data_files;
TABLESPACE_NAMEFILE_NAMEM
------------------------------ ------------------------------------------------------- ----------
USERS01/u01/app/oracle/oradata/orcl/users01.dbf4.9375
SYSAUX/u01/app/oracle/oradata/orcl/sysaux01.dbf249.9375
UNDOTBS1/u01/app/oracle/oradata/orcl/undotbs01.dbf29.9375
SYSTEM/u01/app/oracle/oradata/orcl/system01.dbf489.9375
EXAMPLE/u01/app/oracle/oradata/orcl/example01.dbf99.9375
TBS1/u01/app/oracle/oradata/orcl/tbs1_1.dbf99.9375
TBS1/u01/app/oracle/oradata/orcl/tbs1_2.dbf59.9375
--数据文件的增加与删除
--为TBS1增加一个数据文件
SQL> alter tablespace tbs1 add datafile '/u01/app/oracle/oradata/orcl/tbs1_3.dbf' size 10m autoextend on;
--还有一种创建表空间时不指定大小,而是重用一个存在的dbf要用resue参数,reuse是把原有的结构拿来用,里面的数据是用不了的,因为早都没有了。
--删表空间中的数据文件,g以后的版本才用以下功能,在之前版本的就只能把表空间给干掉。
SQL> alter tablespace tbs1 drop datafile '/u01/app/oracle/oradata/orcl/tbs1_3.dbf';
--有数据的数据文件不能删。第一个不能删,如果要删就把表空间干掉,数据文件中有数据写入的文件也不能删除,如下
SQL> alter tablespace tbs1 drop datafile 7;--7是v$datafile中的file#.
alter tablespace tbs1 drop datafile 7
*
ERROR at line 1:
ORA-03262: the file is non-empty
/*
数据文件的日志记录
只有temp表空间是nologing别的都是logging的
日志记录的几种模式
nologin并不是不记录日志而是记录的很少
logging正常记录日志信息
force logging记录的日志比logging还详细记录信息非常多用于DG data guard容灾的情况*/
SQL> select tablespace_name ,logging,force_logging from dba_tablespaces;
TABLESPACE_NAMELOGGINGFOR
------------------------------ --------- ---
SYSTEMLOGGINGNO
UNDOTBS1LOGGINGNO
SYSAUXLOGGINGNO
TEMPNOLOGGING NO
USERS01LOGGINGNO
EXAMPLENOLOGGING NO
TBS1LOGGINGNO
--修改表空间中日志文件记录的方式
SQL> alter tablespace tablespace_name nologging | logging | force logging;
SQL> alter tablespace example logging;
Tablespace altered.
SQL> alter tablespace tbs1 force logging;
Tablespace altered.
SQL> select tablespace_name ,logging,force_logging from dba_tablespaces;
TABLESPACE_NAMELOGGINGFOR
------------------------------ --------- ---
SYSTEMLOGGINGNO
UNDOTBS1LOGGINGNO
SYSAUXLOGGINGNO
TEMPNOLOGGING NO
USERS01LOGGINGNO
EXAMPLELOGGINGNO
TBS1LOGGINGYES
/*