Datafile(.bdf):数据文件是一个二进制文件,是用于保存用户应用程序数据和 Oracle 系统内部数据的文件,这些文件在操作系统中就是普通的操作系统文件。Oracle 在创建表空间的同时会创建数据文件。
Controlfile(.ctl):控制文件是一个二进制文件,它主要记录数据库的名称、数据库的数据文件存放位置等信息。一个控制文件只能属于一个数据库。如果控制文件丢失,这数据库就无法操作。
Logfile(.log):日志文件在 Oracle 数据库中分为重做日志(Redo Log File)文件和归档日志文件两种。重做日志文件用于数据库的实例恢复,而归档重做日志用于数据库的介质恢复。重做日志文件是 Oracle 数据库正常运行不可缺少的文件。重做日志文件主要记录了数据库操作过程。用于备份和还原数据库,以达到数据库的最新状态。
查询重做日志文件组的SQL命令为:
select group#, sequence#, members, bytes, status, archived from v$log;
各列含义如下:
group:redo log组号
sequence:数据库产生的,每个redo log都有唯一的序列编号,以供将来进行数据库恢复使用
members:redo log中日志成员文件数量
bytes:文件大小
status:redo log状态有以下几种:
(1)inactive:表示实例恢复已不再需要这组redo log了;(redo log在这个状态下才可以删除)
(2)active: 表示这组联机redo log是活动的但不是当前组,在实例恢复时需要这组联机redo log,如这组redo log正在归档;
(3)current: 表示这组联机redo log是当前组,并也隐含该联机redo log是活动的;
(4)unused: 表示Oracle服务器从来没有写过该组联机redo log,这是redo log刚被添加到数据库中状态。
添加重做日志文件组的SQL命令为(会按顺序添加组号,若缺失则创建缺失的组号):
alter database add logfile (路径+文件名) size _M;
查询重组日志成员文件的SQL命令为(视图获取数据库中每一个redo log的每个成员、所在的目录、文件名以及他们的状态信息等查询输出):
select GROUP#, STATUS, TYPE, MEMBER from v$logfile;
v$logfile视图中的redo log的status有以下几种:
空白:表示该文件正在使用。
stale:表示该文件中的内容是不完全的。
invalid:表示该文件不可以被访问。
deleted:表示该文件已不再有用了。
添加重组日志文件组:redo log大小为100M
查询是否添加组成功,多了第4组重做日志文件组,其中只有一个redo logfile。
刚刚建好的第4组redo log中,再加入一个redo logfile(成员)
SQL>alter database add logfile member ‘/u01/app/oracle/lcm/redo04a.log’ to group 4;
查询是否添加成功:
删除4组中的一个日志成员文件
SQL>alter database drop logfile member ‘/u01/app/oracle/lcm/redo04a.log’;
删除第4组重做日志文件组
一、重做日志文件操作:
1.数据库中添加一个重做日志文件组:
alter database add logfile group 4 (’/u01/app/oracle/lcm/redo04_a.log’, ‘/u01/app/oracle/lcm/redo04_b.log’) size 500M;
数据库中删除一个重做日志文件组:
alter database drop logfile group 4;
2.为每个日志组增加一个日志成员文件
3.将所有日志组大小改为原大小的两倍
(1)查看日志组当前状态
目前数据库有三个日志成员组,1组为CURRENT,2,3组为INACTIVE,大小为50M,现在修改成100M
(2)删除旧日志组,增加新的日志组
SQL> alter database drop logfile group 3;
–删除物理磁盘中的redo03.log
SQL> exit
[oracle@orcl ~]$ mv /u01/app/oracle/lcm/redo03_a.log /tmp
SQL> alter database add logfile group 3 (’/u01/app/oracle/lcm/redo03_a.log’) size 100M;
同样可以继续删除日志组2
SQL> alter database drop logfile group 2;
[oracle@orcl ~]$m/redo02_a.log’) size 100M;
Group 1为current状态,使用以下命令alter system switch logfile使group 1变成inactive状态
同样地,继续删除日志组1
SQL> alter database drop logfile group 1;
[oracle@orcl ~]$ mv /u01/app/oracle/lcm/redo01.log /tmp
SQL> alter database add logfile group 1 (’/u01/app/oracle/lcm/redo01.log’) size 100M;
4.移动重做日志文件到新路径
将/u01/app/oracle/lcm/redo03_a.log移动到/u01/app/oracle/redo03_a.log
将/u01/app/oracle/lcm/redo02_a.log移动到/u01/app/oracle/redo02_a.log
SQL> shutdown immediate;
SQL> !mv /u01/app/oracle/lcm/redo03_a.log /u01/app/oracle
SQL> !mv /u01/app/oracle/lcm/redo02_a.log /u01/app/oracle
启动数据库到 mount状态
SQL> startup mount;
在数据库内重新命名数据文件
SQL>alter database rename file ‘/u01/app/oracle/lcm/redo03_a.log’ to ‘/u01/app/oracle/redo03_a.log’;
SQL>alter database rename file ‘/u01/app/oracle/lcm/redo02_a.log’ to ‘/u01/app/oracle/redo02_a.log’;
打开数据库
SQL> alter database open;
查询 v$logfile视图,来确认移动已经成功
二、数据文件:移动数据文件到新路径
将数据文件/u01/app/oracle/lcm/system01.dbf移动到/u01/app/oracle
查看数据文件位置:
SQL> select name from v$datafile;
关闭数据库
SQL> shutdown immediate;
退出SQL
SQL>exit,
进入到要移入文件的路径
[oracle@orcl oracle]$ cd mv /u01/app/oracle/
[oracle@orcl oracle]$ mv /u01/app/oracle/lcm/system01.dbf /u01/app/oracle
以mount模式启动数据库
SQL> startup mount;
在数据库内重新命名数据文件
SQL>alter database rename file ‘/u01/app/oracle/lcm/system01.dbf’ to ‘/u01/app/oracle/system01.dbf’;
打开数据库
SQL> alter database open;
查看文件位置,发现已经移动
SQL> select name from v$datafile;