主要是为了保护PL/SQL源代码,防止PL/SQL代码被非法使用。可以使用wrap
工
具或者DBMS_DDL子程序对PL/SQL源码进行加密。wrap工具加密单个源文件,如SQL*Plus脚本。DBMS_DDL子程序加密单个动态生
成的PL/SQL单元,如一个CREATE
PROCEDURE声明。加密的源文件可以移动,备份,可被SQL*Plus和Improt和Export工具处理,但在静态数据字典视
图*_SOURCE中无法看到源码。
WRAP语法
wrap
iname=input_file
[oname=output_file
]
可省略文件扩展名,如以下的命令是等同的:
wrap iname=/mydir/myfile
wrap iname=/mydir/myfile.sql
输出文件默认的扩展名为.plb,当然你也可以指定不同的文件名和扩展名。
wrap iname=/mydir/myfile oname=/yourdir/yourfile.out
wrap主要是混淆PL/SQL语句的主体部分,如下CREATE语句可以被加密:
CREATE [OR REPLACE] FUNCTION function_name
CREATE [OR REPLACE] PROCEDURE procedure_name
CREATE [OR REPLACE] PACKAGE package_name
CREATE [OR REPLACE] PACKAGE BODY package_name
CREATE [OR REPLACE] TYPE type_name
AS OBJECT
CREATE [OR REPLACE] TYPE type_name
UNDER type_name
CREATE [OR REPLACE] TYPE BODY type_name
CREATE [OR REPLACE]
TRIGGER语句不能被加密,但你可调用加密的过程。加密文件中除了语句头部和C风格(/*…*/)注释外,其它所有注释被删除。
输出的文件为文本文件,可以在SQL*Plus执行:
SQL> @myfile.plb;
DBMS_DDL子程序
DMBS_DDL包包含WRAP函数和CREATE_WRAPPED过程。CREATE_WRAPPED过程加密语句并创建PL/SQL单元。如下为使用
DBMS_DDL.CREATE_WRAPPED加密包的例子:
DECLARE
package_text VARCHAR2(32767); — text for creating package spec &
body
FUNCTION generate_spec (pkgname VARCHAR2) RETURN VARCHAR2 AS
BEGIN
RETURN ‘CREATE PACKAGE ‘ || pkgname || ‘ AS
PROCEDURE raise_salary (emp_id NUMBER, amount NUMBER);
PROCEDURE fire_employee (emp_id NUMBER);
END ‘ || pkgname || ‘;’;
END generate_spec;
FUNCTION generate_body (pkgname VARCHAR2) RETURN VARCHAR2 AS
BEGIN
RETURN ‘CREATE PACKAGE BODY ‘ || pkgname || ‘ AS
PROCEDURE raise_salary (emp_id NUMBER, amount NUMBER) IS
BEGIN
UPDATE employees
SET salary = salary + amount WHERE employee_id = emp_id;
END raise_salary;
PROCEDURE fire_employee (emp_id NUMBER) IS
BEGIN
DELETE FROM employees WHERE employee_id = emp_id;
END fire_employee;
END ‘ || pkgname || ‘;’;
END generate_body;
BEGIN
— Generate package spec
package_text := generate_spec(‘emp_actions’)
— Create wrapped package spec
DBMS_DDL.CREATE_WRAPPED(package_text);
— Generate package body
package_text := generate_body(‘emp_actions’);
— Create wrapped package body
DBMS_DDL.CREATE_WRAPPED(package_text);
END;
分享到:
相关推荐
确保Oracle数据库服务器配置了SSL,并在PL/SQL Developer的连接设置中启用SSL选项。 5. **防火墙设置**:远程连接可能需要通过组织的防火墙。确保1521端口(默认Oracle监听端口)在防火墙中开放,以便传出连接。 6...
3. **高级SQL特性**:书中涵盖了Oracle特有的SQL功能,如PL/SQL过程化语言,游标,递归查询,窗口函数,分析函数,以及在SQL中使用正则表达式等,这些高级特性为复杂的数据处理提供了强大支持。 4. **性能调优**:...
Oracle FYunwrap 是一款专为Oracle数据库设计的对象解密工具,主要功能是针对使用`wrap`命令加密的PL/SQL代码进行解密。在Oracle数据库中,`wrap`命令被用来压缩和加密源代码,以保护敏感的数据库逻辑不被轻易查看或...
在Oracle中,可以使用PL/SQL(Oracle的编程语言扩展)来实现这些功能,通过存储过程、触发器和函数来处理业务逻辑。 5. **复杂性**:提到“在线考试系统(复杂)”,可能意味着该系统包含了高级特性,如动态试题...
10. Oracle开发工具:Oracle提供了一系列开发工具,如SQL Developer、Toad、PL/SQL Developer等,这些工具的使用方法也可以在源代码中找到。 总之,Oracle源代码集合是一个宝贵的资源,它能帮助你深入理解Oracle...
- 阐述了如何安全地加密到Oracle数据库的网络流量。 - 解释了如何重置密码和连接自治数据库。 - 描述了连接分片数据库的方法。 ### 5. SQL执行(SQL Execution) - 介绍了使用绑定变量执行SQL语句,使用CLOB和BLOB...
在这个场景中,重点是配置和使用PL/SQL Developer来连接到位于远程服务器上的Oracle数据库。 首先,我们需要理解远程连接的基本概念。在数据库领域,远程连接意味着从一个不同的物理位置(即不同于数据库服务器的...
"ORACLE中的FTP例子代码"这个主题就涉及到了如何在PL/SQL中实现FTP(File Transfer Protocol)功能。这篇博客文章(https://z-one.iteye.com/blog/1604593)提供了一个具体的示例,帮助开发者理解如何利用Oracle内置...
5. **PL/SQL编程**:Oracle特有的PL/SQL是一种过程化语言,用于编写存储过程、函数和触发器。它是数据库编程的重要部分,允许在数据库内执行复杂逻辑和业务规则。 6. **安全性**:Oracle提供了一套强大的安全机制,...
描述中提到的“PL-SQL编程源码”是指使用PL/SQL语言编写的代码,PL/SQL是Oracle数据库系统中的编程语言,它结合了SQL查询语言与过程式编程语言的特点。源码实现了自定义的“mod”函数,这个函数用于判断质数问题。...
3. **SQL和PL/SQL编程**:Oracle的SQL方言提供了丰富的功能,包括复杂的查询、DML操作、存储过程和触发器。PL/SQL是Oracle特有的过程编程语言,用于编写数据库操作的逻辑单元。熟悉这两者是Oracle开发的基础。 4. *...
源码分析可以帮助理解如何利用PL/SQL进行高效的数据库操作,以及如何构建自定义的存储过程和函数。 接着是Oracle 10g。这一版本的重大改进在于数据库网格计算(Database Grid Computing),允许在多台服务器上无缝...
3. **PL/SQL编程**:Oracle的PL/SQL是一种过程化语言,用于编写存储过程、函数、触发器等。这部分会介绍PL/SQL的语法、变量、控制流程语句、异常处理等,并通过实际示例进行讲解。 4. **数据库管理**:这部分内容将...
在Oracle数据库中,源码是指用于构建数据库管理系统的核心代码,这部分代码通常是闭源的,但Oracle提供了许多工具来帮助用户管理和优化数据库。这些工具包括SQL*Plus、PL/SQL Developer、SQL Developer等,它们使得...
Oracle Database 12c是Oracle公司推出的一款企业级数据库管理系统,是Oracle数据库产品线中的重要组成部分,尤其在大型企业和云计算环境中广泛应用。Oracle 12c引入了许多创新特性,旨在提高性能、可扩展性和云服务...
除此之外,Oracle 12c 还包含了如PL/SQL编程、数据库触发器、存储过程、索引策略、物化视图、数据库链接等大量高级特性,这些都是数据库设计和管理中的关键要素。 总的来说,Oracle Database 12c 完全参考手册的...
5. **PL/SQL**:Oracle的编程语言PL/SQL结合了SQL和过程编程,用于编写存储过程、函数、触发器等数据库对象。 6. **数据泵(Data Pump)**:Oracle Data Pump是一种快速的数据迁移工具,用于导入和导出大量数据。 ...
在这个压缩包中,你将找到一系列与Oracle 11g相关的源码,这将帮助你深入理解数据库的工作原理,提升你的编程和管理技能。 Oracle 11g的核心知识点包括: 1. **安装与配置**:学习如何在不同的操作系统上安装...
在Delphi中,可以通过创建PL/SQL过程或调用系统接口来与RMAN进行交互。 3. **Delphi编程**:使用Delphi开发Oracle备份工具,需要熟悉BDE(Borland Database Engine)或者ODAC(Oracle Data Access Components)等...
在Oracle 8中,这涉及到用户权限管理、角色、审计和加密。理解如何设置访问控制,防止未授权访问,同时确保数据安全是必要的。 6. **备份与恢复**:Oracle 8提供了多种备份和恢复策略,如物理备份、逻辑备份和RMAN...