备份数据表、还原数据表

CREATE OR REPLACE PROCEDURE backuporg
IS
-- declare fixed array
TYPE arry_var IS VARRAY(30) OF VARCHAR2(32);
tblnames arry_var;
v_sql varchar2(3999);
tblname varchar2(32);
tblexist number;
--set serveroutput on size 10000000000;
BEGIN

-- init array
tblnames := arry_var(
‘org_department‘,
‘org_user‘,
‘org_group‘,
‘org_duty‘,
‘org_job‘,
‘org_department_principal‘,
‘org_dept_principal‘,
‘org_department_role‘,
‘org_department_user_job‘,
‘org_user_job‘,
‘org_user_leader‘,
‘org_user_privilege‘,
‘org_user_role‘,
‘org_job_leader‘,
‘org_user_property‘,
‘org_user_login_log‘,
‘org_job_function‘,
‘org_group_nested_group‘,
‘org_employee‘,
‘org_employee_job‘,
‘org_duty_agent‘,
‘org_department_function‘,
‘org_department_employee_job‘,
‘org_group_user‘,
‘org_group_member‘,
‘org_group_job‘,
‘org_group_duty‘,
‘org_group_department‘,
‘org_duty_role‘,
‘org_job_role‘);

--dbms_output.put_line(tblname(1));
--dbms_output.put_line(tblname(2));

for i in 1..tblnames.count
loop
tblname := tblnames(i)||‘_x‘;
select count(1) into tblexist from all_tables where TABLE_NAME = upper(tblname) ;

if tblexist=1 then
v_sql:= ‘ drop table ‘||tblname;
dbms_output.put_line(v_sql);
execute immediate (v_sql);
end if;

if tblexist=0 then

dbms_output.put_line(tblname ||‘ 不存在‘);

end if;

v_sql:= ‘ create table ‘||tblname||‘ as select * from ‘||tblnames(i);
dbms_output.put_line(‘创建表‘||v_sql);
execute immediate (v_sql);

-- || ‘ create table ‘||tblname(i)||‘_bak as select * from ‘||tblname(i)||‘;‘;
end loop;

END backuporg;

/*
begin
backuporg();
end;

*/

CREATE OR REPLACE PROCEDURE restoreorg
IS
-- declare fixed array
TYPE arry_var IS VARRAY(30) OF VARCHAR2(32);
tblnames arry_var;
v_sql varchar2(3999);
tblname varchar2(32);
baktblname varchar2(32);
tblexist number;
BEGIN

-- init array
tblnames := arry_var(
‘org_department‘,
‘org_user‘,
‘org_group‘,
‘org_duty‘,
‘org_job‘,
‘org_department_principal‘,
‘org_dept_principal‘,
‘org_department_role‘,
‘org_department_user_job‘,
‘org_user_job‘,
‘org_user_leader‘,
‘org_user_privilege‘,
‘org_user_role‘,
‘org_job_leader‘,
‘org_user_property‘,
‘org_user_login_log‘,
‘org_job_function‘,
‘org_group_nested_group‘,
‘org_employee‘,
‘org_employee_job‘,
‘org_duty_agent‘,
‘org_department_function‘,
‘org_department_employee_job‘,
‘org_group_user‘,
‘org_group_member‘,
‘org_group_job‘,
‘org_group_duty‘,
‘org_group_department‘,
‘org_duty_role‘,
‘org_job_role‘);

--dbms_output.put_line(tblname(1));
--dbms_output.put_line(tblname(2));

for i in 1..tblnames.count

loop
tblname := tblnames(i)||‘_y‘;
select count(1) into tblexist from all_tables where TABLE_NAME = upper(tblname) ;

if tblexist=1 then
v_sql:= ‘ drop table ‘||tblname;--删除掉备份表
dbms_output.put_line(v_sql);
execute immediate (v_sql);
end if;

if tblexist=0 then

dbms_output.put_line(tblname ||‘ 不存在‘);

end if;

-- alter table
-- ORG_DEPT_PRINCIPAL_bak
--rename to
-- ORG_DEPT_PRINCIPAL_JOB

--将正式表重重名为带y备份表
v_sql:= ‘ alter table ‘||tblnames(i)||‘ rename to ‘|| tblname ;--将原有表备份起来
dbms_output.put_line(‘将正式表重名为带y备份表‘||v_sql);
execute immediate (v_sql);

baktblname := tblnames(i)||‘_x‘; --备份表
v_sql:= ‘ alter table ‘||baktblname||‘ rename to ‘|| tblnames(i);--将备份表还原
dbms_output.put_line(‘将备份表还原‘||v_sql);
execute immediate (v_sql);

end loop;

END restoreorg;

/*
begin
backuporg();
end;

*/

时间: 2024-10-16 09:49:05

备份数据表、还原数据表的相关文章

跨库备份指定日期前数据表,然后从原表删除

  public bool BackupAA() { int temp = 0; int tempdel = 0; string sql = "INSERT INTO [WMSBAK].[dbo].[AACopy] SELECT * FROM [TestDB].[dbo].[AA] WHERE AddDate <= DATEADD( d ,-45,GETDATE())"; try { temp = dbhelper.ExcuteNonequery(sql); } catch (E

查询oracle 数据库中回滚段中一个时间点被修改的表数据并还原表中原来数据

利用下面的SQL就可以查处最近更改的数据. SQL> SELECT ID,NAME,VERSIONS_STARTTIME,VERSIONS_ENDTIME,VERSIONS_OPERATION FROM TEST VERSIONS BETWEEN TIMESTAMP MINVALUE AND MAXVALUE WHERE VERSIONS_STARTTIME IS NOT NULL ORDER BY VERSIONS_STARTTIME DESC; 通过以上小实验可以看出,VERSIONS_ST

误删除线上无备份mongodb 1800万数据表的心路历程

2018-06-14 15:32 ,我误删除掉线上mongodb集群的表. ok,mongobooster是有stop按钮.点击停止救命一下.但是,根本停不掉,每刷新一下都能看到表单在1M递减的速度减少,每刷新一次 头晕就加重脑海飞速想解决方案 历程: 1.找运维,拿备份.  找了许久竟然没近期备份,最近的是五月初,我的天,我快倒在地上了. 2.竟然mongodb的collection是文件存储,那么靠运维磁盘中找到原来文件,400多G磁盘需要半小时检索.这半小时 ,看着异常不断增多,崩溃,每一

sql servset 有表,没表备份数据。

1.没表的情况下 select * into log_books from LOG_BOOK; 新建一个log_books并把LOG_BOOK拷贝到 log_books中. 2.有表的情况下 insert into log_books select * from LOG_BOOK; 把LOG_BOOK数据拷贝到log_books表中

把数据备份到另外一张表

SQL Server 目标表存在:INSERT INTO 目标表 SELECT * FROM 原表. 不存在:SELECT * INTO 目标表 FROM 原表. ORACLE 目标表存在:INSERT INTO 目标表 SELECT * FROM 原表. 不存在:CREATE TABLE 目标表 AS SELECT * FROM 原表. 第三种方法 INSERT INTO 目标表(字段1,字段2,字段N)SELECT 字段1,字段2,字段N FROM 原表.

oracle中导出导入表以及数据

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用.执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于 在oracle 8i 中安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出.oracl

dedecms还原数据时要选对备份目录 不然会提示function文件出错

小李子最近在学习dedecms,在网上下载了一个二次开发的系统,顺利安装后想要还原一下作者的备份数据,可一直没有成功,让ytkah查看一下什么情况.进到后台,点击还原,提示/e/class/function.php某段代码没有定义,打开ftp查看了那个文件的修改时间和其他文件的修改时间一样,查看了那段代码也没有修改过的痕迹,那应该是其他方面的问题.是不是备份目录没选对呢? 打开 系统 - 系统基本参数 - 核心设置,默认是backupdata, 但是ftp打开发现data目录下的backupda

mysql表ibdata1数据切换到单个表储存、默认导出的表结构

释放MySQL ibdata1文件的空间 mysqldump选项: --add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句: --add-locks:备份数据库表时锁定数据库表: --all-databases:备份MySQL服务器上的所有数据库: --comments:添加注释信息: --compact:压缩模式,产生更少的输出: --complete-insert:输出完成的插入语句: --databases:指定要备份的数据库: --default-charact

【转】SQLServer恢复表级数据

原文地址:http://blog.csdn.net/dba_huangzj/article/details/8309503 最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update.delete出现了无法恢复的后果,加上那些库都是几十G.恢复起来少说也要十几分钟.为此,找了一些资料和工作总结,给出一下几个方法,用于快速恢复表,而不是库,但是切记,防范总比亡羊补牢好. 在生产环境或者开发环境,往往都有某些非常重要的表.这些表存放了核心数据.当这些表出现数据损