全部博文(535)
分类: Oracle
2012-09-15 17:10:22
在此之前搞清楚每个文件的作用,一定要掌握oracle的基本概念。
一、 基本文件的备份恢复
1、logfile多元化和备份恢复
日志查询
select * from v$logfile;
select * from v$log;
手工切换日志
alter system switch logfile;
手工检查点
alter system checkpoint;
告警日志文件
show paramter dump
$ORACLE_BASE/admin/orcl/bdump
tail -f alert*.log
多元化日志文件
alter database add logfile member '/opt/ora10g/oradata/orcl/redo01B.log' to group 1;
alter database add logfile member '/opt/ora10g/oradata/orcl/redo02B.log' to group 2;
alter database add logfile member '/opt/ora10g/oradata/orcl/redo03B.log' to group 3;
日志文件坏了,修复日志文件(丢失了,也可以用这个恢复)
alter database clear logfile group 1;
如果未归当
alter database clear unarchived logfile group 2;
添加成员
alter database add logfile group 4;
alter database add logfile member '/opt/ora10g/oradata/orcl/redo04.log' to group 4;
删除日志组
alter database drop logfile group 4;
删除日志组成员
alter database drop logfile member '/opt/ora10g/oradata/orcl/redo01B.log';
2、参数文件备份恢复
参数文件(10g中的参数文件)
主要用来记录数据库的配置文件,在数据库启动时,Oracle读取参数文件,并根据参数文件中的参数设置来配置数据库。
如内存池的分配,允许打开的进程数和会话数等。
两类参数文件:
pfile:文本文件的参数文件,可以使用vi,vim等编辑器修改,文件名通常为init
spfile:二进制的参数文件,不能直接修改,只能存放在Oracle服务器端,可以使用EM或指令来修改
(alter system|session set parameter_name = values <>),
文件名通常为spfile
优先级别:
Oracle 启动读取参数文件的顺序,如果个文件都不存在,则Oracle会报错
spfile
参数文件的路径:*/
spfle:$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora
pfile(9i):$ORALCE_HOME/dbs/init$ORALCE_SID.ora /*10g以后一般不用init
pfile(10g):$ORALCE_BASE/admin/$ORACLE_SID/pfile/*仅当数据库初始化时使用*/
pfile:$ORACLE_HOME/dbs/init.ora /*默认*/
/*
参数文件之间的转化
spfile 转化为pfile
pfile 转换为spfile
从spfile来生成pfile
create pfile from spfile ,执行完毕后,pfile将保存为$ORACLE_HOME/dbs/init$ORACLE_SID.ora
也可以指定pfile的路径:create pfile = '
由pfile生成spfile
create spfile from pfile
create spfile from pfile = '
create spfile = '
11g中的新指令,从memeory中生成
create spfile = '
用pfile文件备份二进制的启动参数文件
create pfile from spfile;
当spfile文件丢失或损坏时可以
startup pfile='...INIT
create spfile from pfile
startup force
show parameter spfile
3、控制文件备份恢复
多元化控制文件
控制文件记录和维护数据库的物理结构,而且还记录了备份和恢复有关的信息,如果数据库只有一个控制文件,
那么当出现介质失败同时控制文件也损坏的时候,将导致无法装载数据库,此时如果没有控制文件备份,那会是一场灾难,
所以要多元化控制文件,而且最好分布在不同的磁盘上。
查询已存的控制文件:
SQL>select name from v$controlfile;
初始化参数control_files:
Alter system set control_files='/disk1/ora10g/oradata/orcl/control01.ctl','/disk1/ora10g/oradata/orcl/control02.ctl','/disk1/ora10g/oradata/orcl/control03.ctl','/disk1/ora10g/control01.ctl' scope=spfile;
关闭数据库:
SQL>shutdown immediate;
复制控制文件:
SQL>host cp /disk1/ora10g/oradata/orcl/control01.ctl /disk1/ora10g/control01.ctl
启动数据库:
SQL>startup
备份控制文件
a、将控制文件备份为二进制文件
SQL>alter database backup controlfile to 'i:\oracle\backup\control.bkp';
这种方式直接cp回去就ok
b、将控制文件备份为文本文件(备份到oracle\base\admin\sid\udump目录下的跟踪文件中,将在跟踪文件中生成一个SQL脚本)
恢复也很简单,找到trace文件,打开找到类似下面内容的:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
'/disk1/ora10g/oradata/orcl/redo01.log',
'/disk1/ora10g/oradata/orcl/redo01B.log'
) SIZE 50M,
GROUP 2 (
'/disk1/ora10g/oradata/orcl/redo02.log',
'/disk1/ora10g/oradata/orcl/redo02B.log'
) SIZE 50M,
GROUP 3 (
'/disk1/ora10g/oradata/orcl/redo03.log',
'/disk1/ora10g/oradata/orcl/redo03B.log'
) SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/disk1/ora10g/oradata/orcl/system01.dbf',
'/disk1/ora10g/oradata/orcl/undotbs01.dbf',
'/disk1/ora10g/oradata/orcl/sysaux01.dbf',
'/disk1/ora10g/oradata/orcl/users01.dbf',
'/disk1/ora10g/oradata/orcl/example01.dbf'
CHARACTER SET WE8ISO8859P1
;
直接创建为sql文件,然后通过@调用。
然后alter database open rsetlogs;