数据库学习(整理)----6--Oracle如何快速备份和多次备份数表数据

时间:2021-09-06 07:02:04

1、说明:

    这里假设一种应用场景!

假设,银行系统中有大量的数据需要及时备份,如何才能快速高效呢!

   条件需求:

      (1)、不能设置同步锁(设置的会影响银行正常业务进行!使得银行系统处于维护状态,这是不允许的!)

      (2)、尽量高效,因为银行中的数据是海量的,一般的SQL语句的效率不能够满足高性能!

      (3)......

2、解决方案:

    1、备份结果集成一个新的备份表:

      说明:这里备份的是一个结果集!

      SQL语句:

          create table emp_bak

          (

            select * from emp

          );

     2、如何备份一个空表结构:

       SQL语句:         

          create table emp_bak

          (

            select * from emp

            where 1 <> 1

          );

    3、第一次备份之后,若需要再次备份数据:

         SQL语句:

          insert into emp_bak

          (

            select * from emp where rownum<=10

          );

    4、如何判断接下来的备份是不是第一次备份数据!

       说明:

          为甚要做这种判断,很简单,因为第一次备份数据,是涵盖了创建备份的数据表的操做,之后的备份是一种新增操作,是不同的2中类型操做!所以需要区分!

      SQL语句:(这里我们需要查询视图,获取视图中备份数据的用户的对象,再去该用户下查询用户下的表!)

          1、select * from user_tables;    ----查询用户视图,在查到的数据结果集中找到需要验证的用户

          2、select * from  emp_bak;    ---去查询这个用户下的数据(也就是用户全下的表:),如果结果集中是空的(说明没有备份表的存在),那么就说明,以前没有备份数据表

          

    5、如何一条insert语句插入多条数据!

         说明:需要使用union关键字

          SQL语句:

              insert into emp

                    select 's001',11'Jason' from dual

                    union

                    select 's002',12,'Jack' from dual

                    union

                    select 's003',13,'Rose' from dual;

          执行以上的SQL语句就可以一次性添加三条数据!