Eu uso o oráculo 12c. Eu tento conceder todos os privilégios de todas as tabelas para um usuário. E no futuro não preciso adicionar nenhum privilégio a esse usuário. Eu tenho que fazer isso. Não quero conceder tabelas do sistema a esse usuário. Eu escrevi o comando pl/sql. mas dá erro.
BEGIN
2 FOR t IN (select * from dba_tables where owner not like '%SYS%' AND owner not like '%ADMIN%' AND iot_type IS NULL)
3 LOOP
4 EXECUTE IMMEDIATE 'GRANT ALL PRIVILEGES ON '|| t.owner ||'.' || t.table_name ||' TO GGSTEST';
5 END LOOP;
6 END;
7 /
BEGIN
*
ERROR at line 1:
ORA-00905: missing keyword
ORA-06512: at line 4
Qual é o erro? obrigado.
Eu uso dbms_print
GRANT ALL ON OUTLN.OL$ TO GGSTEST
GRANT ALL ON OUTLN.OL$HINTS TO GGSTEST
GRANT ALL ON OUTLN.OL$NODES TO GGSTEST
GRANT ALL ON DBSNMP.BSLN_BASELINES TO GGSTEST
GRANT ALL ON APEX_040200.WWV_FLOW_LOG_HISTORY TO GGSTEST
GRANT ALL ON DBSNMP.BSLN_METRIC_DEFAULTS TO GGSTEST
GRANT ALL ON XDB.XDB$ROOT_INFO TO GGSTEST
GRANT ALL ON XDB.XDB$XDB_READY TO GGSTEST
GRANT ALL ON XDB.XDB$CDBPORTS TO GGSTEST
GRANT ALL ON XDB.XDB$IMPORT_TT_INFO TO GGSTEST
GRANT ALL ON XDB.XDB$TTSET TO GGSTEST
GRANT ALL ON XDB.XDB$H_INDEX TO GGSTEST
GRANT ALL ON XDB.XDB$D_LINK TO GGSTEST
GRANT ALL ON XDB.XDB$COLUMN_INFO TO GGSTEST
GRANT ALL ON XDB.XDB$PATH_INDEX_PARAMS TO GGSTEST
GRANT ALL ON XDB.X$NM7UJB7VOLFE92KV0GUML7K0LVSF TO GGSTEST
GRANT ALL ON XDB.X$QN7UJB7VOLFE92KV0GUML7K0LVSF TO GGSTEST
GRANT ALL ON XDB.X$PT7UJB7VOLFE92KV0GUML7K0LVSF TO GGSTEST
GRANT ALL ON XDB.APP_USERS_AND_ROLES TO GGSTEST
GRANT ALL ON XDB.APP_ROLE_MEMBERSHIP TO GGSTEST
GRANT ALL ON XDB.XDB$DBFS_VIRTUAL_FOLDER TO GGSTEST
BEGIN
*
ERROR at line 1:
ORA-00905: missing keyword
ORA-06512: at line 4
GRANT ALL PRIVILEGES ON ....
é a sintaxe privs do MySQL.Você precisa fazer:
Consulte a documentação .
É o comando certo. Anteriormente, dava erro por causa das tabelas de instalação do oracle.
o problema é devido a caracteres sendo interpretados por PL/SQL, como o cifrão ou a tag hash. Ao adicionar aspas duplas, você não receberá mais o erro.
Cumprimentos.
Por quê?
Sim você irá.
Assim que você adiciona outra tabela, você deve repetir todo o processo e deve fazê-lo para cada usuário. Eu sugeriria que este não é um uso eficiente do seu tempo.
Vamos concordar em discordar.
A grande maioria dos usuários não precisa (ou quer) "todos os privilégios" em nenhuma mesa; selecionar, inserir, excluir e atualizar é tudo o que eles precisam e tudo o que devem receber.
Como você vai explicar para sua Gerência como um sistema de Produção caiu (por quanto tempo você leva para recuperá-lo) porque algum Usuário, em algum lugar, decidiu derrubar uma tabela, só porque descobriu que poderia? Isso não é responsabilidade do usuário, portanto, eles não devem ter permissão para isso em primeiro lugar.
Leia sobre Papéis.
Conceda privilégios de nível de objeto a uma função e, em seguida, conceda essa função a [muitos] usuários. Quando você modifica tabelas, você só precisa [re]conceder privilégios para a(s) Função(ões) relevante(s); A Oracle cuidará de "cascar" esses privilégios para os Usuários relevantes. Se você precisar de diferentes "níveis" de privilégio para diferentes grupos de usuários, crie várias funções.