归档,表空间,数据文件的定义

归档
数据库的任何改变,都会写到日志里面记录着,这个就叫做在线重做日志

当这个日志写满了,就将这个文件归档,保存着,就是将一个写满了日志的文件复制一份到一个指定的文件夹中,可以将这些历史日志文件都copy(归档)一份,而不会在轮循中被覆盖,起到保护数据的功能,这就是归档日志

然后在线重做日志就可以被复写(Oracle使用循环日志方式,当日志文件被循环使用的时候,日志内容就被覆盖了)。

这样做的用处:比如,你保存了一个月的归档日志,那就意味着你可以将数据库还原到这个月内的任意一个时间点(当打开日志归档时,可以将日志内容被覆盖前存储到归档目录中,配合备份策略,可以将数据库恢复到任一时间点)。

归档日志记录的是数据库数据的变化,数据库备份则是备份一份完整的数据库,保留完整的数据,留作数据库文件损坏时还原。

问答:
问:这样岂不是归档日志越来越大,不会自动删除吗?
答:需要做备份,备份里写删除脚本,或者手动删除也可以

问:备份不是只是对原来数据的一份拷贝吗?还能删除原来的日志吗?
答:RMAN备份,可以选择备份归档日志,并删除它。
数据库如果允许丢失较长时间的数据,采用EXP导出的方式进行备 份,就不需要开启归档模式了。
如果不允许丢失很长时间的数据,采用RMAN备份,只要事务日志和归档日志完整,就可以完全恢复数据库,不会有数据丢失。
因此,事务日志,应当有两个复本,归档日志可以就存放一份。
事务日志、归档日志应该与数据文件存放在不同的磁盘上,在同一台存储里,至少应该存放在与数据文件不同的RAID组里。

命令:
查看归档模式

select log_mode from v$database
archive log list

启动/关闭归档

shutdown immediate;
startup mount;
alter database archivelog(noarchivelog);
alter database open;

自动归档的切换

alter system archive log start
alter system archive log stop

手动归档

扫描二维码关注公众号,回复: 4756965 查看本文章
alter system archive log current;
alter system archive log all;

查看初始化参数

show parameter log_archive_dest

查询归档日志总大小

SQL> show parameter db_recovery_file_dest_size;

查询当前归档日志使用大小,单位B

select * from v$recovery_file_dest;

使用rman清空归档日志

crosscheck archivelog all;  --查看可以所有的归档文件
delete expired archivelog all; --清空过期的归档文件

如何确认归档日志是否过期,rman有一个保留策略,可以定义多少天之前的日志算为过期;

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
让恢复窗口成为14天大小。

查看所有的rman策略

show all;

查看所有归档,未删除的归档日志

select count(*) from v$archived_log where archived='YES' and deleted='NO';

增加归档日志的大小
a)增大空间最大值

1.登录,sqlplus ZSNBXYXT/ZSNBXYXT@orcl as sysdba
2.查看是否启用归档日志:archive log list
3.进入 rman:rman target ZSNBXYXT/ZSNBXYXT@ORCL
4.修改归档日志最大空间:alter system set db_recovery_file_dest_size=35G;

b)删除日志

rman target ZSNBXYXT/ZSNBXYXT@ORCL
crosscheck archivelog all;
delete archivelog until time 'sysdate'; --删除所有日志
delete expired archivelog all;--删除过期日志

表空间
一个表空间可以由多个数据文件组合而成,tablespace是逻辑上的概念。

查询所有表空间的名称

select tablespace_name from user_tablespaces;

select * from user_tablespaces;

数据文件
每一个数据文件都必须隶属于某个表空间,datafile则在物理上储存了数据库的种种对象。

select * from v$datafile;
select * from dba_data_files;
select created,log_mode from v$database;

猜你喜欢

转载自blog.csdn.net/weixin_42289413/article/details/84816621