达梦8备份补充说明

今天本来打算写过存储过程,用来做表备份,可以指定表名称和备份集名称,结果发现一个奇怪的问题。

一、问题

backup table "DMHR"."CITY" backupset  'TAB_DMHR_CITY_2021_08_19_14_33_30';

执行上面这条语句做备份,在manager管理工具中查看效果如下:

 

 显示的名称和我指定的备份集名称不同。

二、查看备份目录

 

 备份目录中的名称是我指定的备份集名称。

三、查看 v$backupset

select * from v$backupset;

 

 因为我没有指定备份的名称,所以会自动生成备份的名称,'TAB_DMHR_CITY_2021_08_19_14_33_30'是备份集的名称,其实在做备份还原的时候,只会用到备份集的名称,所以我之前都没注意过备份的名称,也从来没指定备份的名称。

四、指定备份名称和备份集名称

backup table "DMHR"."CITY" to "TAB_DMHR_CITY_A" backupset 'TAB_DMHR_CITY_A';

 

 

 

 

 

 五、存储过程实现自定义备份表和备份集名称

--备份的(模式+表)名称 、备份集名称
CREATE OR REPLACE PROCEDURE back_by_name(table_name VARCHAR(50),backupset_name VARCHAR(500)) AS
DECLARE
    str_sql varchar := 'backup table '||table_name||' backupset ''' || backupset_name ||'''';
    BEGIN
    print str_sql;
        EXECUTE IMMEDIATE str_sql ;
    END;
/

call back_by_name('DMHR.CITY','TAB_DMHR_CITY_2021_08_19_13_38_06');

to 备份名称这种很少用,做备份还原指定备份集即可。

 六、既可以表备份也可以库备份

 

--备份的(模式+表)名称 、备份集名称
CREATE OR REPLACE PROCEDURE back_by_name(type varchar(50),table_name VARCHAR(50),backupset_name VARCHAR(500)) AS
DECLARE
    str_sql varchar := 'backup '||type||'  '||table_name||' backupset ''' || backupset_name ||'''';
    BEGIN
    print str_sql;
        EXECUTE IMMEDIATE str_sql ;
    END;
/

call back_by_name('table','DMHR.CITY','TAB_DMHR_CITY_2021_08_19_13_38_06');--表备份
call back_by_name('database','','TAB_DMHR_CITY_2021_08_19_13_38_06');--全库备份

 七、用存储块根据日期备份

declare 
  backupset_name varchar;
begin 
    select 'backupset_'||to_char(sysdate,'YYYY-MM-dd-HH24-MI-SS') into dataset_name from dual ;
    execute immediate 'backup database backupset ''' || backupset_name ||'''';
end;
declare 
begin 
    execute immediate 'backup database backupset ''dataset_'||to_char(sysdate,'YYYY-MM-dd-HH24-MI-SS')||'''';
end;

execute immediate
简单来说就是你在存储过程中创建了一个表 table_a ,然后要用insert into将其他的数据插入到这个table_a当中,但是因为你在创建过程的时候 table_a还不存在,过程就会显示有编译错误,因为table_a不存在必然导致过程无法执行,所以无法编译成功,而把insert into语句加如到 execute immediate之后 则oracle不会再去理会这个对象是否存在,因此可以成功编译和执行。

 

 

更多资讯请上达梦技术社区了解: https://eco.dameng.com

posted @ 2021-08-19 15:23  xiaowu222  阅读(238)  评论(0)    收藏  举报