UNAPRAP ORACLE HOME .PLB
#sql #oracle #database #troubleshooting

当您使用Oracle DBMS_软件包遇到错误时,将提供一个线号以进行故障排除。但是,大多数是wrapped,将其代码紧凑,并在词典中加载时会删除评论。用CREATE OR REPLACE PACKAGE BODY打开文件仅显示随机可打印字符:

Image description

要对错误进行故障排除,您可以轻松地将PL/SQL代码恢复,以便检查您遇到错误的行。

有一个用于SQL开发人员的插件:

GitHub logo Trivadis / plsql-unwrapper-sqldev

SQL开发人员的PL/SQL Un -Trapper

PL/SQL Unwrapper for SQL Developer

Introduction

PL/SQL Unwrapper for SQL Developer is a free extension to unwrap PL/SQL code wrapped with the wrap utility of the Oracle Database Server version 10g, 11g, 12c, 18c or 19c.

Example

Open a wrapped PL/SQL unit (procedure, function, package specification, package body, type specification or type body) in a SQL Developer editor

Wrapped

右键单击编辑器以显示弹出窗口。选择Unwrap或简单地按Ctrl-Shift-U即可解开代码。

Unwrap

编辑器内容被未包装的代码替换。

Unwrapped

默认情况下,未包装的代码不包含有效的DDL语句。在这种情况下,CREATE丢失了。您可以在首选项中更改此行为。

Preferences

检查Add ‘CREATE OR REPLACE'选项以获取完整的DDL语句。

Preferences

散装未包装

如果安装oddgen for SQL Developer,您将在Generators窗口中看到一个PL/SQL Unwrapper节点:

oddgen Generator

打开PL/SQL UNWRAPPER节点

在线网站也可以在线进行:https://www.codecrete.net/UnwrapIt/

这是一个小脚本,将.unwrapped中所有*.plb的代码写入.unwrapped11:

export PATH=$PATH:$ORACLE_HOME/python/bin
pip install html2text
for f in $(grep -l ' wrapped *$' $(find $ORACLE_HOME -name "*.plb"))
do
 curl -s -F "file=@$f" -F "ShowLineNumbers=false" -F "UnwrapFile=Unwrap File" https://www.codecrete.net/UnwrapIt/ |
 html2text | awk '
/Unwrap More Code/{p="Y";next}
/Bleichenbacher/{print "--",$0;next}
p=="Y"{gsub(/ʼ/,qq);print}
' qq="'" > ${f}.unwrapped && wc ${f}.unwrapped
done

这仅是在实验室中运行的,为什么不从Oracle 23C免费版本开始容器,而仅用于教育目的。包装时没有任何加密,但这并不能为您提供任何权利。这不是开源!