热备份:在oracle正常运转没有shutdown情况下的备份,
两个前提条件
a,archivelog 归档模式打开
b,需要备份的表空间置于备份模式
1,SYS@ncbeta>archive log;
如果不是归档模式,就需要
归档模式-mount下操作
SQL> alter database archivelog;
补充:
logfile 日志文件
select GROUP#, STATUS, TYPE, MEMBER from v$logfile;
v$archived_log 归档日志
2,为了让表空间置于备份模式,需要查询修改表在那个表空间
>select owner,table_name,tablespace_name from dba_all_tables where taBLe_name='EMP';
或者在scott下
SCOTT@ncbeta>select TABLESPACE_NAME from tabs where TABLE_NAME = 'EMP';
补充 select tname from tab;--查看用户下的表
3,select * from v$backup;
11个not active的表空间(?)
查看表空间
select STATUS , TABLESPACE_NAME from dba_tablespaces;
12行,并不是和v$backup一一对应
ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;//重启数据库 ?干嘛的
4,将tablespace至于备份状态
SYS@jsce>alter tablespace users begin backup;
此时,file4的v$backup 改变
问:file#4和users 表空间是什么对应关系?
答:file#是数据文件号
SYS@ncbeta>select file#, name from v$datafile;
扩展:使用alter database begin backup;可以一次性将所有tablespace至于备份模式
5,拷贝(备份)上面的数据文件
select * from dba_data_files 可以看到表空间在那个数据文件
6,关闭表空间的归档模式
SYS@jsce>alter tablespace users end backup;
8,让数据库写入归档
>alter system checkpoint; (ALTER SYSTEM SWITCH LOGFILE;//切换日志,使当前日志归档)?另文为什么不是alter
database
9,更新数据
SCOTT@jsce>insert into emp values(1100,'sumsen','account',7902,to_date('2006-06-04','yyyy-mm-dd'),8800,null,20);
是不是我的undo_managerment为manual导致
问:热备份和回滚段、撤销表空间的关系?必须auto?
测试在manual 下将rollback online就可以insert
10,将users表空间脱机之后删除
问:这个时候是不是还要alter system checkpoint;?
为什么这个时候不让我删除USERS01.DBF,还有其他的表(表空间)在这个数据文件?
在shutdown之后的startup mount下删除(mount不访问数据文件)
alter database open
⊙﹏⊙b汗,直接打开了,没有报找不到dbf
问老师
此后,关闭数据库,从之前移动的users01 dbf复原,然后startuup 没有报错
1.9号 更新
在undo management为auto下
在scott下的users tablespace创建表
打算移走的时候不让offline
end backup归档模式之后可以了
新建表插入之后,alter system checkpoint,copy走dbf数据文件,再insert 一条数据
关闭数据库,删除USERS01.DBF,启动数据库,报错
这个时候关闭数据库,将备份的dbf复制到数据库,startup
提示需要数据文件4(即是刚才删掉的数据文件,DATA FILE 4只是 个代号,也有可能是DATA FILE 1,DATA FILE 2)
恢复只需使用recover datafile 4
查询时候报错,说数据库没有打开
使用alter database open
查询 有了五条信息,完全恢复