SQL>>
Database> 确认:select * from v$log
SQL> desc v$log;
Name Null? Type
----------------------------------------- -------- ----------------------------
GROUP# NUMBER --组号
THREAD# NUMBER --线程号,单节点数据库下都是1
SEQUENCE# NUMBER --序号
BYTES NUMBER --文件大小
MEMBERS NUMBER --成员数。默认是1
ARCHIVED VARCHAR2(3) --是否已经归档
STATUS VARCHAR2(16) --状态
FIRST_CHANGE# NUMBER ---起始的检查点
FIRST_TIME DATE --上面的检查点对应的时间
select * from v$logfile --查询redo文件的路径
###########################################################################################
案例2:给redo文件做多路复用(二路复用)
group1 group2 group3
disk1 redo01.log redo02.log redo03.log
--------------------------------------------
disk2 redo0101.log redo0201.log redo0301.log
LGWR写文件的时候是一组一组写的,同时写组1 的两个文件,两个文件的内容是一样的。
SQL>> alter database drop logfile group 4
*
ERROR at line 1:
ORA-01623: log 4 is current log for instance ORCL (thread 1) - cannot drop
ORA-00312: online log 4 thread 1: '/u01/oracle/oradata/ORCL/redo04.log'
ORA-00312: online log 4 thread 1: '/u01/oracle/oradata/ORCL/redo0401.log' --current的组是不能删除的
SQL>> alter database drop logfile group 4
*
ERROR at line 1:
ORA-01624: log 4 needed for crash recovery of instance ORCL (thread 1)
ORA-00312: online log 4 thread 1: '/u01/oracle/oradata/ORCL/redo04.log'
ORA-00312: online log 4 thread 1: '/u01/oracle/oradata/ORCL/redo0401.log' --ACTIVE的组也是不能删除的
SQL>> alter database drop logfile member '/u01/oracle/oradata/ORCL/redo01.log'
*
ERROR at line 1:
ORA-01609: log 1 is the current log for thread 1 - cannot drop members
ORA-00312: online log 1 thread 1: '/u01/oracle/oradata/ORCL/redo01.log'
ORA-00312: online log 1 thread 1: '/u01/oracle/oradata/ORCL/redo0101.log' --current的成员不能删除
SQL>>
Database>
SQL>>
Database> 一个数据库最少得两组redo
SQL>> alter database drop logfile group 4
*
ERROR at line 1:
ORA-01567: dropping log 4 would leave less than 2 log files for instance ORCL --最少两个redo组
(thread 1)
ORA-00312: online log 4 thread 1: '/u01/oracle/oradata/ORCL/redo0401.log'
注意:redo文件被删除后,物理上是不会被删除的,需要手工在系统上删除。
看清楚数据字典再删,不小心删掉正在使用的就麻烦了。
[oracle@oracle3 ORCL]$ rm -rf redo02*
[oracle@oracle3 ORCL]$ rm -rf redo03*
[oracle@oracle3 ORCL]$ rm -rf redo04.log
练习:将数据库改为5组,二路复用,要求创建在不同的磁盘上。
alter database add logfile group 3 '/u01/oracle/oradata/ORCL/redo0301.log'> alter database add logfile member '/u02/redo/redo0202.log' to group 2;
###########################################################################################
案例5:调整redo文件大小
需求:将redo文件大小从50M调整为100M
思路:
1、将inactive状态的redo组删除,重新创建redo文件大小100M,并添加二路复用。
2、将active和current状态的redo组切换为inactive状态的redo组删除,再重新创建并添加二路复用。
#########################################################################################
案例6:打开数据库的归档日志--生产环境必须要打开的
1、查看数据库的归档模式
SQL> conn /as sysdba
Connected.
SQL> archive log list;
Database log mode No Archive Mode --当前数据库处于非归档模式状态
Automatic archival Disabled --自动归档是没有启用的
Archive destination USE_DB_RECOVERY_FILE_DEST --归档文件的目的地
Oldest online log sequence 153 当前日志中序号最老的一个
Current log sequence 154 --当前的日志的sequence
SQL> show parameter DB_RECOVERY_FILE_DEST
NAME TYPE VALUE
------------------------------- ----------- ------------------------------
db_recovery_file_dest string /u01/oracle/flash_recovery_area --归档目的地路径默认在闪回恢复区
db_recovery_file_dest_size big integer 2G --归档目的地大小
2、将归档创建在其他的目录中,二路复用,模拟两磁盘
1 创建归档目录
[oracle@oracle3 oracle]$ mkdir arch2
[oracle@oracle3 oracle]$ pwd
/u01/oracle
[oracle@oracle3 u03]$ mkdir arch1
2 停机改参数
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> create pfile from spfile;
File created.
在$ORACLE_HOME/dbs下的initORCL.ora文件中添加三个参数:
*.log_archive_dest_1='LOCATION=/u03/arch1'
*.log_archive_dest_2='LOCATION=/u01/oracle/arch2' --归档目的地参数
*.log_archive_format='archivelog_%t_%s_%r' --归档文件格式参数
3、启动打开归档模式
SQL> create spfile from pfile;
File created.
SQL> startup mount --要在mount阶段打开归档模式
ORACLE instance started.
Total System Global Area 1258291200 bytes