Pacote DBMS_CACHE
O pacote DBMS_CACHE facilita o armazenamento automático em cache para Lake Caches em uma instância do Autonomous AI Database, incluindo caches criados para tabelas externas e para tabelas expostas por meio de catálogos montados.
Resumo dos Subprogramas DBMS_CACHE
Esta tabela resume os subprogramas incluídos no pacote DBMS_CACHE.
| Subprograma | Descrição |
|---|---|
| Procedimento CLEAR | Limpa todos os Caches do Lake para um usuário especificado. |
| Procedimento ENABLE_AUTO | Ativa o armazenamento automático em cache globalmente ou para um ou mais esquemas e, opcionalmente, define GLOBAL_CACHE_SIZE ou GLOBAL_CACHE_PERCENT. |
| Procedimento GET_GLOBAL_PROPERTY | Recupera propriedades automáticas do Lake Cache. |
| Procedimento GET_USER_PROPERTY | Recupera propriedades automáticas do Lake Cache para um usuário especificado. |
| REFRESH Procedimento | Atualiza todos os Caches do Lake para um usuário especificado. |
| Procedimento SET_GLOBAL_PROPERTY | Especifica a preferência automática do Lake Cache para todos os usuários do banco de dados. |
| Procedimento SET_USER_PROPERTY | Especifica a preferência automática do Lake Cache para um usuário especificado. |
Procedimento CLEAR
Use o procedimento DBMS_CACHE.CLEAR para eliminar todos os Caches do Lake para um usuário especificado.
O procedimento DBMS_CACHE.CLEAR elimina todos os Caches do Lake e libera o espaço de armazenamento, semelhante ao modo como o comando DROP funciona em uma tabela de banco de dados.
Sintaxe
DBMS_CACHE.CLEAR (
owner IN VARCHAR2
);Parâmetros
| Parâmetro | Descrição |
|---|---|
owner |
Especifica o nome do esquema. |
Exemplo
BEGIN
DBMS_CACHE.CLEAR (
owner => 'SALES');
END;
/Observação do Uso
- Você deve estar conectado como usuário
ADMINou ter o privilégioEXECUTEno pacoteDBMS_CACHEpara limpar um cache.
Procedimento ENABLE_AUTO
Use o procedimento DBMS_CACHE.ENABLE_AUTO para ativar o armazenamento automático em cache globalmente ou para um ou mais esquemas e, opcionalmente, definir a cota de cache global.
Sintaxe
DBMS_CACHE.ENABLE_AUTO (
users IN CLOB DEFAULT NULL,
global_cache_size IN NUMBER DEFAULT NULL,
global_cache_pct IN NUMBER DEFAULT NULL
);Parâmetros
| Parâmetro | Descrição |
|---|---|
users |
Especifica um array JSON no formato CLOB que contém nomes de esquema. Se users for NULL, o armazenamento automático em cache será ativado globalmente para todos os usuários. |
global_cache_size |
Especifica a cota máxima do cache global, em bytes, para o banco de dados. |
global_cache_pct |
Especifica a cota de cache global como uma porcentagem do tamanho máximo do banco de dados. |
Observações de Uso
-
O procedimento ativa o armazenamento automático em cache definindo
AUTO_CACHE. -
Se
global_cache_sizeouglobal_cache_pctfor fornecido, o procedimento definirá a propriedade de cota global correspondente. -
Se nem
global_cache_sizenemglobal_cache_pctforem fornecidos, o procedimento definiráGLOBAL_CACHE_PERCENTcomo20. -
Use
DBMS_CACHE.SET_GLOBAL_PROPERTYouDBMS_CACHE.SET_USER_PROPERTYcomAUTO_CACHE = 0para desativar o armazenamento automático em cache.
Exemplos
Exemplo para ativar o armazenamento automático em cache globalmente:
BEGIN
DBMS_CACHE.ENABLE_AUTO(
users => NULL,
global_cache_pct => 20);
END;
/Exemplo para ativar o armazenamento automático em cache para esquemas selecionados:
DECLARE
l_users CLOB := '["HR","SALES"]';
BEGIN
DBMS_CACHE.ENABLE_AUTO(
users => l_users,
global_cache_size => 21474836480);
END;
/GET_GLOBAL_PROPERTY Procedimento
O procedimento DBMS_CACHE.GET_GLOBAL_PROPERTY recupera as preferências automáticas do Lake Cache para todos os usuários do banco de dados. Este procedimento é sobrecarregado.
Sintaxe
DBMS_CACHE.GET_GLOBAL_PROPERTY (
property_name IN VARCHAR2,
property_value_num OUT NUMBER);
DBMS_CACHE.GET_GLOBAL_PROPERTY (
property_name IN VARCHAR2,
property_value_str OUT VARCHAR2);Parâmetros
| Parâmetro | Descrição |
|---|---|
property_name |
Especifica o nome da propriedade. Estes são os valores válidos para
|
property_value_num |
Recupera um valor NUMBER para o nome de propriedade especificado. |
property_value_str |
Recupera um valor STRING para o nome de propriedade especificado. |
Exemplo
SET SERVEROUTPUT ON;
DECLARE
l_auto_cache NUMBER;
BEGIN
DBMS_CACHE.GET_GLOBAL_PROPERTY(
property_name => 'AUTO_CACHE',
property_value_num => l_auto_cache);
DBMS_OUTPUT.PUT_LINE('AUTO_CACHE=' || l_auto_cache);
END;
/Observações de Uso
-
Você deve estar conectado como usuário
ADMINou ter o privilégioEXECUTEno pacoteDBMS_CACHEpara executar este procedimento. -
GLOBAL_CACHE_SIZEeGLOBAL_CACHE_PERCENTdefinem cota apenas. Eles não ativam o armazenamento automático em cache. UseAUTO_CACHEouDBMS_CACHE.ENABLE_AUTOpara ativar o armazenamento automático em cache. -
Se
GLOBAL_CACHE_SIZEeGLOBAL_CACHE_PERCENTforem definidos, o valor maior será usado. Se nenhuma propriedade de cota global for definida explicitamente, o padrão deGLOBAL_CACHE_PERCENTserá20. -
Se
MAX_CACHE_SIZEeMAX_CACHE_PERCENTforem definidos, o valor maior será usado. Se nenhuma propriedade de cota padrão for definida explicitamente, o padrão deMAX_CACHE_PERCENTserá20.
SET_GLOBAL_PROPERTY Procedimento
Use DBMS_CACHE.SET_GLOBAL_PROPERTY para definir propriedades globais de armazenamento automático em cache para o banco de dados. Este procedimento é sobrecarregado.
AUTO_CACHE ativa ou desativa o armazenamento automático em cache no escopo do banco de dados. GLOBAL_CACHE_SIZE e GLOBAL_CACHE_PERCENT definem a cota de cache global para todos os caches de tabelas externas. MAX_CACHE_SIZE e MAX_CACHE_PERCENT definem preferências de cota no nível do esquema padrão para esquemas que não têm uma substituição no nível do usuário. A definição de GLOBAL_CACHE_SIZE, GLOBAL_CACHE_PERCENT, MAX_CACHE_SIZE ou MAX_CACHE_PERCENT não permite, por si só, o armazenamento automático em cache.
Sintaxe
DBMS_CACHE.SET_GLOBAL_PROPERTY (
property_name IN VARCHAR2,
property_value_num IN NUMBER);
DBMS_CACHE.SET_GLOBAL_PROPERTY (
property_name IN VARCHAR2,
property_value_str IN VARCHAR2);Parâmetros
| Parâmetro | Descrição |
|---|---|
property_name |
Especifica o nome da propriedade. Estes são os valores válidos para
|
property_value_num |
Fornece um valor NUMBER para o nome de propriedade especificado. |
property_value_str |
Fornece um valor STRING para o nome de propriedade especificado. |
Exemplos
BEGIN
DBMS_CACHE.SET_GLOBAL_PROPERTY(
property_name => 'AUTO_CACHE',
property_value_num => 1);
END;
/BEGIN
DBMS_CACHE.SET_GLOBAL_PROPERTY(
property_name => 'GLOBAL_CACHE_PERCENT',
property_value_num => 20);
END;
/BEGIN
DBMS_CACHE.SET_GLOBAL_PROPERTY(
property_name => 'MAX_CACHE_PERCENT',
property_value_num => 25);
END;
/BEGIN
DBMS_CACHE.SET_GLOBAL_PROPERTY(
property_name => 'BEHAVIOR',
property_value_str => 'COOPERATIVE');
END;
/BEGIN
DBMS_CACHE.SET_GLOBAL_PROPERTY(
property_name => 'AUTO_REFRESH_MODE',
property_value_str => 'NEW');
END;
/BEGIN
DBMS_CACHE.SET_GLOBAL_PROPERTY(
property_name => 'MAX_REFRESH_WINDOW',
property_value_num => 20);
END;
/Observações de Uso
-
Você deve estar conectado como usuário
ADMINou ter o privilégioEXECUTEno pacoteDBMS_CACHEpara executar este procedimento. -
Se
GLOBAL_CACHE_SIZEeGLOBAL_CACHE_PERCENTforem definidos, o valor maior será usado. -
Se nenhuma propriedade de cota global for definida explicitamente, o padrão de
GLOBAL_CACHE_PERCENTserá20. -
Se
MAX_CACHE_SIZEeMAX_CACHE_PERCENTforem definidos, o valor maior será usado. -
Se nenhuma propriedade de cota padrão for definida explicitamente, o padrão de
MAX_CACHE_PERCENTserá20. -
Se
MAX_CACHE_SIZEfor definido como maior queGLOBAL_CACHE_SIZE, o banco de dados gerará um erro. -
Caches manuais e caches
AUTOconsomem o mesmo pool de cotas. -
A propriedade
MAX_REFRESH_WINDOWespecifica, em segundos, o tempo máximo permitido para atualizar os Caches do Lake. Se a atualização exceder o limite especificado, a atualização de cache será encerrada normalmente e quaisquer caches elegíveis restantes serão enfileirados para o próximo ciclo de atualização. -
Quando você atualiza caches usando o procedimento
DBMS_CACHE.REFRESH, o parâmetro de procedimento tem precedência sobre a propriedadeAUTO_REFRESH_MODE.Consulte Procedimento REFRESH para obter mais informações.
REFRESH Procedimento
Use o procedimento DBMS_CACHE.REFRESH para atualizar todos os Caches do Lake AUTO para um usuário especificado.
Sintaxe
DBMS_CACHE.REFRESH (
owner IN VARCHAR2,
refresh_type IN VARCHAR2 DEFAULT ALL
);Parâmetros
| Parâmetro | Descrição |
|---|---|
owner |
Especifica o nome do esquema. |
refresh_type |
Especifica a opção de atualização. Estes são os valores válidos de
Esse parâmetro é opcional e tem como padrão |
Exemplo
BEGIN
DBMS_CACHE.REFRESH (
owner => 'SALES',
refresh_type => 'CURRENT');
END;
/Observações de Uso
-
Você deve estar conectado como usuário
ADMINou ter o privilégioEXECUTEno pacoteDBMS_CACHEpara executar este procedimento. -
Se você não especificar um valor para o parâmetro
refresh_type, a Oracle executará a atualização com base no valorauto_refresh_mode. O valor padrão paraauto_refresh_modeéALL. -
Quando a propriedade
MAX_REFRESH_WINDOWé definida, o sistema Oracle tenta executar a atualização na janela especificada. Se a atualização exceder o limite especificado, a atualização de cache será encerrada normalmente e quaisquer caches elegíveis restantes serão enfileirados para o próximo ciclo de atualização. -
Todos os caches AUTO no banco de dados são gerenciados usando um algoritmo de remoção semelhante ao LRU (Menos Usado Recentemente). Quando sob pressão de espaço, os caches que foram acessados menos recentemente são automaticamente eliminados durante o processo de atualização para liberar o espaço de armazenamento.
GET_USER_PROPERTY Procedimento
Use o procedimento DBMS_CACHE.GET_USER_PROPERTY para recuperar propriedades de armazenamento automático em cache para um usuário.
Sintaxe
DBMS_CACHE.GET_USER_PROPERTY (
property_name IN VARCHAR2,
owner IN VARCHAR2 DEFAULT NULL,
property_value_str OUT VARCHAR2);
DBMS_CACHE.GET_USER_PROPERTY (
property_name IN VARCHAR2,
owner IN VARCHAR2 DEFAULT NULL,
property_value_num OUT NUMBER);Parâmetros
| Parâmetro | Descrição |
|---|---|
property_name |
Especifica o nome da propriedade. Estes são os valores válidos para
|
owner |
Especifica o nome do esquema. Esse parâmetro é opcional e assume como padrão o esquema atual. |
property_value_str |
Recupera um valor STRING para o nome de propriedade especificado. |
property_value_num |
Recupera um valor NUMBER para o nome de propriedade especificado. |
Exemplo
SET SERVEROUTPUT ON;
DECLARE
l_auto_cache NUMBER;
BEGIN
DBMS_CACHE.GET_USER_PROPERTY(
property_name => 'AUTO_CACHE',
owner => 'HR',
property_value_num => l_auto_cache);
DBMS_OUTPUT.PUT_LINE('AUTO_CACHE=' || l_auto_cache);
END;
/Observações de Uso
-
Você deve estar conectado como usuário
ADMINou ter o privilégioEXECUTEno pacoteDBMS_CACHEpara executar este procedimento. -
MAX_CACHE_SIZEeMAX_CACHE_PERCENTsão controles de cota no nível do esquema. Eles não permitem o armazenamento automático em cache por si mesmos. UseAUTO_CACHEpara ativar ou desativar o armazenamento automático em cache do esquema especificado. -
Se
MAX_CACHE_SIZEeMAX_CACHE_PERCENTforem definidos, o valor maior será usado. Se nenhuma propriedade de cota no nível do esquema for definida explicitamente, o padrão deMAX_CACHE_PERCENTserá20.
SET_USER_PROPERTY Procedimento
Use DBMS_CACHE.SET_USER_PROPERTY para definir propriedades de armazenamento automático em cache para um esquema especificado. Use AUTO_CACHE para ativar ou desativar o armazenamento automático em cache para o esquema. Use MAX_CACHE_SIZE e MAX_CACHE_PERCENT para definir preferências de cota no nível do esquema dentro do modelo de cota global.
Sintaxe
DBMS_CACHE.SET_USER_PROPERTY (
property_name IN VARCHAR2,
property_value_num IN NUMBER,
owner IN VARCHAR2 DEFAULT NULL);
DBMS_CACHE.SET_USER_PROPERTY (
property_name IN VARCHAR2,
property_value_str IN VARCHAR2,
owner IN VARCHAR2 DEFAULT NULL
);Parâmetros
| Parâmetro | Descrição |
|---|---|
property_name |
Especifica o nome da propriedade. Estes são os valores válidos para
|
property_value_num |
Fornece um valor NUMBER para o nome de propriedade especificado. |
property_value_str |
Fornece um valor STRING para o nome de propriedade especificado. |
owner |
Especifica o nome do esquema. Esse parâmetro é opcional e assume como padrão o esquema atual. |
Exemplos
Exemplo para ativar o armazenamento automático em cache para um esquema:
BEGIN
DBMS_CACHE.SET_USER_PROPERTY(
property_name => 'AUTO_CACHE',
property_value_num => 1,
owner => 'SALES');
END;
/Exemplo para definir uma cota de cache no nível do esquema:
BEGIN
DBMS_CACHE.SET_USER_PROPERTY(
property_name => 'MAX_CACHE_SIZE',
property_value_num => 5368709120,
owner => 'SALES');
END;
/Observações de Uso
-
Você deve estar conectado como usuário
ADMINou ter o privilégioEXECUTEno pacoteDBMS_CACHEpara executar este procedimento. -
As definições no nível do usuário substituem as definições globais.
-
MAX_CACHE_SIZEeMAX_CACHE_PERCENTnão ativam o armazenamento automático em cache por si só. -
Se
MAX_CACHE_SIZEeMAX_CACHE_PERCENTforem definidos, o valor maior será usado. -
Se nenhuma propriedade de cota no nível do esquema for definida explicitamente, o padrão de
MAX_CACHE_PERCENTserá20. -
Se
MAX_CACHE_SIZEfor definido como maior queGLOBAL_CACHE_SIZE, o banco de dados gerará um erro. -
A política manual sempre substitui o comportamento automático.