2010年8月23日 11:50:16        

 整理下关于数据库备份的学习

 数据库文件的备份

1、逻辑备份

方法就是采用命令将数据库的表导出,格式是dmp

逻辑备份: exp fyzh/fyzh@GISDB file=e:\detail.dmp tables=(b$gc_detailind_s,b$gc_detailind_s_sdogeom);--导出某表
逻辑恢复: IMP fyzh/fyzh@temp file=e:\detail.dmp tables=(b$gc_detailind_s,b$gc_detailind_s_sdogeom);--导入的表与导出的表结构要一致

2、物理备份

 冷备份:即到oracle的数据库目录下把数据进行拷备

 热备份

将热备份前先了解下归档与非归档日志

归档日志:如有三个日志,第一个写完,写到第二个,依此类推,写完了又回到第一个,在重新回到第一个开始写时将之前的日志备份;

非归档日志:而非归档日志再回到第一个日志写时是不做备份的,直接将之前的覆盖

修改日志为归档模式并备份

 1)首先用sys用户登录数据库用该命令archive log list查看下目前日志归档方式 (只能在sqlplus中查看,plsql中不识别该命令)

 2)然后关闭数据库:shutdown immediate

 3)启动实例:startup mount

注:可能第一次提示“ORA-01041: internal error 错误”,于是重新登录数据库并关闭数据库,再打开实例

4)设置数据库为归档日志模式:alter database archivelog;

5)打开数据库:alter database open;
6)确认数据库现在处于归档日志模式:archive log list;
7)备份数据库 拷备oracle的数据库目录下的表空间dbf

   alter tablespace gcomm begin backup;去拷备文件保存至某目录下
   alter tablespace end backup;--停止备份
   alter system archive log current;--将当前的日志归档
   alter system switch logfile;日志切换(因为有3个日志)
   alter system switch logfile; 再切换

8)如果某数据文件损坏,那么就会提示无法启动,因此就可以将拷备后的文件拷回去重新启动即可

 

归档模式与非归档模式 的更改

注意:无法在数据库运行的时候修改,需要首先停止数据库,然后mount数据的控制文件,再修改成归档模式,最后再启动数据文件使数据库完全启动起来

归档模式改为非归档模式:

SQL> shut immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 419430400 bytes
Fixed Size 789192 bytes
Variable Size 208663864 bytes
Database Buffers 209715200 bytes
Redo Buffers 262144 bytes
数据库装载完毕。
SQL> alter database noarchivelog;

这时会提示ORA-38774: 无法禁用介质恢复 - 闪回数据库已启用

继续执行以下语句:

SQL> alter database flashback off;

数据库已更改。

SQL> alter database noarchivelog;

数据库已更改。

 

SQL>alter database open;启动数据库

 

SQL> archive log list; --这是查看日志归档模式 发现已更改成功
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 407
当前日志序列 408

 

非归档模式改为归档模式:

 

 

将非归档模式改为归档模式步骤:
1)首先,把数据库停止:shutdown immediate
2) 再mount数据库: startup mount;
3) 接着再改变归档模式:alter database archivelog;
4) 然后再最后启动数据文件:alter database open;

 

 

查看归档日志的一些信息

--查看归档空间占用情况
SELECT space_limit / 1024 / 1024 / 1024 AS "Quota_G",
       space_used / 1024 / 1024 AS "Used_M",
       space_used / space_limit * 100 "Used_%",
       space_reclaimable AS reclaimable,
       number_of_files AS files
  FROM v$recovery_file_dest;
--修改归档日志空间大小
alter system set DB_RECOVERY_FILE_DEST_SIZE=3g;
--查看归档日志列表
sql> list archivelog all;
--显示日志操作模式
select log_mode from v$database
-- 显示归档日志信息
select name,sequence#,first_change# from v$archived_log
--显示归档日志位置
select dest_name, destination from v$archive_dest;

SQL> show parameter DB_RECOVERY_FILE_DEST;

-- 显示日志历史信息
select * from v$loghist;

 

删除归档日志
远程登录服务器
切换到oracle用户
输入rman命令
进入数据库 connect target
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';
然后yes即可删除

 

 控制文件备份

 alter database backup controlfile to trace;--备份路径就是安装目录下的D:\oracle\product\10.1.0\admin\temp\udump下最近备份的那个文件(格式trc),创建控制文件的脚本可以从那获取

--控制文件丢失后恢复办法
shutdown immediate;
@c:\create_ctl.txt --运行该创建控制文件的脚本即可重新创建控制文件

 --create_ctl.txt这个文件中的脚本就是从控制文件中获取的,即创建控制文件的脚本,将它放在c盘下

 create_ctl.txt内容如下:

 STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TEMP" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 908
LOGFILE
  GROUP 1 'E:\ORACLEDATA\TEMP\REDO01.LOG'  SIZE 10M,
  GROUP 2 'E:\ORACLEDATA\TEMP\REDO02.LOG'  SIZE 10M,
  GROUP 3 'E:\ORACLEDATA\TEMP\REDO03.LOG'  SIZE 10M
DATAFILE
  'E:\ORACLEDATA\TEMP\SYSTEM01.DBF',
  'E:\ORACLEDATA\TEMP\UNDOTBS01.DBF',
  'E:\ORACLEDATA\TEMP\SYSAUX01.DBF',
  'E:\ORACLEDATA\TEMP\USERS01.DBF',
  'E:\ORACLEDATA\TEMP\EXAMPLE01.DBF',
  'E:\ORACLEDATA\TEMP\GCOMM1.DBF',
  'E:\ORACLEDATA\TEMP\GCOMM2.DBF',
  'E:\ORACLEDATA\TEMP\GCOMM3.DBF',
  'E:\ORACLEDATA\TEMP\GCOMM4.DBF',
  'E:\ORACLEDATA\TEMP\GENLIN_O.DBF',
  'E:\ORACLEDATA\TEMP\GMAPDATA.DBF',
  'E:\ORACLEDATA\TEMP\XDGL1.DBF',
  'E:\ORACLEDATA\TEMP\IDX32_DFT.DBF',
  'E:\ORACLEDATA\TEMP\TBS32_DFT.DBF',
  'E:\ORACLEDATA\TEMP\INDX.DBF',
  'E:\ORACLEDATA\TEMP\TBS'
CHARACTER SET ZHS16GBK
;
RECOVER DATABASE
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER DATABASE OPEN;

 

日志丢失恢复办法
recover database until cancel;
alter database open resetlogs;

posted on 2010-08-23 14:50  蓝紫  阅读(1238)  评论(0编辑  收藏  举报