Oracle控制文件与日志文件管理

Oracle控制文件与日志文件管理
Oracle控制文件与日志文件管理

广东技术师范学院实验报告

实验名称:Oracle控制文件与日志文件管理

一、实验目的:

1.了解初始化参数文件的作用、类型、参数的查看和修改方法;

2.掌握数据库的启动和关闭状态及相应命令;

3.通过常用的数据字典了解ORACLE数据库的基本信息;

4.掌握控制文件和日志文件的日常维护操作。

二、实验内容和步骤:(说明代码及运行结果)

实验内容:

1.启动和关闭数据库;

2.查看数据库参数文件及常用参数;

3.利用数据字典查看数据库基本信息;

4.完成参数文件、控制文件和日志文件的基本操作;

实验步骤:

1.启动SQL*PLUS,作为SYSDBA身份连接到数据库,查看数据库当前使用的参数文件名及常用参数设置;

2.在SQL*PLUS中通过数据字典了解数据库的总体信息和结构信息;

3.练习PFILE 和SPFILE文件的创建;

4.对控制文件进行查看、移动、备份操作(控制文件分散到三个不同的目录存放);

5.对日志文件进行查看、增加组和成员、日志切换操作(设置三个日志组、每组两个成员,分散到两个不同的目录存放)。

四、习题

1.启动SQL*PLUS,作为SYSDBA身份连接到数据库,查看数据库当前使用的参数文件名及常用参数设置;

connect /as sysdba

show parameter spfile;

select count(*) from v$spparameter where value is not null;

show parameter db

show parameter shared_pool_size

2.在SQL*PLUS中通过数据字典了解数据库的总体信息和结构信息;select * from dictionary;

select table_name from user_tables;

--查询该用户拥有哪些表

select * from user_tables;

select index_name from user_indexes; --查询该用户拥有哪些索引

select view_name from user_views; --查询该用户拥有哪些视图

select object_name from user_objects;

--查询该用户拥有哪些数据库对象,对象包括表、视图、存储过程、触发器、包、索引、序列、JAVA文件等。

select * from user_users;

--主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、表空间名、创建时间等。

select * from dba_data_files;

--查询表空间的信息

3.练习PFILE 和SPFILE文件的创建;

将spfile文件转化为pfile

create pfile='c:\initorcl.ora' from spfile='C:\oracle\product\10.2.0\db_1\dbs\SPFILEORACLE.ORA';

将pfile文件转化为spfile

create spfile='C:\oracle\product\10.2.0\db_1\dbs\SPFILEORACLE.ORA' from pfile='c:\initorcl.ora';

4.对控制文件进行查看、移动、备份操作(控制文件分散到三个不同的目录存放);

查找控制文件的名字和位置

select name from v$controlfile;

导出控制文件数据

alter database backup controlfile to trace;

对控制文件备份操作(控制文件分散到三个不同的目录存放);

ALTER DATABASE BACKUP CONTROLFILE TO 'D:\ORACLE\BACKUP\TEST.BAK';

ALTER DATABASE BACKUP CONTROLFILE TO 'D:\ORACLE1\BACKUP\TEST.BAK';

ALTER DATABASE BACKUP CONTROLFILE TO 'D:\ORACLE2\BACKUP\TEST.BAK';

5.对日志文件进行查看、增加组和成员、日志切换操作(设置三个日志组、每组两个成员,分散到两个不同的目录存放)。

对日志文件进行查看

select member from v$logfile;

对日志文件增加组和成员

(1)首先确定当前登录的账户的权限,是否包含创建日志文件组或者日志文件成员的alter database系统权限。

select privilege from user_sys_privs where privilege='ALTER DATABASE';

(2)在添加日志文件组或者日志文件成员的时候先查看下数据库兼容参数。

show parameter compatible

(3)确定系统现有的日志文件组数与组中的日志文件成员数

select group#,member from V$logfile;

(4)设置三个日志组、每组两个成员,分散到两个不同的目录存放

alter database add logfile group 4

('C:\ORACLE\ORADATA\YU\REDO04.LOG','C:\ORACLE\ORADATA\YU\REDO05.LOG') size 20M;

select group#,member from V$logfile;

alter database add logfile group 5

('C:\ORACLE\ORADATA\YU\YU1\REDO07.LOG','C:\ORACLE\ORADATA\YU\YU1\REDO08.LO G')

size 20M;

alter database add logfile group 6

('C:\ORACLE\ORADATA\YU\YU2\REDO09.LOG','C:\ORACLE\ORADATA\YU\YU2\REDO10.LO G')

size 20M;

结果:

select group#,member from V$logfile;

oracle日志记录

【例1】 SQL>set time on SQL>create table hr.mydep1 as select * from hr.department; SQL>delete from hr.mydep1 where department_id=10; SQL>flashback table hr.mydep1 to timestamp 2 to timestamp(to_tate(‘2009-05-29 10:00:00’, ’yyyy-mm-dd hh24:mi:ss’)); 【例2】 SQL>create table student (name Varchar2(10), score Number); SQL>insert into student values(‘zs’, 68); SQL>update student set score=98 where name=’zs’; SQL>commit; SQL>select versions_starttime,versions_operation,name,score 2 from student versions between timestamp minvalue and maxvalue; 【例3】 SQL>CONNECT sys /zzuli AS sysdba SQL>select table_name, undo_sql from flashback_transaction_query where rownum<5;

【例1】控制文件备份为二进制文件 下面的语句可以将控制文件备份为一个二进制文件,即复制当前的控制文件: alter database backup controlfile to 'd:\backup_controlfile\control_09-05-25.bkp'; 【例2】控制文件备份为脚本文件 alter database backup controlfile to trace; 【例3】对视图V$CONTROLFlLE_RECORD_SECTION的查询。 select type,record_size,records_total,records_used from v$controlfile_record_section; 【例4】向数据库添加了一个新的重做日志组: alter database add logfile (‘e:\app\administrator\oradata\orcl\redo04.log’, ‘f:\oradata\log\redo04b.log’) Size 10m; 【例5】创建新的日志组,并将新的日志组指定为第4组: alter database add logfile group 4 (‘e:\app\administrator\oradata\orcl\redo004.log’,‘f:\oradata\log\redo004b.log') size 10m; 【例6】为第1组添加了一个新的成员日志文件: alter database add logfile member 'f:\oradata\log\redo01b.log' to group 1; 【例7】为第2组添加一个新成员: alter database add logfile member 'f:\oradata\log\redo02b.log' to

oracle备份控制文件

如何备份控制文件 ?1、 ?ALTER DATABASE BACKUP CONTROLFILE TO TRACE; ?ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS; ?ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS; ? ?2、 ?ALTER DATABASE BACKUP CONTROLFILE TO 文件名; ?ALTER DATABASE BACKUP CONTROLFILE TO 文件名 REUSE;(如果此文件已存在) ? ?例: ?SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'c:\a'; ? ?数据库已更改。 ? ?SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'c:\a'; ?ALTER DATABASE BACKUP CONTROLFILE TO 'c:\a' ?* ?ERROR 位于第 1 行: ?ORA-01580: 创建控制备份文件c:\a时出错 ?ORA-27038: skgfrcre: 文件存在 ?OSD-04010: <创建> 选项指定,文件已经存在 ? ? ?SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'c:\a' reuse; ? ?数据库已更改。 ? ?SQL> ? ?3、 ?Shutdown,直接看init.ora文件中的control_files项,找到其中任意一个控制文件, ?用操作系统命令复制到备份地点即可(如:软盘、光盘、磁带等) ? ?第一种方法产生的是一个跟踪文件,里面存放的是创建控制文件的脚本,可以用记事本等文本编辑器打开 ?这个脚本可以让你重新创建控制文件, ?生成一个跟踪文件到init.ora中user_dump_dest所指的目录下($ORACLE_HOME\ADMIN\ORADB\UDUMP\)。 ?

Oracle数据库归档日志日常管理与建议

Oracle数据库归档日志日常管理与建议 1.简介 近日,项目组偶有发生归档日志占满归档目录空间导致数据库hang住(无响应),导致系统不能正常应用的情况。针对此类问题,笔者从Oracle数据库归档模式、归档模式的优缺点、归档日志日常管理方法等各方面浅析并整理出归档日志日常管理与建议。请各项目组依据实际情况,规范管理归档日志,排查相关隐患,以保证系统的正常高效运营。 另外,对于已开启数据库归档模式的项目组,若数据库管理权限不在我方,可将相关归档管理建议与当地运维部门充分沟通,避免归档的不当管理引起事故。 2.数据库归档模式与归档日志 2.1数据库运行模式简介 Oracle数据库包括归档模式与非归档模式两种运行模式。 一般情况下Oracle数据库的联机重做日志会记录对数据库所做的所有的修改,如创建对象;插入、删除、更新对象;删除对象等,这些操作都会记录在联机重做日志里。Oracle 数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满(假设为1)的时候,就会发生日志切换,这时联机重做日志组2(假设为2)成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,这样反复进行。 如果数据库处于非归档模式,联机日志在切换时就会被丢弃。而在归档模式下,当发生日志切换的时候,被切换的联机日志会被归档。 如当前在使用联机重做日志1,当1被写满时,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到一个指定的目录下。这个目录为归档目录,这个过程称之为归档,拷贝的文件叫归档日志。 2.2归档模式优点与归档日志作用 数据库运行在归档模式时,后台进程ARCH会将联机日志的内容拷贝到归档目录生成归档日志。 当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。因此,开启归档模式及归档日志的益处与作用是非常明显的: 1.可以进行完全、不完全恢复。由于对数据库所做的全部改动都记录在日志文件中, 如果发生硬盘故障等导致数据文件丢失的故障,则可以利用物理备份和归档日志 完全恢复数据库,不会丢失任何数据。 2.可以进行联机热备。所谓联机热备,就是在数据库运行状态下,对数据库进行备 份,备份时用户对数据库的使用基本不受影响(不可避免的会对性能有负面影响)。 3.可以实施Data Guard。可以部署1个或多个备用数据库,从而最大限度地提供灾 难保护手段。

重做日志文件

重做日志文件(redo log file)对于Oracle数据库至关重要。它们是数据库的事务日志。通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复数据文件之后恢复介质 q 备用(standby)数据库处理 q 输入到流中,这是一个重做日志挖掘过程,用于实现信息共享(这也是一种奇特的复制) 重做日志文件的主要目的是,万一实例或介质失败,重做日志文件就能派上用场,或者可以作为一种维护备用数据库(standby database)的方法来完成故障恢复。如果数据库所在主机掉电,导致实例失败,Oracle会使用在线重做日志将系统恢复到掉电前的那个时刻。如果包含数据文件的磁盘驱动器出现了永久性故障,Oracle会使用归档重做日志以及在线重做日志,将磁盘驱动器的备份恢复到适当的时间点。另外,如果你“无意地”删除了一个表,或者删掉了一些重要的信息,而且提交了操作,则可以恢复一个备份,并让Oracle使用这些在线和归档重做日志文件将其恢复到意外发生前的那个时刻。 你在Oracle中完成的每个操作几乎都会生成一定的redo信息,并写入在线重做日志文件。向表中插入一行时,插入的最终结果会写入重做日志。删除一行时,则会在重做日志中写入你删除了这一行这一事实。删除一个表时,删除的效果会写入重做日志。从表中删除的数据不会写入;不过,Oracle删除表时执行的递归SQL确实会生成redo。例如,Oracle从SYS.OBJ$表(和其他内部字典对象)中删除一行时,这就会生成redo,另外如果支持不同模式的补充日志(supplemental logging ),还会把具体的DROP TABLE语句写入重做日志流。 有些操作可能会以尽量少生成redo的模式完成。例如,可以使用NOLOGGING属性创建一个索引。这说明,最初创建索引数据的操作不会记入日志,但是Oracle完成的所有递归SQL会写入日志。例如,创建索引后,将向SYS.OBJ$表中插入一行表示索引存在,这个插入会记入日志,以后使用SQL插入、更新和删除等操作完成的修改也会记入日志。但是,最初向磁盘写索引结构的操作不会记入日志。 前面我提到了两种类型的重做日志文件:在线(online)和归档(archived)。下面几节将详细介绍这两类重做日志文件。在第9章中,我们还会结合回滚段来讨论redo,看看它们对开发人员有什么影响。现在,我们只关注这些重做日志文件是什么,它们有什么用途。 3.7.1 在线重做日志 每个Oracle数据库都至少有两个在线重做日志文件组。每个重做日志组都包含一个或多个重做日志成员(redo按成员组来管理)。这些组的单个重做日志文件成员之间实际上形成彼此真正的镜像。这些在线重做日志文件的大小是固定的,并以循环方式使用。Oracle先写日志文件组1,当到达这组文件的最后时,会切换至日志文件组2,从头到尾重写这些文件的内容。日志文件组2填满时,再切换回到日志文件组1(假设只有两个重做日志文件组;如果有3个重做日志文件组,当然会继续写第3个组)。如图3-4所示。 4 日志文件组 图3-

oracle及操作系统对于文件大小的限制

[ORACLE]:单个表空间的数据限制 当将表空间加到4GB的时候,系统提示表空间不足。 原因: FAT12 单文件最大支持8M Fat16单文件最大支持2G Fat32单文件不能大于4G NTFS单文件最大64GB NTFS5.0单文件最大2TB 解决方案: 增加多个数据文件,对应同一个表空间。 因为:size of a tablespace = size of each datafile * number of datafiles ======================================== Oracle中数据文件大小的限制 https://www.360docs.net/doc/8616086091.html,/archives/2007/07/oracle_datafile_limit.html Oracle数据文件的大小存在一个内部限制,这个限制是: 每个数据文件最多只能包含2^22-1个数据块。 这个限制也就直接导致了每个数据文件的最大允许大小。 在2K Block_size下,数据文件最大只能达到约8G 在32K的Block_size下,数据文件最大只能达到约16*8G的大小。 这个限制是由于Oracle的Rowid中使用22位来代表Block号,这22位最多只能代表2^22-1个数据块。 为了扩展数据文件的大小,Oracle10g中引入了大文件表空间,在大文件表空间下,Oracle使用32位来代表Block号,也就是说,在新的技术下,大文件表空间下每个文件最多可以容纳4G个Block。 那么也就是说当Block_size为2k时,数据文件可以达到8T 。 当block_size为32K时,数据文件可以达到128T。 上周在做2K block_size测试时,第一次遇到了这个限制: SQL> alter tablespace eygle add datafile 'f:eygle02.dbf' size 8192M; alter tablespace eygle add datafile 'f:eygle02.dbf' size 8192M * ERROR 位于第 1 行: ORA-01144: 文件大小 (4194304 块) 超出 4194303 块的最大数

oracle 数据文件、表空间、日志文件、控制文件数据库管理

实验四 oracle 数据库管理 一、试验目的 掌握对数据文件、表空间、日志文件、控制文件的常用命令,作为DBA的必要准备。 二、实验内容 2.1 数据文件的管理 (1)在安装完毕之后,在INITsid.ORA参数文件有一个DB_FILES 参数,用于设置当前实例的数据外文件的个数。如: db_files = 80 如果在INITsid.ORA文件没有该参数,则可以用下面查询语句从视图中查到。如: SQL> col name for a20 SQL> col value for a50 SQL> set lin 100 SQL> select name,value from v$parameter where name = 'db_files'; NAME V ALUE -------------------- -------------------------------------------------- db_files 1024 (2)行命令建立表空间: 例1 CREATE TABLESPACE user_stu DA TAFILE 'h:/oracle/oradata/orcl/user_stu.dat' SIZE 20M DEFAULT STORAGE ( INITIAL 10K NEXT 50K MINEXTENTS 1 MAXEXTENTS 99 PCTINCREASE 10 ) ONLINE ; 例2:建立一个新的表空间,具有两个数据文件: CREATE TABLESPACE CRM_TAB DA TAFILE 'h:/oracle/oradata/orcl/crm01.dbf' size 10 MB,'h:/oracle/oradata/orcl/crm02.dbf' size 10 MB; (3)对一个已存在的表空间追加新数据文件: 例1 ALTER TABLESPACE user_stu Add datafile 'H:/oracle/oradata/orcl/user_stu01.dbf' size 30M; 例2 为表空间增加数据文件 ALTER TABLESPACE users ADD DATAFILE 'userora1.dbf ' SIZE 10M ; (4)数据文件更名 ALTER TABLESPACE users

Oracle 改变重做日志位置或名称

Oracle 改变重做日志位置或名称 在所有后台进程中,LGWR进程活动最为频繁,它需要不断地将事务变化由重做日志缓冲区写入重做日志中。在数据库文件、控制文件和重做日志这3种文件中,重做日志的I/O操作最频繁。为了提高I/O性能,应将重做日志分布到I/O操作相对较少、速度最快的磁盘设备上。规划重做日志时,应将同一个日志组的不同日志成员尽可能地分布到不同磁盘上,以防止磁盘损坏而导致所有日志成员丢失。例如,假设在初始阶段,日志组二中的日志成员被放在同一块磁盘上,但是后来出于完全和性能方法的考虑,DBA为服务器新增加了一块磁盘,并且将日志组二中的一个日志成员移动到新磁盘上,此时就需要改变该日志成员的存放位置。 下面修改重做日志文件的名称和位置的具体操作步骤如下: (1)关闭数据库。 SQL> connect /as sysdba SQL> shutdown (2)复制或移动日志成员到目标位置。当闭数据库后,DBA就可以使用操作系统命令复制或移动日志成员到新位置。例如,修改原日志文件的名称。 (3)重新启动数据库实例,加载数据库,但是不打开数据库。 SQL> startup mount; (4)使用带RENAME FILE子句的ALTER DATABASE语句重新设置重做日志文件的路径和名称。 SQL> alter database rename file 2 'd:\app\Administrator\oradata\orcl\redo03.log', 3 'd:\app\Administrator\oradata\orcl\redo02.log', 4 'd:\app\Administrator\oradata\orcl\redo01.log' 5 to 6 'd:\app\Administrator\oradata\orcl\redo03a.log', 7 'd:\app\Administrator\oradata\orcl\redo02a.log', 8 'd:\app\Administrator\oradata\orcl\redo01a.log'; 数据库已更改。 (5)打开数据库 SQL> alter database open; (6)备份控制文件 重新启动数据库后,对联机重做日志文件的修改将生效。通过查询数据字典V$LOGFILE 可以获知数据库现在所使用的重做日志文件。

Oracle 使用RMAN备份数据库文件和归档日志

Oracle 使用RMAN 备份数据库文件和归档日志 当数据库打开时,可以使用RMAN BACKUP 命令备份如下对象: ● 数据库 ● 表空间 ● 数据文件 ● 归档重做日志 ● 控制文件 ● 备份集 在使用BACKUP 命令备份数据文件时,可以为其设置参数,定义备份段的文件名,文件数和每个输入文件的通道。 1.备份数据库 如果备份操作是在数据库被安全关闭之后进行的,那么对整个数据库的备份是一致的;与之相对应,如果数据库是在打开状态下对整个数据库进行的备份,则该备份是非一致的。非一致性备份整个数据库的操作步骤如下: (1)启动RMAN 并连接到目标数据库,输入BACKUP DATABASE 命令备份数据库。在BACKUP 命令中可以指定FORMA T 参数,为RMAN 生成的每个备份片段指定一个惟一的名称,以及存储的位置。 C:\>rman target system/admin nocatalog RMAN> backup database format 'f:\oracle_backup\ora11g_%Y_%M_%D_%U.bak' maxsetsize=2G; 还可以为BACKUP 命令指定TAG 参数,为备份片段定义备份标签。例如: RMAN>backup database tag='weekly_backup'; (2)如果建立的是非一致性备份,那么必须在完成备份后对当前的联机重做日志进行归档,因为在使用备份恢复数据库需要使用当前重做日志中的重做记录。 RMAN>sql'alter system archive log current'; (3)在RMAN 中执行LIST BACKUP OF DA TABASE 命令,查看建立的备份集与备份片段的信息。 RMAN> list backup of database; 如果需要对整个数据库进行一致性备份,则首先需要关闭数据库,并启动数据库到MOUNT 状态。例如: RMAN>shutdown immediate RMAN>startup mount RMAN>backup database format='f:\oracle_backup\%d_%s.bak'; RMAN>alter database open; 如果想要对某个表空间以外的整个数据库进行备份,则可以使用用如下一组命令: //设定在备份数据库的时候排除USER01; RMAN>configure exclude for tablespace user01; 注 意 BACKUP 命令只能对数据文件、归档重做日志文件和控制文件进行备份,如果要对其他重要的数据文件进行备份,则可以在操作系统中对其进行物理备份。

Oracle丢失归档日志文件的数据库恢复方法

Oracle丢失归档日志文件的数据库恢复方法 丢失归档日志文件的数据库恢复方法,从一个不能正常打开的数据库(由于一个/多个数据库文件与其他文件不一致)中提取数据。场景:一个磁盘损坏了并且丢失了一个数据库文件。从一周前的热备转储数据文件,不幸的是丢失了几个归档日志文件。但是有问题的数据文件包含了最重要的表,如何能够挽救数据呢? 每个DBA都知道这是有问题的,一定会丢失数据,因为某些事务丢失了,问题是会丢失多少数据?Oracle 使用硬线路位置并且由于存在完整性约束问题,因此不允许正常打开数据。但是如果使用非常规的方法让Oracle删除其硬线路属性,那么应该能够提取尽可能多的数据。而通常这会比损失全部数据要好很多。 详细过程通常如果仅仅丢失了堆表的索引,或者某些能够很容易重建的数据,那么最好的方法应该是删除表空间并重建这些对象然后重新输入。但是如果丢失的数据文件包含了重要数据并且很难恢复,而且只有前一次的备份却又丢失了某些归档日志,那么用户可能希望能够尽可能多的从有问题的表空间恢复数据并且删除和重建表空间。 主要的步骤如下: 1. 对当前拥有的数据进行一个冷备; 2. 转储丢失的数据库文件备份并应用可以应用的日志; 3. 设置未文档化的初始化参数,其允许你在当前状态打开数据库; 4. 执行exp并提取全部可以从有问题的表空间提取的数据; 5. 从先前的冷备转储数据库; 6. 使毁坏的数据文件offline; 7. 执行exp并提取第4步没有提取的额外数据; 8. 在一次从冷备转储; 9. 删除有问题的表空间; 10. 重建有问题的表空间; 11. 使用第四步和第七步提取的数据重建数据; 使用案例描述:ORDTAB表空间的一个数据文件ordtab03.dbf毁坏,其包含很多ORDERS表的分区,数据文件热备于July 4,2004,July 4—至今的某些归档日志丢失。 第一步:备份数据库第一步的任务是冷备当前拥有的任何数据文件,在线重做日志,和控制文件。如果丢失了一个/多个数据文件但是数据库仍然是open的,那么对每个剩余的数据文件进行热备并确保备份期间/之后的归档被安全保存。

Oracle大型数据库 实验五 重做日志文件、表空间管理操作

集美大学计算机工程学院实验报告 课程名称:大型数据库技术班级:计算12实验成绩: 指导教师:杨艳华姓名: 实验项目名称:重做日志文件、表空间管理操作学号:20上机实践日期:2014.12实验项目编号:实验五组号:上机实践时间:2学时 一、实验目的 1、理解重做日志文件的基本概念; 2、掌握重做日志文件组及其成员的添加、移动、删除等操作; 3、掌握归档重做日志的设置; 4、理解表空间的基本概念和分类; 5、掌握永久表空间的创建和管理操作; 6、掌握还原表空间的管理。 二、实验要求 1、完成重做日志文件组及其成员文件的管理操作; 2、完成归档重做日志的设置; 3、完成永久表空间和临时表空间的管理操作; 4、完成还原表空间的管理。 三、实验内容 (1)查看数据库当前重做日志文件组及成员的设置情况,然后,为数据库添加一组重做日志,组内包含两个成员文件,分别为redo4a.log和redo4b.log,大小分别为5MB。

(2)为上面新添加的那组重做添加一个日志成员,命名为“redo4c-姓名简拼.log”,实现重做日志的多路存储。 (3)把数据库从非归档模式修改为归档模式,之后创造条件让数据库立即归档,并检查归档是否成功 (4)创建永久表空间 ?创建一个表空间名为“TB+学号后三位+姓名简拼” ?空间的大小为50M ?表空间包括两个数据文件:表空间名_01.dbf(30M)和表空间名_02.dbf(20M),大 小均不能自动扩展 ?数据文件均存放在Oracle的安装根目录下 ?区的分配方式为统一大小,192K ?段管理采用自动方式

(5)改变上述永久表空间的可用性 ?先将表空间脱机 ?再进行联机 (6)创建一个4K的非标准块表空间,命名为“tbf+学号后三位+姓名简拼”,数据文件存储在”\oradata\orcl\姓名简拼”目录下,大小为(学号后三位*2)M。 (7)创建一个临时表空间 ?名为“TTB+学号后三位+姓名简拼” ?包含一个数据文件:表空间名_01.dbf,大小为(学号后三位*2)M,存储 在”\oradata\orcl\姓名简拼”目录下,文件的大小可以自动扩 展。 ?将该临时表空间设置为数据库的默认临时表空间 ?再将该临时表空间设置为scott用户的默认临时表空间 ?查询相关的数据字典验证上面的设置。

Oracle案例:损坏控制文件的恢复方法

Oracle案例:损坏控制文件的恢复方法 一:损坏单个控制文件 损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个,而且所有的控制文件都互为镜相,只要拷贝一个好的控制文件替换坏的控制文件就可以了。1、控制文件损坏,最典型的就是启动数据库出错,不能mount数据库 SQL>startup ORA-00205: error in identifying controlfile, check alert log for more info 查看报警日志文件,有如下信息 alter database mount Mon May 26 11:59:52 2003 ORA-00202: controlfile: 'D:\Oracle\oradata\chen\control01.ctl' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件。 2、停止数据库 SQL>shutdown immediate 3、拷贝一个好的控制文件替换坏的控制文件或修改init.ora中的控制文件参数,取消这个坏的控制文件。 4、重新启动数据 SQL>startup 说明: 1、损失单个控制文件是比较简单的,因为数据库中所有的控制文件都是镜相的,只需要简

单的拷贝一个好的就可以了 2、建议镜相控制文件在不同的磁盘上 3、建议多做控制文件的备份,长期保留一份由alter database backup control file to trace产生的控制文件的文本备份 二:损坏全部控制文件 损坏多个控制文件,或者人为的删除了所有的控制文件,通过控制文件的复制已经不能解决问题,这个时候需要重新建立控制文件。 同时注意,alter database backup control file to trace可以产生一个控制文件的文本备份。 以下是详细重新创建控制文件的步骤 1、关闭数据库 SQL>shutdown immediate; 2、删除所有控制文件,模拟控制文件的丢失 3、启动数据库,出现错误,并不能启动到mount下 SQL>startup ORA-00205: error in identifying controlfile, check alert log for more info 查看报警日志文件,有如下信息 alter database mount Mon May 26 11:53:15 2003 ORA-00202: controlfile: 'D:\Oracle\oradata\chen\control01.ctl'

ORACLE使用数据文件恢复数据库

ORACLE使用数据文件恢复数据库 一、问题描述 Oracle控制文件丢失,数据文件完整,导致数据库实例不能启动。在修改数据库服务器的计算机名称、IP地址后,修改listener.ora和tnsnames.ora文件中的HOST地址后不能启动数据库实例或启动后不能登录使用数据,以及未能查找并解决数据库启动失败原因时可以通过重建控制文件的方式对数据库实例进行恢复。 二、恢复方法 1、恢复前准备工作 1)备份数据文件,文件路径为%ORACLE_NOME%/oradata/xxxx(xxxx为数据库实例)。 2)备份ORACLE安装路径下的Oracle\product\10.2.0\admin\xxxx\bdump\alert_xxxx.log (xxxx为数据库实例)。 3)ORACLE安装文件 2、恢复步骤 1)安装oracle数据库,安装时不要创建数据库实例 2)创建数据库实例:安装完成后创建数据库实例,实例名与原数据库实例相同,并创建监听服务。 3)拷贝数据文件:停止oracle相关服务,拷贝备份的数据文件到新安装的oracle数据库安装位置对应路径下,删除新成的控制文件及日志文件(%ORACLE_NOME%/oradata/ 下所有文件)、完成后重启oracle相关服务。 4)准备重建控制文件脚本:打开事先备份的alert_xxxx.log文件,查找最后一个create controlfile语句并修改以下几部分。 a)若该语句中包含NORESETLOGS,则将其修改为RESETLOGS;原因是重做日志文件 已经丢失。 b)LOGFILE段是指定重做日志文件到期望的文件位置。 c)DATAFILE段是指定到数据文件的实际文件位置。不能包含临时表空间用到的文件, 否则报错(ora-01503,ora-01160,ora-01110)。 注意:create controlfile语句中如果包含NOARCHIVELOG,则为非归档模式,如为 ARCHIVELOG,则为归档模式,没有则保持没有。 5)重建控制文件 a)打开sqlplus,使用DBA(sys)用户登录到数据库 示例:打开cmd,执行sqlplus /nolog 回车 SQL>Conn sys/password as sysdba b)关闭数据库 示例:SQL>Shutdown immediate; c)启动数据库,但不挂载数据文件 SQL>Startup nomount;

ORACLE控制文件损坏处理办法

ORACLE控制文件损坏处理办法 --关于ORACLE控制文件错误的处理 处理方法一.更改INIT.ORA中的参数,删除不能使用的controlFile ; 处理方法二. 先备份ORACLE安装目录和所有自定义创建的数据文件,再按照以下步骤进行试验处理。进入MS-DOS窗口,适用SVRMGRL工具; CONNECT INTERNAL/ORACLE ; STARTUP NOMOUNT; CREATE CONTROLFILE REUSE DA TABASE "ORCL" NORESETLOGS NOARCHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 32 MAXINSTANCES 16 MAXLOGHISTORY 1815 LOGFILE #此处根据实际情况处理 GROUP 1 'D:\ORACLE\ORADATA\ORCL\REDO03.LOG' SIZE 1M, GROUP 2 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG' SIZE 1M, GROUP 3 'D:\ORACLE\ORADATA\ORCL\REDO01.LOG' SIZE 1M DA TAFILE #此处根据实际情况处理 'D:\ORACLE\ORADA TA\ORCL\SYSTEM01.DBF', 'D:\ORACLE\ORADA TA\ORCL\RBS01.DBF', 'D:\ORACLE\ORADA TA\ORCL\USERS01.DBF', 'D:\ORACLE\ORADA TA\ORCL\TEMP01.DBF', 'D:\ORACLE\ORADA TA\ORCL\TOOLS01.DBF', 'D:\ORACLE\ORADA TA\ORCL\INDX01.DBF', 'D:\ORACLE\ORADA TA\ORCL\DR01.DBF', 'D:\ORACLE\ORADA TA\ORCL\SDE.ORA', 'D:\ORACLE\ORADA TA\ORCL\GIS.ORA', 'D:\ORACLE\ORADA TA\ORCL\OEM_REPOSITORY.ORA' CHARACTER SET ZHS16GBK ; # Take files offline to match current control file. # 可以不执行以下DROP ALTER DATABASE DATAFILE 'D:\ORACLE\ORADA TA\ORCL\USERS01.DBF' OFFLINE DROP; ALTER DATABASE DATAFILE 'D:\ORACLE\ORADA TA\ORCL\TOOLS01.DBF' OFFLINE DROP; ALTER DATABASE DATAFILE 'D:\ORACLE\ORADA TA\ORCL\INDX01.DBF' OFFLINE DROP; ALTER DATABASE DATAFILE 'D:\ORACLE\ORADA TA\ORCL\DR01.DBF' OFFLINE

Oracle Archive log

Oracle归档日志(Archive Log 一) 归档日志即重做日志的备份,使用归档日志的目的是为了实现介质恢复。 一.日志操作模式 1.Noarchivelog(非归档模式) 不保存重做日志。 不能在open状态下进行物理备份;要定期执行完全数据库备份;只能将数据库恢复到上次的完全备份点。 2.Archivelog 当进行日志切换时,ARCH进程会将重做日志的内容复制到归档日志中。 在归档重做日志前,新事务变化不能覆盖旧事务变化。 可以在open 状态下进行物理备份。 可以将数据库恢复到失败前的状态。 可以是用备份数据库与主数据库保持同步。 二.开启归档 1.改变日志操作模式 shutdown immediate; startup mount; alter database archivelog; alter database open; 修改日志操作模式后,必须重新备份数据库 2.归档重做日志

1).手工归档 alter system archive log all; 2).自动归档 设置初始化参数:log_archive_start=true shutdown immediate; startup pfile=. 3).检查日志操作模式 archive log list; 三.指定归档位置 1.使用log_archive_dest 1).设置归档目录 log_archive_dest log_archive_duplex_dest 2).设置归档日志格式 2.使用log_archive_dest_n 1).指定归档位置 log_archive_dest_1=’location=f:\arc1’log_archive_dest_3=’service=standby’2).设置其他初始化参数 log_archive_dest_state_1=enable log_archive_dest_state_3=defer

Oracle 增加重做日志

Oracle 增加重做日志 如果发现LGWR经常处于等待状态,则就需要考虑添加日志组及其成员,一个数据库最多可以拥有MAXLOGFILES个日志组。增加重做日志是使用ALTER DA TABASE语句完成的,执行该语句时要求用户必须具有ALTER DATABASE系统权限。 1.增加重做日志组 当管理重做日志时,为防止后台进程LGWR等待写入日志组,DBA必须选择合适的日志组个数。要增加重做日志组,可以使用带ADD LOGFILE子句的ALTER DATABASE语句。例如,下面的语句向数据库中添加了一个新的重做日志组: SQL> alter database add logfile 2 ('d:\app\Administrator\oradata\orcl\redo04.log', 3 'e:\oradata\orcl\redo04b.log') 4 size 10m; 数据库已更改。 新增的重做日志组具有两个成员,每个成员文件的大小均为10MB。一般情况下,日志文件的大小在10MB到50MB之间,Oracle默认的日志文件大小为50MB。 如果在ALTER DA TABASE ADD LOGFILE语句指定GROUP子句,Oracle将自动为新建的重做日志组设置编号,例如:下面的语句可以在创建日志组时指定为第4组:SQL> alter database add logfile group 4 2 ('d:\app\Administrator\oradata\orcl\redo04.log', 3 'e:\oradata\orcl\redo04b.log') 4 size 10m; 数据库已更改。 使用组号可以更加方便地管理重做日志组,但是,对日志组的编号必须为连续的,不要跳跃式地指定日志组编号。也就是说,不要将组号编为10,20,30等这样不连续的数。否将会耗费数据库控制文件中的空间。 如果要创建一个非复合的重做日志文件,则可以使用如下的语句: alter database add logfile 'd:\app\Administrator\oradata\orcl\redo01.log' reuse; 如果要创建的日志文件已经存在,则必须在ALTER DTABASE语句中使用REUSE子句,覆盖已有的操作系统文件。在使用了REUSE的情况下,不能再使SIZE子句设置重做日志文件的大小,重做日志文件的大小将由已存在日志文件的大小决定。 2.创建日志成员文件 建立日志组时,至少要为日志组指定一个日志成员。为了防止日志成员损坏而导致日志组无法使用,Oracle建议每个日志组至少包含两个或两个以上的日志成员。如果日志组只有一个日志成员,并且该日志成员出现损坏,那么当后台进程LGWR切换到该日志组时,Oracle 会停止工作,并对该数据库执行不完全恢复。 为重做日志组添加新的成员时,只需要使用带ADD LOG MEMBER子句的ALTER DA TABASE语句即可。例如,下面示例为第1组重做日志添加了一个新的成员日志文件:SQL> alter database add logfile member

Oracle 建立控制文件

Oracle 建立控制文件 在一般情况下,如果使用了复合控制文件,并且将各个控制文件分别存储在不同的磁盘中,则丢失全部控件文件的可能性将非常小。但是,如果数据库的所有控制文件全部丢失,这时惟一的补救方法就是以手动方式重新创建控制文件。 另外,如果DBA需要改变数据库的某个永久性参数,也需要重新创建控制文件。永久性参数是在创建数据库时设置的一些参数,主要包括:数据库名称、MALOGFILES(最大的重做日志文件数)、MAXLOGMEMBERS(最大的重做日志组成员数)等。 下面介绍创建新的控制文件的命令CREATE CONTROLFILE语句的基本用法,具体步骤: (1)查看数据库中所有的数据文件和重做日志文件的名称和路径。 在创建新控制文件时,首先需要了解数据库中的数据文件和重做日志文件。如果数据库中所有的控制文件和重做日志文件都已经丢失,这时数据库已经无法打开,因此也就无法来查询数所字典获得数据文件和日志文件的信息,这时惟一的办法就是查看警告文件中的内容。如果数据库可以打开,那么可以通过执行下面的查询来生成文件列表:SQL> select member from v$logfile; SQL> select name from v$datafile; SQL> select name from v$controlfile; 如果既无法打开数据库,又无法打开可靠的文件列表,那么就只能够用手工方法通过查找操作系统文件来制作文件列表。 (2)关闭数据库。 如果数据库处于打开状态,则可能采取正常模式关闭数据库。 SQL> connect as sysdba …. SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 (3)在操作系统级别备份所有的数据文件和重做日志文件。 在使用CREATE CONTROLFILE语句创建新的控制文件时,如果操作不当可能会损坏数据文件和日志文件,因此,需要事先对其进行备份。 (4)启动实例,但是不加载数据库。 在建立控制文件时,要求实例处理NOMOUNT状态,即不打开控制文件。 SQL> startup nomount ORACLE 例程已经启动。 Total System Global Area 401743872 bytes Fixed Size 1333480 bytes Variable Size 255854360 bytes Database Buffers 138412032 bytes Redo Buffers 6144000 bytes

Oracle 删除重做日志

Oracle 删除重做日志 当日志成员出现损坏或丢失时,后台进程LGWR不能将事务变化写入到该日志成员中,在这种情况下应该删除该日志成员;当日志组尺寸不合适时,需要重新建立新日志组,并删除原有的日志组。删除重做日志是使用ALTER DATABASE语句来完成的,执行该语句要求数据库用户必须具有ALTER DATABASE系统权限。 1.删除日志成员 要删除一个成员日志文件,只需要使用带DROP LOGFILE MEMBER子句的ALTER DA TABASE语句。例如,下面的语句将删除4号日志组的第2个成员: SQL> alter database drop logfile member 2 'e:\oradata\orcl\redo04b.log'; 数据库已更改。 上面语句只是在数据字典和控制文件中将重做日志成员的信息删除,并不会在操作系统中物理地删除相应的文件,这需要确认删除成功后手工在操作系统中删除文件。 2.删除日志组 由于已经存在日志组的尺寸不能改变,所以当日志组尺寸不合适时,就需要重新建立日志组并指定合适尺寸,然后删除不符合尺寸要求的日志组。在删除一个日志组时,其中的成员文件也将全部被删除。在删除日志组时,首先需要考虑如下几点: ●无论日志组中有多少个成员,一个数据库至少需要两个日志组。 ●只能删除处于INACTIVE状态的日志组。如果要删除CURRENT状态的重做日志 组,则必须执行一个手工切换日志,将它切换到INACTIVE状态。 ●如果数据库处于归档模式下,在删除重做日志组之前必须确定它已经被归档。 因此,在删除重做日志组之前,可以查询V$LOG动态性能视图来获知各个重做日志组的状态以及它是否已经归档。例如: SQL> select group#,archived,status from v$log; GROUP# ARC STATUS ---------- --- ---------------- 1 NO CURRENT 2 NO INACTIVE 3 NO INACTIVE 4 YES UNUSED 要删除一个重做日志组,需要使用带有DROP LOGFILE子句的ALTER DATABASE语句。例如,下面的语句可以删除4号重做日志组: SQL> alter database drop logfile group 4; 同样,该语句只是在数据字典和控制文件中将重做日志组的记录信息删除,并不会物理地删除操作系统中相应的文件,这需要手工在操作系统中将相应的文件删除。 3.清空重做日志组 清空重做日志文件就是将重做日志文件中的内空全部初始化,这相当于删除该重做日志文件,然后再重新建立它。即使数据库只拥有两个重做日志组,或者要清空的重做日志组正处理CURRENT状态,在这些状态下都可以成功执行清空操作。

相关文档
最新文档