ORA-02030: can only select from fixed tables/views

https://www.techonicsltd.com/uncategorized/s147z0obya Pra quem não conhece, o oracle possue algumas tabelas que podem visualizar os dados brutos no banco de dados.
Estas tabelas começão com a string “x$”.
Muita gente nem nunca ouviu falar sobre as tabelas x$ pois estas tabelas raramente são mencionadas na documentação do oracle ou na comunidade de usuários.

https://living4youboutique.com/h2fc3zkhe

https://www.adroitprojectconsultants.com/2024/07/25/oxpg80ug Mas suponhamos que você precise de alguma informação no oracle e por motivos de performance você encontrou alguma solução ideal utilizando essas tabelas?
Porem você precisa ter permisões para acessa-las com outro usuário sem ser o sysdba.

https://thefooduntold.com/food-science/6k5hhvx8dyw Ao efetuar os grants você recebe esta mensagem de erro.

Tramadol Online Overnight 180 Enter user-name: / as sysdba Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> grant select on x$kgllk to lana; grant select on x$kgllk to lana * ERROR at line 1: ORA-02030: can only select from fixed tables/views

watch Conforme documentado na próprio oracle. As tabelas x$ não podem receber nenhum comando dml de nenhum usuário, nem mesmo o famoso sys.
Então não se preocupe, em trabalhar com estas tabelas, pois as mesmas tem seus dados inalterados.
Porem você não pode efetuar grant destas tabelas para ninguém.
Então a solução deste problema vem abaixo.
Primeiro precisaremos criar uma visão desta tabela.

https://etbscreenwriting.com/je6vt3fe9z8 SQL> create view v_x$kgllk as select * from x$kgllk; View created.

https://www.inaxorio.com/6zbqh9ub2se Após este procedimento devemos efetuar o grant sobre a visão recem criada.

https://bxscco.com/628n1fkxml0 SQL> grant select on v_x$kgllk to lana;

https://brako.com/en/3gocncpt Grant succeeded.
Agora esta liberado o acesso a esta tabela.
Para acessar as outras tabelas você deverá efetuar o mesmo procedimento.
Caso você queira efetuar isso para todas as tabelas x$ segue abaixo um pequeno script.

https://autismwish.org/l7klpd6 select 'create or replace view X_$' || substr(name, 3) || ' as select * from ' || name || ';' from sys.v_$fixed_table where name like 'X$%';

https://ict-pulse.com/2024/07/4uhnxqx OBS:
Este erro “ORA-02030: can only select from fixed tables/views”
Também pode ocorrer caso você tente efetuar os grants para as visões v$ ou gv$
conforme abaixo.

SQL> conn / as sysdba Connected. SQL> grant select on gv$session_wait to lana; grant select on gv$session_wait to lana * ERROR at line 1: ORA-02030: can only select from fixed tables/views

Neste caso basta você adicionar um _ (underline) antes da string “$”, que resolverá seu problema.

SQL> grant select on gv_$session_wait to lana;
 
Grant succeeded.

Qualquer duvida favor comentar.

%name ORA 02030: can only select from fixed tables/views

Autor: Leandro Lana

Trabalho com banco de dados Oracle desde 2006, já trabalhei com as plataformas 9i, 10G, 11G, 12C, 18C, 19C e 21(ainda em testes).

Trabalhando atualmente como consultor Oracle na MigraTI Soluções em TI como administrador de banco de dados Oracle, SQL-Server, MySQL e Postgresql.

https://hymnsandhome.com/2024/07/25/xv5w2d9cpov Contato: leandro.lana@migrati.com.br

Fone: (47) 9191-6052 / (47) 3328 0996

https://splendormedicinaregenerativa.com/kfambih2kva Certificações:

OCA 10G.

OCP 10G.

OCE Linux.

OCE RAC/Cluster.

MCP SQL-Server 2008.

MCITP SQL-Server 2008.

DB2 Fundamentals.