Curso PL/SQL: Dominando Packages Flashcards

(45 cards)

1
Q

O que é um Package em Oracle PL/SQL?

A

Um objeto de banco de dados que agrupa logicamente outros objetos como programas PL/SQL, variáveis e cursores.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quais são os dois componentes principais de um Package?

A

Especificação (declaração das partes públicas) e Corpo (implementação das partes públicas e privadas).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O que a especificação de um Package define?

A

Os componentes públicos que podem ser acessados por aplicações externas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

O que o corpo de um Package contém?

A

A implementação dos cursores e programas públicos, itens privados e a parte de inicialização.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Quais são as vantagens de usar Packages?

A

Modularidade, facilidade no design de aplicativos, possibilidade de adicionar novas funcionalidades e melhoria do desempenho.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Como os Packages melhoram o desempenho?

A

Ao serem invocados, são carregados na memória, evitando I/O de disco em invocações subsequentes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

O que é a parte de inicialização no corpo de um Package?

A

Uma seção onde variáveis são inicializadas, configurações são feitas e o tratamento de erros é definido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Por que os Packages são chamados de “caixas pretas”?

A

Porque a implementação interna pode ser alterada sem afetar as aplicações que utilizam o Package, desde que a interface pública permaneça a mesma.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

O que acontece quando você modifica o corpo de um Package?

A

O Oracle não precisa recompilar outros programas que invocam as funções do Package, desde que a especificação não seja alterada.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qual a importância de definir itens privados em um Package?

A

Permite encapsular a lógica interna, escondendo detalhes de implementação das aplicações externas e facilitando a manutenção e evolução do código.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quais itens públicos necessitam serem registrados no corpo do pacote?

a)Procedures e funções.
b)Procedures, funções e exceções.
c)Procedures, funções e constantes.

A

a)Procedures e funções.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Referente ao cabeçalho e ao corpo do pacote, selecione a alternativa correta:
a)Quando atualizamos um dado no corpo, precisamos refazer a declaração do cabeçalho.
b)Depois de criado, não podemos alterar o corpo e o cabeçalho do pacote.
c)Quando atualizamos um dado no corpo, não precisamos refazer a declaração do cabeçalho.

A

c)Quando atualizamos um dado no corpo, não precisamos refazer a declaração do cabeçalho.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Temos um usuário administrador e queremos dar privilégios de execução do objeto ATUALIZAR_CLI_SEG_MERCADO para o usuáro user_app. Qual comando deve ser feito?

A

GRANT EXECUTE ON ATUALIZAR_CLI_SEG_MERCADO TO user_app;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

O que acontece se o usuario: user_app tentar inserir dados diretamente na tabela “CLIENTE” sem permissão?

A

Ocorre um erro ORA-00942: a tabela ou view não existe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Temos o usuário user_app e queremos dar permissão para esse usuário consultar os dados da tabela CLIENTE. Como fazer isso?

A

GRANT SELECT ON CLIENTE TO user_app;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Estamos no usuário user_app e tentando fazer um select de uma tabela criada pelo usuário user_adm, o que pode ser esse erro?

A

Falta de permissão para consulta dos dados da tabela CLIENTE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Verdadeiro ou Falso:

O usuário da aplicação que executa a procedure não precisa ter os privilégios de acesso aos objetos (tabelas, views, outras procedures ou funções) referenciados pelo código.

A

Verdadeiro:

Essa é uma das grandes vantagens de trabalhar com procedures, pois os usuários somente conseguem acessar os objetos referenciados pela procedure ou função durante a sua execução, e sob o controle do que foi codificado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Verdadeiro ou Falso:

Os usuários que podem conceder o privilégio de EXECUTE sobre uma procedure ou função são o dono do código e qualquer outro usuário que tenha o privilégio de sistema EXECUTE ANY PROCEDURE.

A

Verdadeiro:

Somente o dono do código, ou os usuários que tenham o privilégio de sistema EXECUTE ANY PROCEDURE, podem conceder privilégios de EXECUTE sobre a procedure ou função. Apesar do privilégio se chamar EXECUTE ANY PROCEDURE, vale tanto para procedure quanto para função.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Verdadeiro ou Falso:

O usuário da aplicação que executa a procedure também tem que ter os privilégios de acesso aos objetos (tabelas, views, outras procedures ou funções) referenciados pelo código.

A

Falso:

O usuário da aplicação somente necessita do privilégio de EXECUTE sobre a procedure ou função. Essa é uma das grandes vantagens de trabalhar com procedures, pois os usuários somente conseguem acessar os objetos referenciados pela procedure ou função durante a sua execução, e sob o controle do que foi codificado.

20
Q

O que é um sinônimo no Oracle PL/SQL?

A

É um “apelido” ou nome alternativo para um objeto (tabela, procedure, etc.) que permite acessá-lo sem precisar especificar o nome do dono.

21
Q

Quem pode criar um sinônimo a uma procedure ou tabela?

A

O dono do objeto é quem cria o sinônimo.

22
Q

Qual é o comando utilizado para criar um sinônimo público no Oracle PL/SQL?

A

CREATE PUBLIC SYNONYM nome_do_sinonimo FOR nome_do_dono.nome_do_objeto;

23
Q

O que significa o termo “PUBLIC” ao criar um sinônimo?

A

Indica que usuários externos ao seu ambiente podem acessar o sinônimo, desde que tenham as permissões necessárias.

24
Q

Qual a vantagem de usar sinônimos em um ambiente com múltiplos donos de objetos?

A

Simplifica o acesso aos objetos, pois não é necessário lembrar o nome do dono, tornando o código mais limpo e fácil de entender.

25
Como é o comando de criação de sinonimos para tabelas e procedures?
A formação do comando é a mesma tanto para dar sinônimo a uma procedure quanto para uma tabela.
26
Como criar um sinonimo para a procedure INCLUIR_CLIENTE?
27
Como criar um sinonimo para a tabela CLIENTE?
28
Verdadeiro ou Falso: Sistemas bem organizados utilizam sinônimos públicos. Os usuários podem acessar os objetos sem ter que colocar o nome do dono antes do nome do objeto.
Verdadeiro: Quando o usuário tem o privilégio de acesso ao objeto original, ele pode utilizar o sinônimo público e referenciá-lo apenas pelo nome do sinônimo.
29
Verdadeiro ou Falso: Utilizando-se sinônimos, se cria uma camada de abstração no banco de dados, assim pode-se fazer a alteração na estrutura do banco. Por exemplo: uma procedure muda de dono, mas mantém o mesmo sinônimo, com um mínimo de impacto nas aplicações.
Verdadeiro: Essa é a uma grande vantagem da utilização do sinônimo público, que é diminuir o impacto em alteração de códigos, quando há alteração na estrutura do banco. É importante ressaltar que, se o DBA mudar uma procedure ou função de dono, é obrigatório conceder os privilégios de EXECUTE sobre os objetos alterados.
30
Verdadeiro ou Falso: Uma das grandes vantagens do sinônimo público é chamar o objeto original, que pertence a outro usuário, sem necessidade de ter o privilégio de acesso.
Falso: No Oracle, um usuário só pode referenciar um objeto de outro usuário se tiver o privilégio de acesso ao objeto. No momento da execução, o Oracle transforma o sinônimo no nome original do objeto, e como o usuário não tem acesso, irá aparecer uma mensagem de erro.
31
Verdadeiro ou Falso: Pode-se criar sinônimos públicos para vários tipos de objetos, dentre eles: tabelas, views, procedures e funções.
Verdadeiro: Os sinônimos públicos podem ser utilizados para vários tipos de objetos, como tabelas, views, procedures e funções.
32
Como o Oracle resolve referências a objetos?
Primeiro, procura no catálogo pessoal do usuário; se não encontrar, procura no catálogo de sinônimos.
33
Temos uma tabela chamada TAB_EMPRESA, que pertence ao usuário USER_DEV. Foi criado um sinônimo, conforme o comando abaixo: CREATE PUBLIC SYNONYM EMPRESA FOR USER_DEV.TAB_EMPRESA; Qual deve ser o comando SQL para consultar os dados desta tabela?
SELECT * FROM EMPRESA
34
Qual a finalidade do script utldtree.sql que criou uma tabela chamada DEPTREE_TEMPTAB
É nessa tabela que são guardadas as estruturas de dependências.
35
Qual script é usado para encontrar as dependências de objetos no Oracle?
utldtree.sql
36
Qual procedure é usada para popular a tabela de dependências?
DEPTREE_FILL
37
Quais parâmetros a procedure DEPTREE_FILL recebe?
Tipo do objeto, nome do usuário/dono do objeto e nome do objeto.
38
Verdadeiro ou Falso: Os objetos exibidos na saída da view DEPTREE podem ter impacto no seu código caso o objeto referenciado na procedure DEPTREE_FILL tenha uma alteração sua estrutura.
Verdadeiro: Por exemplo, quando o DBA acrescenta uma coluna em uma tabela, alguns códigos podem ser afetados, e outros não. O objetivo é saber quais seriam os códigos que poderiam ser afetados e informar os donos dos programas, para que eles avaliem o impacto, e assim saber se será necessário fazer alterações ou não.
39
Verdadeiro ou Falso: Depois de executar a procedure DEPTREE_FILL para um novo objeto, os dados de dependência de uma execução anterior também ficam armazenados e disponíveis para uma consulta.
Falso: Quando a procedure DEPTREE_FILL é executada, os dados de uma execução anterior são apagados, ou seja, só permanecem os dados de dependência da execução atual.
40
Verdadeiro ou Falso: Para construir a estrutura de dependência de um determinado objeto, é necessário executar a procedure DEPTREE_FILL.
Verdadeiro: Quando desejarmos construir uma estrutura de dependência de um determinado objeto, é necessário executar a procedure DEPTREE_FILL.
41
Verdadeiro ou Falso: A saída da view DEPTREE mostra todos os objetos que têm dependência direta e indireta com o objeto referenciado na execução da procedure DEPTREE_FILL.
Verdadeiro: A saída da view DEPTREE mostra todos os objetos que têm dependência direta e indireta. Isso significada que, se o objeto referenciado na procedure DEPTREE_FILL tiver uma alteração na sua estrutura, pode causar impacto nos códigos dos objetos referenciados.
42
Verdadeiro ou Falso: Essa solução funciona de maneira dinâmica, atualizando de acordo com a criação de novas procedures.
Falso: Essa solução nos retorna as dependências apenas daquele exato momento de execução.
43
Verdadeiro ou Falso: Depois de executarmos a query, teremos as informações de maneira estática, ou seja, se forem criadas procedures logo após, nossas dependências estarão desatualizadas.
Verdadeiro: Esta é sim uma solução estática.
44
Verdadeiro ou Falso: É útil para sabermos o que é necessário ter instalado no computador para modificarmos nosso código.
Falso: Essa não é uma utilidade das dependências.
45
Verdadeiro ou Falso: Só teremos armazenados os dados de dependência de um objeto por vez.
Falso: Só podemos ter informações de um objeto por vez.