Új hozzászólás Aktív témák
-
#65304576
törölt tag
-
#65304576
törölt tag
válasz
Sk8erPeter
#976
üzenetére
Attól függ, milyen jogosultságkezelésről beszélünk. Az adatbázis szintű és alkalmazás szintű két külön dolog, én az előbbiről beszéltem. Egy több ezer felhasználós alkalmazás simán használhat egyetlen adatbázis user-t. Itt természetesen az alkalmazás oldali jogosultságok kezelésén van a hangsúly. Ma már ritka (és szerintem jócskán elavult) az olyan alkalmazás, amely minden user-t külön db user-ként kezel, itt a jogosultságkezelés egyértelműen a db-ben kell legyen.
Viszont ma már nem egyszintű rendszerekről szoktunk beszélni, hanem egymással szoros kapcsolatban lévőkről, köztes interfészekről, akár közös adatbázison osztozó rendszerekről is. Itt a rendszerek közötti jogok kezelése alkalmazás oldalról értelmetlen (nem számítva a speciális middleware és ESB-szerű termékeket). -
#65304576
törölt tag
válasz
Sk8erPeter
#974
üzenetére
Ez már rég nem így van. Komoly helyeken ma már elvárás, hogy az adatbázis rendszeradminok ne férhessenek hozzá érzékeny adatokhoz, még DBA jogokkal sem. Részben törvényi előírás, részben céges policy lehet ennek az oka. Egy DBA pozíció nagyon kemény bizalmi állás, nekem is nagyon sok feltételt és kikötést kellett aláírnom és elfogadnom. Emellett a nagyobb, komolyabb rendszerek már mind rendelkeznek valamilyen védelmi eszközzel ilyen esetekre, ilyen pl. az Oracle Vault.
És Oracle DB-ben lehet oszlopra is jogosultságot definiálni, de ha nem kell, az adatbázis szintű auditálással is ellenőrizhető, hogy ki mihez fért hozzá, nem kell hozzá külön log-olást gyártani.

-
#65304576
törölt tag
Egy trükk Oracle-hez, máshol nem valószínű, hogy működik:
Az alapprobléma az, hogy tulajdonképpen egy folyamatos sorszám halmazt kellene előállítanunk, ami 1-től indul és valameddig tart. Naptár esetén értelemszerűen napokkal, de bármire jó lenne egy ilyen.
Nos, ezt így kell megoldani:SELECT LEVEL cnt FROM dual CONNECT BY LEVEL <= 100;
Ez visszaad egy táblát, amelyben minden rekord egymás után következik és csak sorszám (konkrétan 1-től 100-ig). Ha ezt összekötjük azzal, hogy Oracle-ben (is) a dátumtípus és a numerikus értékek között lehetségesek műveletek és az 1 (egy) pontosan egy napot jelent, már készen is van egy táblánk, ami tetszőleges dátumsort képes megjeleníteni. A tábla csak a memóriában létezik, nem kell tárolni, nagyon gyorsan képezhető, beágyazható, kaphat alias-t, stb., mindent lehet vele csinálni. Pl.:
select
days.next_days,
to_char(days.next_days, 'DAY') name_of_day,
to_char(days.next_days, 'D') day_of_week
from
(SELECT trunc(sysdate) + LEVEL next_days
FROM dual CONNECT BY LEVEL <= 7) days;Kisebb intervallumokra sokkal gyorsabb megoldás, mint a több táblás join.

-
#65304576
törölt tag
válasz
EEdem_Dtx
#293
üzenetére
A "DBA..." kezdetű nézeteket csak DBA joggal (role, nem összekeverendő a SYSDBA-val
) lehet látni. De ezeknek van "USER..." és "ALL..." nevű változata is. Az előbbiek minden olyan adatbázis objektumot tartalmaznak, amelyek az adott user tulajdonában (owner) vannak, az utóbbiak pedig mindazokat is, amelyeket valaki más kiajánlott neki GRANT-tal, vagy amelyek publikusak (a PUBLIC-nak lettek kiajánlva).
Esetedben az átlag user használhatja az user_tab_cols, all_tab_cols nézeteket - ha a tábla az övé, vagy joga van legalább SELECT-et futtatni rajta, vagy publikus.Demó adatbázisban a scott/tiger-nek adhatsz mindenféle jogokat, de élesben ne tedd (a sémát se tedd fel).
Emellett soha ne írj olyan pl/sql scriptet, ami ilyen problémát ideiglenes GRANT-tal próbálna megoldani. -
#65304576
törölt tag
Eltartott egy ideig, mire értelmeztem, de azt hiszem, értem.
Tehát van egy többé-kevésbé bonyolult képleted (kivonás), amit egy csomó más helyen is használni szeretnél ugyanazon select-en belül, és ezért szeretnéd először kiszámolni, majd a többi oszlopnál is valamiféle változót használni.A probléma csak kényelmi és vizuális ("csúnyán néz ki"), performanciára nincs hatása, mert az első kivonás eredménye kvázi konstansként behelyettesítődik majd a többi képletbe is (a parser felismeri az azonos kifejezést).
Az Oracle-nek egyébként nincs inline változója, bár al-select-ekkel (inline view, vagy with ... as) megoldható a dolog, azzal igen valószínű, hogy csak rosszabbul jársz.
Szóval marad a ctrl+c / ctrl + v.
(Vagy a pl/sql, de az is lassabb lesz.)Ha a kifejezést máshol is használni kellene (pl. where-ben), akkor már esetleg lehet gondolkozni azon, hogy előre kiszámolni és primary key alapján visszakötni a főtáblához, immár egyszerű oszlopként. Pl.:
with sub_diff as ( select id, end_time - start_time mp_diff
from table1 where (end_time - start_time) < 5 )
select d.data1 / t.mp_diff, d.data2 / t.mp_diff, d.data3 / t.mp_diff
from sub_diff t, table1 d
where d.id = t.id
Új hozzászólás Aktív témák
Hirdetés
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Hálózati / IP kamera
- Bluetooth hangszórók
- Revolut
- Amlogic S905, S912 processzoros készülékek
- Apple MacBook
- RAM topik
- Eladási mérföldkő: 5 millió példánynál a Silent Hill 2 Remake
- Energiaital topic
- Samsung Galaxy Felhasználók OFF topicja
- További aktív témák...
- Legion Pro 5 16ARX8 16" QHD+ IPS Ryzen 7 7745HX RTX 4070 32GB 1TB NVMe gar
- AlzaPower LML-120 Monitor Light Bar 5W, 51cm, fekete
- 27% - ÚJ Corsair VENGEANCE RGB 48GB (2x24GB) DDR5 6000MHz
- 9gen induló gamer(i5-9400/RX5700XT/16gb ddr4/SSD/hdd)
- Dell Precision 5570! 4K Touch / i7-12800H / RTX A2000 / 32GB DDR5 / 512GB NVMe! BeszámítOK
- MacBook Air 15" (M3, 8 GB RAM, 512 GB SSD)
- HP ProBook 650 G5 - i5 8265U, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- LG 27GS95QE - 27" OLED / QHD 2K / 240Hz & 0.03ms / 1000 Nits / NVIDIA G-Sync / AMD FreeSync
- 512GB NVMe SSD, 1 év gar - 2230
- iPhone 11 Pro Max / 64GB / Kártyafüggetlen / 12Hó Garancia / Akku:82% Face ID nem müködik
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



