Käytän oracle 12c: tä. Yritän myöntää kaikille taulukoille kaikki oikeudet käyttäjälle. Ja tulevaisuudessa minun ei tarvitse lisätä mitään oikeuksia tälle käyttäjälle. Minun on tehtävä tämä. En halua myöntää järjestelmätaulukoita tälle käyttäjälle. Kirjoitin pl / sql-komennon. mutta se antaa virheen.

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 

Mikä virhe on? kiitos.

Käytän 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 

Kommentit

  • Yritä lisätä kaksinkertainen lainaukset omistajalle ja taulukon nimi. SUORITA HETI ' ANNA KAIKKI ETUOSAT " ' || t.owner || ' ". " ' || t.table_name || ' " GGSTESTiin ';
  • ANNA KAIKKI IX.AQ $ _STREAMS_QUEUE_TABLE_L: stä GGSTEST: iin; se ei ole virhe. Mutta pl / sql, silmukka; se antaa virheen.
  • kokeile sitten tätä: ANNA KAIKKI IX. " AQ $ _STREAMS_QUEUE_TABLE_L " GGSTESTiin, jos se ei toimi ' ei, se voi olla jotain Advanced Queue -ominaisuudella …
  • Mitä ' s objektin tyyppi? valitse OBJECT_TYPE, STATUS Kohdasta dba_objektit, joissa owner = ' IX ' ja object_name = ' AQ $ _STREAMS_QUEUE_TABLE_L '
  • kokeilin sitä ' toimi. Tilan tyyppi = TAULUKKO ja tila = KELPOINEN

Vastaus

GRANT ALL PRIVILEGES ON .... on MySQL privs -syntaksi.

Sinun on tehtävä:

GRANT ALL ON SCHEMA.TABLE TO USER 

Katso ohjeet .

kommentit

  • Hei, opetin, että se oli myös MySQL-syntaksia, mutta: tarkista tämä
  • grant all privileges to USERNAME on täysin erilainen ja on db-laajuinen asia.
  • On osa nimeltä " Taulukon objektioikeuksien myöntäminen käyttäjälle: Esimerkki "
  • Itse asiassa Jumala tietää. Don ' ei ole kätevää testattavaa tietokantaa: /
  • Se antaa saman virheen.

Vastaa

Se on oikea komento. Aikaisemmin se antoi virheen Oraclen asennustaulukoiden takia.

BEGIN FOR t IN (select * from dba_tables where owner!="GGSTEST" AND owner not like "%SYS%" AND owner not like "%ORDDATA%" AND owner not like "%ADMIN%" AND owner not like "%APEX%" AND owner not like "%XDB%" AND owner not like "%FLOW_FILES%" AND owner not like "%OE%" AND iot_type IS NULL) LOOP EXECUTE IMMEDIATE "GRANT ALL PRIVILEGES ON "|| t.owner ||"." || t.table_name ||" TO GGSTEST"; END LOOP; END; / 

Vastaa

ongelma johtuu siitä, että PL / SQL tulkitsee merkkejä, kuten dollarin merkki tai hash-tagi. Lisäämällä lainausmerkkejä et enää saa virhettä.

Terveisin.

Kommentit

  • ehkä hash. se ei ' t anna virhettä dollarimerkillä.
  • Poissuljetaan APEX-, XDB-, FLOW_FILES-, ORDDATA-skeemat ja se ' toimivat.

Vastaa

Yritän myöntää kaikille taulukoille kaikki oikeudet käyttäjälle.

Miksi?

Ja tulevaisuudessa minun ei tarvitse lisätä mitään oikeuksia tälle käyttäjälle.

Kyllä, tulet.
Heti kun lisäät uuden taulukon, sinun on toistettava koko prosessi ja sinun on tehtävä se jokaiselle käyttäjälle. Ehdotan, että tämä ei ole aikasi tehokas käyttö.

Minun on tehtävä tämä.

Hyväksymme olla eri mieltä.

valtaosa käyttäjistä ei tarvitse (tai halua) ”kaikkia käyttöoikeuksia” missään taulukossa; valitse, lisää, poista ja päivitä kaikki mitä tarvitset ja kaikki heidän pitäisi annetaan.
Kuinka aiot selittää johtoosi, kuinka tuotantojärjestelmä laski (kuinka kauan sen palauttamiseen tarvitaan sinä ), koska joku käyttäjä päätti pudottaa pöydän jonnekin vain siksi, että he huomasivat voivansa? Se ei ole käyttäjän vastuu, joten heillä ei pitäisi olla siihen ensin lupaa.

Lue lisää rooleista.
Anna roolille objektitason käyttöoikeudet ja myönnä sitten rooli [monelle] käyttäjälle. Kun muokkaat taulukoita, sinun on vain [annettava] käyttöoikeudet asiaankuuluvalle roolille. Oracle huolehtii näiden oikeuksien ”kaskadista” asianomaisille käyttäjille. Jos tarvitset eri käyttöoikeustasoja eri käyttäjäryhmille, luo useita rooleja.

Kommentit

  • Vaikka nämä saattavat olla totta, hän ei koskaan anna tietoa siitä, muuttuuko skeema, onko env dev tai tuotanto, ja jos se ' s henkilökohtaiselle projektille tai hänen yritykselleen. Et koskaan käsittele hänen varsinaista syntaksia koskevaa ongelmaa.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *