如何在不使用第三方软件,使用Oracle自带功能的情况下,对历史数据进行归档?
日志操作模式:ARCHIVELOGNOARCHIVELOG
1,更改日志操作模式:
检查当前日志操作模式。
SELECTlog _ modefromv $ database
关闭数据库,然后装载数据库。
立即关闭
启动安装
更改日志操作模式,然后打开数据库。
alterdatabaseaarchivelog;
ALTERDATABASEOPEN
2、实施手工归档
从oracledatabase10g开始,当日志操作模式更改为非归档日志模式时,oracle将自动启动ARCH进程。如果要使用手动存档,则在更改日志操作模式时,必须使用ALTERDATABASEARCHIVELOGMANUAL命令。
应该注意,使用手动存档,数据库管理员必须手动执行存档命令。如果不执行手动归档命令,日志组的原始内容将不会被覆盖。ALTERDATABASEARCHIVELOGMANUAL命令是为了与以前的版本兼容而保留的。未来的oracle版本将取消该命令。使用手动归档,数据库管理员可以执行以下命令来归档重做日志:
SLTERSYSTEMARCHIVELOGALL
3.配置存档流程
初始化参数LOG_ARCHIVE_MAX_PROCESSES用于指定例程最初启动的归档进程的最大数量。当数据库转换为ARCHIVELOG模式时,默认情况下,oracle将自动启动两个归档进程。通过更改初始化参数LOG_ARCHIVE_MAX_PROCESS的值,可以动态增加或减少归档进程的数量:
ALTERSYSTEMSETLOG _ ARCHIVE _ MAX _ PROCESSES = 3;
配置归档位置和文件格式
当数据库处于ARCHIVELOG模式时,如果日志被切换,后台进程将自动生成归档日志。存档日志的默认位置是%oracle_home%rdbms。在oracledatabase10g中,归档日志的默认文件格式是arc% s _% r.% t。为了更改归档日志的位置和名称格式,必须更改相应的初始化参数。
1,初始化参数LOG_ARCHIVE_FORMAT用于指定存档日志的文件名格式。设置此初始化参数时,可以指定以下匹配器:
%s:日志序列号:
%S:日志序列号(以0开头)
%t:重做线程号。
%T:重做线程号(以0开头)
%a:活动ID号
%d:数据库ID号
%rRESETLOGS的ID值。
从10g开始,配置归档日志文件格式时,必须有%s、%t和%r匹配项。配置存档文件格式后,必须重新启动数据库。
2.使用LOG_ARCHIVE_DEST配置归档位置。
如果不使用备用数据库,则只需要将归档日志存储在本地目录中。要配置本地归档位置,可以使用初始化参数LOG_ARCHIVE_DEST和log _ archive _ duplicate _ dest,其中第一个参数用于设置第一个归档位置,第二个参数用于指定第二个归档位置。
ALTERSYSTEMSETlog _ archive _ dest = ' d:demo archive 1 ';
ALTERSYSTEMSETlog _ archive _ duplex _ dest = ' d:demo archive 2 ';
3.使用LOG_ARCHIVE_DEST_n配置多个归档位置。
初始化参数LOG_ARCHIVE_DEST_n用于指定多个归档位置,最多可以指定10个归档位置。通过使用初始化参数LOG_ARCHIVE_DEST_n,不仅可以配置本地归档位置,还可以配置远程归档位置。
如果要在主节点上生成归档日志并将其传输到备用节点,则必须使用参数LOG_ARCHIVE_DEST_n。此参数与LOG_ARCHIVE_DEST有以下不同之处;
初始化参数LOG_ARCHIVE_DEST_n可以配置本地归档位置和远程归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST只能配置本地归档位置。
初始化参数LOG_ARCHIVE_DEST_n最多可以配置10个归档位置,而初始化参数LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST最多只能配置两个归档位置。
初始化参数LOG_ARCHIVE_DEST_n不能与初始化参数log _存档_DEST和LOG _存档_复制_目标一起使用。
因为初始化参数LOG_ARCHIVE_DEST_n不能与初始化参数LOG_ARCHIVE_DEST和log _ archive _ duplicate _ dest一起使用,所以必须禁用初始化参数LOG_ARCHVE_DEST和LOG_ARCHIVE_DUPLEX_DEST。使用初始化参数LOG_ARCHIVE_DEST_n配置本地归档位置时,需要指定本地化选项。配置远程归档位置时,您需要指定服务选项。
例子如下:
ALTERSYSTEMSETlog _ archive _ duplex _ dest =“”;
ALTERSYSTEMSETlog _ archive _ dest =“”;
ALTERSYSTEMSETlog _ archive _ dest _ 1 = ' location = d:demo archive 1 ';
ALTERSYSTEMSETlog _ archive _ dest _ 2 = ' location = d:demo archive 2 ';
ALTERSYSTEMSETlog _ archive _ dest _ 3 = ' location = d:demo archive 3 ';
ALTERSYSTEMSETlog _ archive _ dest _ 4 = ' service = stand by ';
配置远程存档位置时,服务选项需要指定远程数据库的网络服务名(在tnsnames.ora文件中配置)。
4.使用LOG_ARCHIVE_DEST_n选项。
使用初始化参数LOG_ARCHIVE_DEST_n配置归档位置时,可以在归档位置上指定可选或强制选项。当指定强制选项时,可以设置重新打开属性。
可选:此选项是默认选项。使用此选项时,无论存档是否成功,重做日志都会被覆盖。
强制:强制存档。使用此选项时,只有在存档成功后才能覆盖重做日志。
重新打开:该属性用于指定重新归档的时间间隔。默认值为300秒,必须遵循强制值。
示例:
altersystemsetlog _ archive _ dest _ 1 = ' location = d:demo archive 1 mandatory ';
altersystemsetlog _ archive _ dest _ 2 = ' location = d:demo archive 2 mandatoryreopen = 500 ';
altersystemsetlog _ archive _ dest _ 3 = ' location = d:demo archive 3 optional ';
5.控制成功本地存档的最小次数。
使用初始化参数log _ archive _ min _ succeeded _ dest来控制成功的本地归档的最小数量。
altersystemsetlog _ archive _ min _ succeed _ dest = 2;
6.使用初始化参数LOG_ARCHIVE_DEST_STATE_n来控制存档位置的可用性。将该参数设置为ENABLE(默认值),表示对应的归档位置将被激活;将此参数设置为DEFER意味着相应的归档位置被禁用。当归档日志所在的磁盘损坏或已满时,DBA需要临时禁用归档位置。
altersystemsetlog _ archive _ dest _ state _ 3 = defer;(已禁用)
altersystemsetlog _ archive _ dest _ state _ 3 = enable;(已启用)
显示存档日志信息
1,ARCHIVELOGLIST命令可以显示日志操作模式、归档位置、自动归档机要归档的日志序列号等信息。
2显示日志操作模式
SELECTname,log _ modeFROMv $ database
3.显示存档的日志信息。
Colnameformata40
Selectname,swquence #,first _ change # from v $ archived _ log;
Name用于表示归档日志的文件名,sequence#用于表示归档日志对应的日志序列号,firs_change#用于标识归档日志的初始SCN值。
4执行媒体恢复时,需要使用归档日志文件。第四,归档日志的存储位置必须准确定位。归档日志所在的目录可以通过查询动态性能视图v$archive_dest获得。
SELECTdestinationFROMv $ archive dest;
5.显示日志历史信息。
SELECT * FROMv $ loghist
THREAD#用于标识重做线程号,SEQUNCE #用于标识日志序列号,FIRST_CHANGE#用于标识日志序列号对应的初始SCN值,FIRST_TIME用于标识初始SCN的发生时间。SWICTH_CHANGE#用于标识日志切换的SCN值。
6.显示存档过程信息。
当日志切换时,ARCH进程会自动将重做日志复制到归档日志中。为了加快归档速度,应该启用多个ARCH流程。可以通过查询动态性能视图V$ARCHIVE_PROCESSES来显示所有归档进程的信息!
SELECT * FROMv $ archive _ processes;
process用于标识ARCH进程的编号,status用于标识ARCH进程的状态(活动、停止:未启动),log_sequence用于标识被归档的日志序列号,state用于标识ARCH进程的工作状态。