ORACLE 归档模式
上午在红帽5上安装ORACLE成功。建库的时候特意未启用归档模式。
SQL> select name,open_mode,log_mode from v$database; NAME OPEN_MODE LOG_MODE --------- -------------------- ------------ SZPDCORA READ WRITE NOARCHIVELOG
SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 6 Current log sequence 8
可以看到没有启用。
更改归档模式步骤:
SQL> shutdown immediate SQL> startup nomount SQL> alter database mount; SQL> alter database archivelog; SQL> alter database open; Database altered.
再看一下归档模式
SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 6 Next log sequence to archive 8 Current log sequence 8 SQL> select name,open_mode,log_mode from v$database;
可以看到默认归档日志存放路径在闪回区($ORACLE_BASE/flash_recovery_area)。对于这个路径,ORACLE有一个限制,就是默认只有2G的空间,而且不只是归档日志的默认路径,也是备份文件和闪回日志的默认地址,这样的话归档日志锁使用的空间就达不到2G,在没有设置好这个路径大小的情况下,很多系统都遇到过归档日志满而无法归档导致数据库夯住的问题
空间不够了,要么更改闪回区大小;要么切换归档日志到其他目录
SQL> show parameter db_recovery NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u01/app/oracle/flash_recovery _area db_recovery_file_dest_size big integer 3852M
可以看到默认闪回区的位置。现在修改为 /u01/app/oracle/archivelogs
SQL> alter system set log_archive_dest_1='location=/u01/app/archivelogs' scope=both; System altered. SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/app/archivelogs Oldest online log sequence 6 Next log sequence to archive 8 Current log sequence 8
OK,手动切换下日志 看看效果
SQL> alter system switch logfile; System altered. [oracle@localhost archivelogs]$ ls 1_8_795179693.dbf
生成1_8_795179693.dbf。默认后缀是dbf
查看归档日志命名格式:
SQL> show parameter log_archive_format NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_format string %t_%s_%r.dbf
顺便看一下参数详解:
%s log sequence number
%S log sequence number, zero filled
%t thread number
%T thread number, zero filled 线程号,可以理解成是节点号,如果不是RAC环境,%T都是1
%R 场景号