ORACLE第10天

ORACLE备份和恢复

<1>逻辑备份
  不用去拷贝数据库的物理文件
  备份逻辑上的结构
  外部的工具:导出和导入的工具
  DOS下的命令 cmd下执行
    导出exp  export缩写形式

查看帮助 exp help=y

    使用参数文件导出
     exp parfile=c:\abc.par
  >>>abc.par的内容
a)scott用户连接导出自己的所有对象   
      userid=scott/tiger --连接的用户scott
      file=c:\a1.dmp  --导出的文件的名字a1.dmp
          --导出了scott用户的所有对象

b)用system连接来导出scott下的所有对象 
     exp parfile=c:\sys.par
      >>>>sys.par的内容
       userid=system/manager
       file=c:\b1.dmp
       owner=(scott)  --导出scott用户的所有对象
  导出多个用户的数据
  建立一个测试用户 test
  
    grant connect,resource
     to test identified by t123;
  
    alter user test
       default tablespace users
       temporary tablespace temp;
 
    create table student(
      stu_id number(4) primary key,
      stu_name varchar2(20),
      stu_score number(2)
   );
   insert into student values (1000,
      'Mike',95);
   insert into student values (1001,
      'John',90);

 导出scott和test下的所有对象????
 >>>userid=system/manager
    file=c:\st.dmp
    owner=(scott,test)

 导出scott下的emp,dept表????
 >>>userid=system/manager
    file=c:\st.dmp
    tables=(scott.emp,scott.dept,test.student)

 导出整个数据库(备份整个数据库)
  必须用超级用户 system ,sys
exp system/manager file=c:\system.dmp full=y feedback=1000
或者
exp parfile=c:\sys.par
>>>sys.par
 userid=system/manager
 file=c:\system.dmp
 full=y 

比较全的一个导出的参数文件
>>>sys.par
   userid=system/manager
   file=c:\aa.dmp
   buffer=1024000  --缓冲
   rows=y          --是否导出记录
   compress=y      --extent是否压缩
   grants=y        --grant语句是否导出
   indexes=y       --导出索引
   full=y          --全库导出
   feedback=3      --显示导出进度每3行

导出表scott.dept中部门编号是40的记录
 >>>sys.par
   userid=system/manager
   file=c:\sys.dmp
   tables=(scott.emp)
   query="where deptno=10"

导出表scott.emp中的记录
 >>>sys.par
   userid=system/manager
   file=c:\sys.dmp
   tables=(scott.emp)
   feedback=3  --每3行记录显示一个点进度

如何把导出的数据导入到数据库中进行恢复??
  imp    import缩写形式
  dos命令
   imp help=y 查看帮助

 <1>把scott下的表emp导出 ,
 然后删除表中的内容(truncate table emp),
 利用导出的文件来恢复??
  a)导出
   exp parfile=c:\sys.par
  >>> sys.par
   userid=system/manager
   file=c:\emp.dmp
   tables=(scott.emp)
 
  b)删除
   truncate table emp;  --删数据
   或者
   drop table emp;  --删除结构

  ( delete from emp;  --删数据可以恢复)

  c)恢复
  imp prafile=c:\im.par;
  >>>im.par
   userid=system/manager
   file=c:\emp.dmp
   fromuser=scott    --从哪个用户来恢复
   show=y            --显示导入文件中的SQL语句

 <2>scott下的对象全部复制到test用户下
  (克隆用户scott)
  a)导出scott用户
   exp parfile=c:\sys.par
   >>>sys.par
     userid=system/manager
     file=c:\scott.dmp
     owner=(scott)

  b)导入scott.dmp文件中的内容到test用户下
    imp parfile=c:\im.par
    >>>im.par
     userid=system/manager
     file=c:\scott.dmp
     fromuser=scott
     touser=test

  <3>scott用户导出数据后
     用户scott被删除了
     怎么来恢复??????
   a)导出scott用户
     exp parfile=c:\sys.par
     >>>sys.par
      userid=system/manager
      file=c:\scott.dmp
      owner=(scott)
  
  b)删除scott用户
   drop user scott cascade; 


  c)恢复
   先建立用户scott
   grant connect,resource to scott
    identified by tiger;
 
   alter user scott
     default tablespace users
     temporary tablespace temp;

   然后导入
  imp parfile=c:\im.par
  >>im.par
   userid=system/manager
   file=c:\scott.dmp
   fromuser=scott

<4>如何进行全库导入
  imp system/manager
file=c:\all.dmp full=y ignore=y
  full   ---全库
  ignore  ---忽略导入过程中的错误

如何建立一个新的数据库 ?????
  使用DATABASE CONFIGURATION ASSISTANT

 备份的第二种模式 物理备份
   拷贝数据文件
   数据文件 + 归档日志文件 = 整个数据库
   在数据库不关闭的情况下备份(热备份)
 <1>数据库可以关闭的物理备份(冷备份)
     a)关闭数据库
     b)拷贝数据文件
     c)打开数据库
   数据库工作在归档和非归档模式都可以
  a)关闭数据库
    connect system/manager
   
    shutdown immediate;

  b)拷贝文件
     数据文件   v$DATAFILE
     控制文件   v$controlfile
     日志文件   v$
     临时数据文件
 

  c)打开数据库
     startup;
 
写一个脚本文件 执行上述功能
   cold_back.txt

 如何用冷备份来恢复数据库
   用备份的文件来覆盖原来的文件,就OK

<2>数据库不能关闭的情况下作热备份
  (24x7运行的系统)
   a)设置数据库工作在归档模式下
   b)备份表空间
   c)作一次日志切换 (把在热备份过程中产生的数据写到归档日志中)
   d)备份归档日志文件

--数据库有哪些表空间
 select tablespace_name from dba_tablespaces
     where status <> 'READ ONLY';
--每个表空间对应的数据文件
  select file_name from dba_data_files
      where tablespace_name='SYSTEM';

--要拷贝SYSTEM表空间所对应的数据文件
--使表空间system处于热备份状态
alter tablespace system  begin backup;
--拷数据文件
host copy D:\ORACLE\ORADATA\ACCP\SYSTEM01.DBF c:\backup
--关闭热备份状态
alter tablespace system end backup;

--
 recover database;

--数据库损坏的情况下来恢复
 recover database datafile 4;
  恢复第4个数据文件

你可能感兴趣的:(数据结构,oracle,C++,c,C#)