用户对数据库的一切操作都记录在数据库的日志文件中,通过日志文件可以查看用户对数据库进行了哪些操作
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表示两者都改变)