Oracle11g日志文件

用户对数据库的一切操作都记录在数据库的日志文件中,通过日志文件可以查看用户对数据库进行了哪些操作

0. 查询日志文件
	a. select * from v$log; (查询数据库使用哪一日志文件组)
	b. select * from v$logfile; (查询正在使用的日志文件组中的日志文件)
	c. select * from v$log_history; (查询历史日志)
	d. select dbid,name,created,log_mode from v$database;(查询日志归档模式)

1. 创建日志文件组(对于一切数据库的操作的记录)
	alter database database_instance_name
	add logfile [group group_number] (group_number为日志文件组指定组编号)
	(file_name [,file_name[,..]]) (为该组创建日志文件成员)
	[size size_number]  指定日志文件成员的大小)
	[reuse]    (如果创建的日志文件成员已存在,可以使用reuse覆盖已存在额文件。但是该文件不嫩已经属于其它日志文件组,否则无法替换。)
	alter database add logfile group4
	(
	 'e:\app\log2.log',
	 'e:\app\log3.log'
	) size 10M;

2. 创建日志文件(一般是指向日志文件组中天剑日志成员)
	alter database ... add logfile member to group_number;
	如下实例,向文件组group4中添加一个新的日志文件。
	alter database add logfile member
	'd:\app\redo009.log'
	to group4  

	查询日志文件组以及成员
	select group#,member from V$logfile;

3. 重新定义日志成员
	1. 为日志文件组重新指定一个日志文件。
	2. 在一个已存在的日志文件组中添加一个新创建的日志文件。
	分步骤:
	a. conn sys/admin as sysdba
	b. shutdown 数据库(关闭数据库例程)
	c. 到日志所在目录,执行剪切,复制以及重命名等草组。
	d. startup mount 启动数据实例例程,加载数据库实例。
	e. 
	alter database rename file
	'e:\app\redo009.log'  旧的日志文件
	to
	'd:\test\redo033.log'; 新的日志文件
	f.alter database open; 打开数据库实例

4. 操作日志文件组(切换/清空)
a. 切换日志文件组(日志文件组是循环使用的,当一组日志文件被写满是,oracle自动切换到下一组日志文件。在需要的时候,数据库管理员也可以手动切换日志文件按组。)
  手动切换执行的命令:alter system switch logfile.
  可以先查看数据库中日志文件组使用的状态select group#,status from v$log;
b. 清空日志文件组
 如果日志文件组中的日志文件受损,将导致数据库无法将受损的日志文件进行归档,这会最终导致数据库停止运行。 此时在不关闭数据库的情况下可以选择清空日志文件组中的内容。
	alter database clear logfile group group_number
注意:被清空的日志文件不能出入current状态,即不能清空数据库正在使用的日志文件组。
      当数据库中只有两个日志文件组时,不能清除日志问价组。

5. 删除日志文件(只是在数据字典和控制文件中进行删除日志文件,不会在物理上删除相应的文件)
a.删除日志文件语法: alter database drop logfile member logfile_name
注意: 被删除的日志文件,所在日志文件组必须是非curent.如果是current的需要执行手工日志切换,将该日志文件组的状态修改为inactive.
	该日志文件所在的日志文件组中必须还包含其它日志文件。
	如果数据库运行在归档模式下,则在删除日志文件之前,确定所在日志文件组已经被归档,否则会导致数据丢失。
6.日志文件组的状态: active/current/inactive/unused
  日志文件的状态: valid/invalid/stale.

7. 删除日志文件组
alter database drop logfile group group_number
注意:删除的日志文件组所在的数据库中必须只是有两个日志文件组。
      日志文件组不能处于current状态。
      如果数据库运行在归档模式,应该确定该日志文件组也已归档。

8. 归档日志
   Oracle利用重做日志文件记录对数据库的操作,但是重做日志文件组是循环使用的,当所有的日志文件都被填满是,系统自动切换到第一组日志文件
 当然数据库管理员也可以使用命令手工且黄。而在循环使用日志文件时,日志文件中已经存在的日志内容将会被覆盖。为了完整地记录数据库的全部操作,Oracle提出来归档日志概念。
   如果是非归档日志模式,则切换日志文件时,日志文件中又有点内容将被新的内容覆盖;
   如果是归档日志模式,则切换日志文件时,系统会首先进行归档存储,之后才容许想文件中写于新的日志文件。

9. 修改数据库日志归档模式(archive log list 查看数据库归档模式)
	alter database archivelog | noarchivelog
第一步:shutdown 关闭数据库
第二部:start mount 启动数据库实例,但不打开数据库
第三部:执行alter database noarchivelog、archivelog修改数据库归档模式。
第四部:alter database open. 打开数据库。

10. 设置归档目标(查询数据库当前的归档目标:show parameter db_recovery_file_dest_name)
  存放归档日志文件目录,一个数据库可以有多个归档目标。在创建数据库是,默认摄者来归档目标,可以通过db_recovery_file dest 参数查看。
设置归档目标:
alter system set
log_archive_dest_n = '{location|server}=directory' local本地;server是远程目标。

11. 设置归档日志名称。
alter system set log_archive_format = 'fix_name%S_%R.%T' SCOPE = scope_type;
a. fix_name%S_%R.%T 其中fix_nam是自定义的命名前缀; %S表示日志序列号;%R联机重做日志的ID值;%T表示归档线程编号。
   log——archive_format 参数的值必须包含%S,%R以及%T。
b. scope可以是memory/spfile/both(memory表示之改变当前实例运行参数;spfile表示只改变服务器参数文件;both表示两者都改变)

猜你喜欢

转载自wkf41068.iteye.com/blog/1920671