Az Oracle 12c szoftvert használom. Megpróbálom megadni az összes tábla összes jogosultságát egy felhasználónak. És a jövőben nem kell semmilyen jogosultságot hozzáadnom ahhoz a felhasználóhoz. Ezt meg kell tennem. Nem akarok rendszertáblákat adni annak a felhasználónak. Írtam pl / sql parancsot. de hibát ad.

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 

Mi a hiba? köszönöm.

A 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 

megjegyzéseket

  • próbáld meg duplán hozzáadni idézetek a tulajdonosnak és a táblázat neve. AZONNALI VÉGREHAJTÁS ‘ MINDEN PRIVILÉG MEGADÁSA A ” ‘ || t.tulajdonos || ‘ “. ” ‘ || t.table_name || ‘ ” TO GGSTEST ‘;
  • MINDEN TÁMOGATÁS A IX.AQ $ _STREAMS_QUEUE_TABLE_L-en GGSTEST-ig; ez nem hiba. De pl / sql, loop; hibát ad.
  • majd próbálkozzon ezzel: MINDENKÉNT TÁMOGATZON A IX-NEK. nem működik ‘ nem, lehet, hogy valami az Advanced Queue funkcióval rendelkezik.
  • Milyen ‘ s az objektum típusa? válassza az OBJECT_TYPE, STATUS lehetőséget azokból a dba_objektumokból, ahol tulajdonos = ‘ IX ‘ és object_name = ‘ AQ $ _STREAMS_QUEUE_TABLE_L ‘
  • kipróbáltam ‘ s működött. Állapottípus = TÁBLÁZAT és status = ÉRVÉNYES

Válasz

GRANT ALL PRIVILEGES ON .... a MySQL privs szintaxisa.

Tenned kell:

GRANT ALL ON SCHEMA.TABLE TO USER 

Lásd a dokumentációt .

Megjegyzések

  • Sziasztok, megtanítottam, hogy ez is egy MySQL-szintaxis volt, de: check ez
  • grant all privileges to USERNAME teljesen más, és egy db méretű dolog.
  • Van egy szakasz, ” Táblázat objektumjogosultságainak megadása egy felhasználónak: Példa ”
  • Valójában Isten tudja. Don ‘ nincs egy tesztelhető DB adatbázis: /
  • ugyanazt a hibát adja.

Válasz

Ez a megfelelő parancs. Korábban hibát okozott az oracle telepítési táblái miatt.

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; / 

Válasz

a probléma abból adódik, hogy a PL / SQL által értelmezett karakterek, például a dollárjel vagy a hash címke. Dupla idézőjelek hozzáadásával már nem kapja meg a hibát.

Üdvözlettel.

Megjegyzések

  • esetleg hash. nem ‘ nem ad hibát a dollárjellel.
  • Kizárom az APEX, XDB, FLOW_FILES, ORDDATA sémákat, és ez ‘ s működött.

Válasz

Igyekszem hogy az összes tábla összes jogosultságát megadjuk a felhasználónak.

Miért?

És a jövőben nem kell semmilyen jogosultságot hozzáadnom ahhoz a felhasználóhoz.

Igen, megteszi.
Amint hozzáad egy másik táblázatot, meg kell ismételnie az egész folyamatot és meg kell tennie minden egyes felhasználónál. Azt javaslom, hogy ez nem az Ön idejének hatékony felhasználása.

Ezt meg kell tennem.

Egyetértünk abban, hogy nem értünk egyet.

A felhasználók túlnyomó többségének nincs szüksége (vagy akarja) “minden jogosultságra” egyetlen táblán sem; csak kijelölésre, beillesztésre, törlésre és frissítésre van szükség, és mindenre szükség van meg kell adni.
Hogyan fogod elmagyarázni a menedzsmentednek, hogy egy termelési rendszer hogyan ment le (bármennyi időbe telik neked annak helyreállítása), mert néhány felhasználó valahol úgy döntött, hogy ledob egy asztalt , csak azért, mert rájöttek, hogy megtehetik? Ez nem a felhasználó felelőssége, ezért nekik nem kellene először engedélyt adniuk.

Olvassa el a szerepeket.
Objektumszintű jogosultságokat adjon meg egy szerepkörnek, majd adja meg ezt a szerepet [sok] felhasználónak. A táblák módosításakor csak [újra] meg kell adnia a jogosultságokat a megfelelő szerep (ek) nek; Az Oracle gondoskodik ezeknek a jogosultságoknak a lépcsőzetes átadásáról az érintett felhasználók számára. Ha különböző “szintű” jogosultságokra van szüksége a különböző felhasználói csoportok számára, hozzon létre több szerepet.

Megjegyzések

  • Bár ezek igaz dolgok lehetnek, soha nem ad információt arról, hogy változik-e a séma, ha az env dev vagy produkció, és ha ‘ s egy személyes projektre vagy cégére vonatkozik. Soha nem foglalkozik a szintaxissal kapcsolatos aktuális problémával.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük