Oracle相关文档,希望互相学习,共同进步
1.项目背景
最近看同事工作移交的package,发现只有包体(Package Bodies),没有包(Package),看到是包体是正确的,于是准备把包体建一下。没想到复制过去了,忘记改最上面的 PACKAGE BODY, 编译时报错,定睛一看,是把包体给覆盖了。。。
需要还原.....
因为是第一时间恢复的,所以很快就弄好了。原理是修改前的内容存放在undo中,可以根据这一点来进行闪回,所以第一时间可以闪回,时长越长闪回的可能性越小。
本文主要进行实验模拟还原。
2. 实验
2.1准备表、包体
创建表:
create table test_feng as select * from tab ;
创建包体:
CREATE OR REPLACE PACKAGE BODY pg_feng is /*-------------------------- 创建时间 : 2025.1.18 创建人 : feng 目标表 : check_feng 源表 : tab 说明 : xxx 信息 ---------------------------*/ function get_check_feng(pDataIssue in varchar2) return varchar2 is vResult varchar2(10); vMsg varchar2(1000); begin vResult := '0'; BEGIN --删除本期数据 DELETE FROM test_feng ; COMMIT; --插入 INSERT INTO TEST_FENG SELECT * FROM tab; COMMIT; EXCEPTION WHEN OTHERS THEN vMsg := '报错位置:' || dbms_utility.format_error_backtrace || '报错信息:' || substr(SQLERRM, 1, 200); vResult := '1'; END; return vResult; end; end pg_feng;
2.2 模拟还原
1) 模拟错误替换
CREATE OR REPLACE PACKAGE BODY pg_feng is /*-------------------------- 创建时间 : 2025.1.18 创建人 : feng 目标表 : check_feng 源表 : tab 说明 : xxx 信息 ---------------------------*/ function get_check_feng(pDataIssue in varchar2) return varchar2; end pg_feng;
编译执行后:
2) 模拟还原
A.查找包对象id
登录sysdba用户,执行以下语句可查询id.
SELECT * FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2025-02-10 21:25:00','YYYY-MM-DD HH24:MI:SS') where source like '%pg_feng%'; 或者 SELECT obj# FROM obj$ AS OF TIMESTAMP TO_TIMESTAMP('2025-02-10 21:35:00', 'YYYY-MM-DD HH24:MI:SS') WHERE NAME = 'PG_FENG';
结果截图:
以下结果为包体的开始及结尾行,可以看到OBJ的id 为1224599
或
b.通过OBJ 的ID反查
create table feng_tmp as
SELECT source
FROM source$ AS OF TIMESTAMP TO_TIMESTAMP('2025-02-10 21:35:00', 'YYYY-MM-DD HH24:MI:SS')
where obj# = 1224599
;
结果截图:
发现以上内容就是被覆盖前的内容,复制出来简要处理一下 双引号、第一行增加“create or replace ”。
查看结果: 发现包体恢复
C.修改package
修改package正确后,重新编译: ok
CREATE OR REPLACE PACKAGE pg_feng is
/*--------------------------
创建时间 : 2025.1.18
创建人 : feng
目标表 : check_feng
源表 : tab
说明 : xxx 信息
---------------------------*/
function get_check_feng(pDataIssue in varchar2) return varchar2;
end pg_feng;
D.编译后重新查看: ok
实验验证:编译成功,ok 
项目管理--相关知识
项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-优快云博客
项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-优快云博客
项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-优快云博客
Oracle其他文档,希望互相学习,共同进步
Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-优快云博客
oracle 跟踪文件--审计日志_oracle审计日志-优快云博客
ORA-12899报错,遇到数据表某字段长度奇怪现象:“Oracle字符型,长度50”但length查却没有50_varchar(50) oracle 超出截断-优快云博客