小e随笔:小e把曾经的实验笔记拿了出来,在昨晚实验了一部分,结果出现了意想不到的错误,而错误就是让我们成长的基石,并又让我有所收获,所以笔记必须得记,而且也要经常复习和整理,学习是一个不断重复且前进的过程。
数据库环境 --以下的所有案例都是通过测试
OS:11gR2&linux5.8
1 介绍归档和非归档
1.1查看日志文件的几个常用视图
select * from v$log
select * from v$logfile
1.2 查看数据库归档模式 --sys用户
SQL> archive log list
Database log mode No Archive Mode --在建库的时候可以选择是否归档
Automatic archival Disabled 我选择的不启用,所以默认非归档
Archive destination USE_DB_RECOVERY_FILE_DEST–归档日志路径
Oldest online log sequence 1 --这个地方为什么是1,那是因为。。。我刚才resetlogs了
Current log sequence 3 --当前使用的日志为序列3
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL> select group#,sequence#,blocksize,archived,status from v$log;
GROUP# SEQUENCE# BLOCKSIZE ARC STATUS
---------- ---------- ---------- --- ----------------
1 1 512 YES INACTIVE
2 2 512 YES INACTIVE
3 3 512 NO CURRENT
1.3 变为归档模式,但前提是数据库处于mount状态
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 845348864 bytes
Fixed Size 1339796 bytes
Variable Size 494931564 bytes
Database Buffers 343932928 bytes
Redo Buffers 5144576 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 1
Next log sequence to archive 3
Current log sequence 3
注意:
Automatic archival Enabled这个参数需要特别说明下
SQL> show parameter archive;
log_archive_start boolean FALSE
这个参数需要特别说明一下,但从10g开始就废弃了,在9i之前,如果这个参数为false,光启动归档是不可以的,他不会为你自动归档。
这个地方就体现出了alter system switch logfile;和alter system archive log current的区别,他们两个只相差了归档这一项,在以前如果这个参数为false,那连续switch切换就会引起数据库挂起,因为日志没有归档。
1.4 查看归档日志文件存在哪里
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 4977M
1.5 手动归档的方法
--alter system switch logfile;
--alter system archive log current;
2 介绍备份的另一个重要概念SCN:system change number
2.1 查询当前scn
SQL> select dbms_flashback.get_system_change_number from dual; --大概每隔3S变化一次
GET_SYSTEM_CHANGE_NUMBER
------------------------
898324
10g以后又提供了一个查询scn的方式
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
898358
2.2 查看归档归档日志文件的视图
SQL> select sequence#,first_change#,next_change# from v$archived_log;
SEQUENCE# FIRST_CHANGE# NEXT_CHANGE#
---------- ------------- ------------
71 802120 803659
72 803659 824346
73 824346 850398 --悲剧啊!昨晚把74号归档日志文件玩丢了。。。
75 856208 856561
76 856561 856587
77 856587 856597
78 856597 856604
79 856604 856685
1 852915 872923
2 872923 896073
10 rows selected.
综述:以上就是今天需要我们了解的备份恢复原理,SCN和归档在OLTP系统是非常非常重要的概念,当然如果在海量数据的情况下,就不一定了,根据业务和实际情况而定。
elvis
2012.10.1
知识共享~共同进步
转载请注明: