我正在尝试使用函数DBMS_CRYPTO
。从SYSTEM
发射:
DECLARE
l_key VARCHAR2 (2000) := '1234567890123456';
l_in_val VARCHAR2 (2000) := 'Confidential Data';
l_mod NUMBER
:= DBMS_CRYPTO.encrypt_aes128
+ DBMS_CRYPTO.chain_cbc
+ DBMS_CRYPTO.pad_pkcs5;
l_enc RAW (2000);
BEGIN
l_enc :=
DBMS_CRYPTO.encrypt (utl_i18n.string_to_raw (l_in_val, 'AL32UTF8'),
l_mod,
utl_i18n.string_to_raw (l_key, 'AL32UTF8')
);
DBMS_OUTPUT.put_line ('Encrypted=' || l_enc);
END;
它给出:
Error report -
ORA-06550: Строка 5, столбец 17:
PLS-00201: идентификатор 'DBMS_CRYPTO' должен быть объявлен
ORA-06550: Строка 4, столбец 20:
PL/SQL: Item ignored
ORA-06550: Строка 11, столбец 11:
PLS-00201: идентификатор 'DBMS_CRYPTO' должен быть объявлен
ORA-06550: Строка 10, столбец 8:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
我看它select * from dba_objects where object_name = 'DBMS_CRYPTO';
给出了:
我尝试创建一个新用户并授予他权限:
grant execute on sys.dbms_crypto to VICE_SYS;
但也有错误:
Error starting at line : 1 in command -
grant execute on sys.dbms_crypto to VICE_SYS
Error report -
ORA-00942: таблица или представление пользователя не существует
00942. 00000 - "table or view does not exist"
*Cause:
该怎么办?
您需要授予执行包的权限。这只能由用户完成
SYS
,其他人无法完成。