Recentemente eu baixe o Oracle XE 21c e loguei no banco como SYSDBA e criei o seguinte ambiente:
CREATE TABLESPACE Desenvolvimento
LOGGING DATAFILE 'Desenvolvimento.dbf'
SIZE 100m AUTOEXTEND ON NEXT 100m EXTENT MANAGEMENT LOCAL;
ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
CREATE USER DEV
IDENTIFIED BY DEV1234
DEFAULT TABLESPACE DESENVOLVIMENTO
QUOTA UNLIMITED ON DESENVOLVIMENTO;
GRANT CREATE SESSION,
ALTER SESSION,
CREATE TABLE,
CREATE PROCEDURE,
CREATE VIEW,
CREATE MATERIALIZED VIEW,
CREATE TRIGGER,
CREATE SEQUENCE,
CREATE ANY DIRECTORY,
CREATE TYPE,
CREATE SYNONYM
TO DEV;
grant debug connect session to DEV;
grant debug any procedure to DEV;
grant execute any procedure to DEV;
grant compile procedure to DEV;
CREATE OR REPLACE PACKAGE BODY DEV.PKG_MIGRACAO_TESTE
AS
BEGIN
NULL;
END PKG_MIGRACAO PKG_MIGRACAO_TESTE;
Porém recebo o erro abaixo:
Ao consultar na tabela de objetos, posso ver que a package foi criada, porém está com o status de inválida:
1/18 PLS-00201: o identificador 'PKG_MIGRACAO_TESTE' deve ser declarado
1/18 PLS-00304: n?o e possivel compilar o texto de 'PKG_MIGRACAO_TESTE' sem a respectiva especificac?o
0/0 PL/SQL: Compilation unit analysis terminated
SELECT AO.OWNER
,AO.OBJECT_NAME
,AO.OBJECT_TYPE
,AO.CREATED
,AO.LAST_DDL_TIME
,AO.STATUS
,AO.TEMPORARY
FROM ALL_OBJECTS AO
WHERE AO.OBJECT_NAME = 'PKG_MIGRACAO_TESTE';
Mas ao tentar recompila-la:OWNER OBJECT_NAME OBJECT_TYPE CREATED LAST_DDL_TIME STATUS TEMPORARY
1 DEV PKG_MIGRACAO_TESTE PACKAGE BODY 09/09/2024 11:49:27 09/09/2024 11:49:27 INVALID N
EXEC DBMS_DDL.ALTER_COMPILE('PACKAGE BODY', 'DEV', 'PKG_MIGRACAO_TESTE');
Mesmo estando logado como SYSDBA.
ORA-20000: Unable to compile PACKAGE BODY "DEV"."PKG_MIGRACAO_TESTE", insufficient privileges or does not exist
ORA-06512: em "SYS.DBMS_DDL", line 243
ORA-06512: em line 1
Portanto, acredito que não seja um problema de permissão.
Por favor, poderiam me ajudar a entender o que está acontecendo?
Grato.