这里就涉及到重做日志得问题了,在归档模式下,当日志文件进行切换得时候,进程LGWR会将日志写入磁盘,作为日志文件为以后的数据库恢复准备,在非归档模式下就不行,当日志文件进行切换得时候会覆盖原来的日志文件,对于非归档模式一般只能进行完全恢复!不过建议应该把DB设为归档模式
先查出当前数据库使用的归档目录是在哪,这个我昨天回答过一个问题。
>
查看oracle数据库是否为归档模式
SQL> select name,log_mode from
V$database;
NAME LOG_MODE
------------------
------------------------
TEST 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
80157
Current log sequence 80163
编辑本段配置数据库的归档模式
1改变非归档模式到归档模式:
1)SQL> conn / as sysdba (以DBA身份连接数据库)
2)SQL> shutdown immediate;(立即关闭数据库)
3)SQL> startup mount
(启动实例并加载数据库,但不打开)
4)SQL> alter database archivelog; (更改数据库为归档模式)
5)SQL> alter database open; (打开数据库)
6)SQL> alter system archive
log start; (启用自动归档)
7)SQL> exit (退出)
做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了这一步非非常重要!
2改变归档模式到非归档模式:
1)SQL>SHUTDOWN NORMAL/IMMEDIATE;
2)SQL>STARTUP MOUNT;
3)SQL>ALTER DATABASE NOARCHIVELOG;
4)SQL>ALTER DATABASE OPEN;
3归档相关命令
archive log stop;
archive log start;
archive log list;
show parameters;
show parameters log_archive_start;
show
parameters log_archive_max_process; #归档进程数
alter system set
log_archive_max_process=5; #将归档进程数改为5
select from v$bgprocess; #检察后台进程
将不再经常使用的数据移到一个单独的存储设备来进行长期保存的过程。数据存档由旧的数据组成,但它是以后参考所必需且很重要的数据,其数据必须遵从规则来保存。数据存档具有索引和搜索功能,这样文件可以很容易地找到。
可以利用数据存档,以物理方式自动将数据仓库中具有较低业务价值的数据迁移到更适合、更经济高效的存储层。有许多标准可用来确定业务价值较低的数据:如数据访问和性能需求、数据的使用年限、数据属于哪个地区或部门,以及分区用途。
当访问率低的数据发展为消耗数据仓库的最大一份,最合理的处理方式是以物理和逻辑方式从核心生产数据仓库中分离此数据。
扩展资料
归档的目的是长时间存放有组织的数据集,确保其将来能够被精细地检索。改进的磁带是这种应用最理想的方式。
备份是短时间存储那些频繁更换或更新的数据的副本。这相当于一批廉价的离线介质上的数据副本。通过这种方式,可以把数据与那些基于磁盘的数据中断事件隔离开,以免同时遭到损坏,这样,如果原始数据或存储平台损坏的话,数据就可以恢复到任何磁盘阵列。
在磁盘到磁盘复制解决方案中,复制只能发生在两个完全相同的设备中。此外,复制过程还可以中断,这样你就可以检查在主数据存储和镜像仓库之间的增量或差异。不过,这样它可能会导致在磁盘到磁盘的复制过程中产生很多不易察觉的错误。
参考资料来源:百度百科-归档
参考资料来源:百度百科-数据归档
Oracle数据库能运行在 种模式下:归档模式(archivelog)和非归档模式(noarchivelog) 归档模式能提高Oracle数据库的可恢复性 生产数据库都应该运行在此模式下 归档模式应该和相应的备份策略相结合 只有归档模式没有相应的备份策略只会带来麻烦
检查归档模式命令
SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence Current log sequence
设置归档模式
SQL> shutdown immediate; Database closed Database di ounted ORACLE instance shut down SQL> startup mount ORACLE instance started Total System Global Area bytes Fixed Size bytes Variable Size bytes Database Buffers bytes Redo Buffers bytes Database mounted SQL> alter database archivelog; Database altered 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 Next log sequence to archive Current log sequence
如果需要停止归档模式 使用 alter database noarchivelog 命令 Oracle g之前 你还需要修改初始化参数使数据库处于自动归档模式 在pfile/spfile中设置如下参数
log_archive_start = true
重启数据库此参数生效 此时数据库处于自动归档模式 也能在数据库启动过程中 手工执行
archive log start
使数据库启用自动归档 不过重启后数据库仍然处于手工归档模式 g使用db_recovery_file_dest来作为归档日志的存放地
SQL> show parameter db_recovery NAME TYPE VALUE db_recovery_file_dest string /home/oracle/ora g/flash_reco very_area/ db_recovery_file_dest_size big integer G
能修改db_recovery_file_dest_size参数的大小
alter system set db_recovery_file_dest_size=
一
重做日志文件把对数据文件的修改在写入数据文件之前记录下来 日志文件以一种循环的方式被写入信息 当一个日志组被写满时 回自动向另一个日志组写入 管理员可以手工切换当前日志组 alter system switch logfile 可以切换当前的日志组 当日志组发生切换时 oracle向新的重做日志组分配一个日志序列号 当存在大量的事务时必须调整重做日志文件的大小 以避免频繁的日志切换发生 重做日志文件被顺序的写在磁盘上 如果磁盘没有其他活动 I/O将会很快 应该把重做日志文件保存在单独的磁盘上 以获取良好的性能 尤其不要把经常处于活动状态的SYSTEM UNDOTBS SYSAUX的表空间或索引表空间文件保存到同一块磁盘上 因为只有在事务的请求被写到重做日志后 请求才能被完成 最大限度的提高重做日志的吞吐量是oracle性能优化首先考虑的因素 当发生重做日志切换而生成一个新的检查点时 DBWn就会写脏缓冲器块 这样会影响oracle的性能 可以通过fast_start_mttr_target初始化参数来调整检查点
每个数据库都有自己的联机重做日志组 一个联机重做日志组有多个重做日志成员 每个日志成员有单独的 *** 作系统文件 在一个rac配置(这种配置中单个数据库装有多个实例) 每个实例有一个联机重做日志线程 每个实例的lgwr进程都写到相同的联机重做日志文件 因此oracle必须跟踪数据库实例修改来自那个实例
当多路复用重做日志文件时 应该把一个组的成员保存在不同的磁盘上 以避免单点故障的发生 如果重做日志文件组的所有成员都无法写入数据 oracle将被挂起 Dba可以在创建数据库时创建多个联机重做日志文件的副本
对日志的 *** 作如下
a 创建新的重做日志组
Alter database add logfile
Group ( /ora /oradata/mydb /redo log
/ora /oradata/mdb /redo log ) size m;
如果省略group子句 oracle分配一个有效的编号 如下
Alter database add logfile
b 添加新的组成员
alter database add logfile member
/ora /oradata/mydb /redo log to group ;(向第二组中添加新的成员)
c 重命名日志成员
在重命名日志组成员之前新的目标必须已经存在 Oracle的sql命令只是把控制文件中的内部指针指向新的日志文件 Dba需要用 *** 作系统命令来重命名此日志文件 步骤如下
.关闭数据库
.使用 *** 作系统命令重命名或移动日志文件
启动数据库实例(start mount) 重命名控制文件中的日志文 件成员 Alter database rename file old_redo_file_name to new_redo_file_name ;
.打开数据库 alter database open
.备份控制文件
D.删除重做日志组
将要被删除的重做日志组不能是活动的日志组 Alter database drop logfile group ; 当重做日志文件被删除后 相关的 *** 作系统文件也被删除 相关的数据库控制文件也给更新
E.使用和删除重做日志组相同的方式 dba可以只删除一个非活动的重做日志组的成员
Alter database drop logfile member /ora /oradata/mydb /redo log ;
f 创建联机重做日志文件
当重做日志组成员遭到破坏时 可以删除并重新添加这个重做日志组或组成员
二
档案重做日志文件
它是联机重做日志文件的一个副本 Lgwr和arcn进程的故障都会引起数据库的挂起 只有当arcn进程把联机重做日志写到归档地后 才可以向此重做日志组成员写入数据
设置归档目的地
可以在参数初始化文件中的log_archive_dest_n来定义归档目的地 归档目的地可以在本地计算机上 也可在远程的数据库服务器上 定义语法如下
LOG_ARCHIVE_DEST_n= null_string |
(service=tnsnames_name |
LOCATION= directory_name )
[MANDATORY | OPTIONAL]
[REOPEN[=integer]]
例
LOG_ARCHIVE_DEST_ =((LOCATION= /archive/MYDB ) MANDATORU REOPEN= )定义归档日志的位置为/archive/MYDB mandatory子句的定义向这个位置写日志的 *** 作必须的成功的 Reopen子句定义在日志写入失败时 下次尝试写入 *** 作的时间间隔 缺省是 秒
例
LOG_ARCHIVE_DEST_@=(SERVICE=STDBY ) OPTIONAL REOPEN;语句中的stdby 的连接到远程数据库的oracle net连接串 由于写 *** 作是可选的 所以数据库活动继续 当arcn进程不能写档案日志文件时 进程将立即尝试重新写入(这个动作有reopen子句来定义)
Log_archive_min_succeed_dest:定义最少归档日志的副本数量
Log_archive_format:定义归档日志文件采用的名称和使用的格式 可以使用预定义变量来构造每个归档日志文件的名称 变量如下
%s 日志序列号
%t 线程号
%r 复位日志id
%d 数据库id
lishixinzhi/Article/program/Oracle/201311/17689
以上就是关于数据库中的归档是什么意思全部的内容,包括:数据库中的归档是什么意思、如何检查oracle的归档空间是否满了、如何启动或关闭数据库的归档模式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)