[Baza danych Oracle]

Jutro będę instalować pierwszą w mojej firmie bazę Oracle DB w wersji 19c, reszta to w większości 12.2 albo 11, ale te ostatnie służą tylko jako swoisty "gateway" pomiędzy bazami produkcyjnymi a szkolnymi/postgresowymi

Dzisiaj na wirtualce testowałem całą procedurę którą jutro będę wykonywać i jeden etap wywołał u mnie pewną niepewność:
A mianowicie, w momencie gdy mając env już zainstalowanej bazy 19c wykonałem:

rman target /

connect catalog rcat/haslo@bazakatalogowa;
@DinapeS: w teorii nic się nie stanie. W praktyce zawsze coś się schrzani. W przypadku katalogu masz sprawę o tyle prostą, że nie pracuje 24h, więc możesz zrobić restore point i potestować za dnia. Czyli upgrade (komendę 2 razy trzeba wpisać) i resync, backup datafile jakiejś bazy 11/12. W moim przypadku jakieś drobne problemy były, gdzie mogłem to unregister/register. W przypadku upgrade do 12 w jakiś bazach musiałem pogrzebać w schemacie
Mam takie query:
SELECT tochar(dstamp, 'HH24') as HOUR, SUM(updateqty) as totalreceipt
FROM inventory
transaction
WHERE dstamp BETWEEN todate ('28/05/2021 18:00:00', 'dd/mm/yyyy hh24:mi:ss') AND
to
date('29/05/2021 06:00:00', 'dd/mm/yyyy hh24:mi:ss')
AND code = 'Receipt'
GROUP BY tochar(dstamp, 'HH24')
ORDER BY HOUR ASC ;

I teraz muszę dodać do tego drugą kolumnę, która bęzie mi pokazywałą total
putaway, czyli to samo query, tylko code = 'Putaway', reszta pozostaje bez zmian.
@nunczako
+ Jakby ktoś kiedyś potrzebował to tutaj rozwiązanie:
SELECT tochar(dstamp, 'HH24') as HOUR,
SUM(CASE WHEN code = 'Receipt' THEN update
qty END) as totalreceived,
SUM(CASE WHEN code = 'Putaway' THEN update
qty END) as totalputaway
FROM inventory
transaction
WHERE dstamp BETWEEN todate('28/05/2021 18:00:00', 'dd/mm/yyyy hh24:mi:ss') AND
to
date('29/05/2021 06:00:00', 'dd/mm/yyyy hh24:mi:ss')
GROUP BY to_char(dstamp, 'HH24')
ORDER BY HOUR ASC
[Baza danych Oracle, Posgres]

W bazie Oracle utworzony mam widok, który poprzez dblink odwołuje się do widoku w bazie Postgres

Użytkownik zgłosił problem związany z nieodpowiednimi danymi - przetestowałem problematyczne zapytanie i dostrzegłem że wszystkie polskie znaki są zastępowane przez jakieś dziwne kwadraty...

NLSDATABASEPARAMETERS w bazie Oracle to m.in:

NLSLANGUAGE=POLISH

NLSCHARACTERSET=AL32UTF8


Konfiguracja pliku /etc/odbc.ini to m.in:

Driver = /usr/lib64/psqlodbcsw.so

Charset = UTF8


Konfiguracja pliku $ORACLEHOME/hs/admin/init.ora to m.in:

HS
[Baza danych Oracle]
Instaluję właśnie nowe binarki pod bazę Oracle DB 19c (baza testowa/szkoleniowa pod system BMC Remedy 20.02) i instalator w podsumowaniu wywala mi błąd że Swap Size jest za mały
Serwer na którym to stawiam ma 13GB ramu, a Swapu aktualnie jest 4GB - instalator oczekuje przynajmniej tyle samo Swapu ile jest ramu - czyli 13GB

Pytanie, jak myślicie mogę to zignorować i kontynuować instalację, czy może spowoduje to jakieś
Możecie polecić materiały dotyczące optymalizacji oracle? Interesuje mnie optymalizacja pod względem zapytań, procedur PLSQL, zalety/wady procedur wywoływanych z paczek, chainów, jak powinienem rozwiązywać dane typy problemów. Materiały mogą być w każdej formie, preferuję książki, artykuły.
#sql #oracle
Mirki mam problem do ogarnięcia na bazie. Mam triger na tabeli, który przed insertem wywołuje procedurę. Problem jest taki, że to dość istotna tabela z punktu widzenia całego systemu i robienie ma niej triggera nie jest najlepszym rozwiązaniem. Jak mogę to ominąć, by móc za każdym rekordem spełniającym warunek odpalać procedurę? Myślałem o jobie, ale on działa na czas, a nie na rekord, macie jakieś pomysły? #bazydanych #oracle #sql
@tomszczyk: No jak nie chcesz nic przyblokować to się za to nie bierz.
A jak chcesz się za to zabrać to zrób to dobrze, tak aby niczego nie zablokować
¯\_(ツ)_/¯

A najlepiej najpierw przetestuj na środowisku zapsowym. Skoro to istotny system to na pewno takie środowisko gdzieś obok stoi
[Baza danych Oracle]

Użytkownik, który korzysta z dblinka odwołującego się do bazy MS SQL Server zgłosił mi taki błąd:
"[FreeTDS][SQL Server]Invalid cursor state {24000}
ORA-02063: preceding 2 lines from DBAX
28500. 00000 - "connection from ORACLE to a non-Oracle system returned this message:"
*Cause: The cause is explained in the forwarded message.
*Action: See the non-Oracle system's documentation of the forwarded message."

- Błąd występuje co drugie zapytanie SQL.

Orientujecie się może
@DinapeS: często transakcje rozproszone, sprawdź:
select localtranid, state from dba2pcpending;
ale przede wszystkim - jak kolega wyżej - włączyć tracing w $ORACLE_HOME/HS i popatrzeć co się dzieje dokładnie.
[Baza danych Oracle]

W związku z często kończącym się miejscem, na serwerze, który obsługuje dużą bazę zrobiłem skrypt, który codziennie kompresuje pliki audytowe ($ORACLE_BASE/admin/{sid}/adump) do .tar.gz
Wszystko jest spoko, tylko pytanie - czy po stronie samej bazy muszę jeszcze coś wykonać? Coś w stylu crosscheck, żeby usunąć informacje o .aud których już nie ma w danej lokalizacji? (jeżeli takie informacje są w ogóle gdzieś zapisywane)
#oracle #bazydanych
#sql #oracle

Pracuje sobie na tych danych od oracle i mam takie zadanie od prowadzace
2. Pokaż nazwiska pracowników i informację o stażu pracy.
Osoby zatrudnione:
w 1990 roku z komentarzem-długoletni pracownik
w 2000 - nowy pracownik
pozostali - '***'

i napisalem taki kod, ale go nie odpala

select lastname, hiredate
from employees
case hire_date when '&1990' then 'Dlugoletni pracownik'
when '&2000' then 'Nowy pracownik'
else '***' end

zwraca mi
Mirki i mirabelki z #oracle #plsql i może #sql
Mam prawdopodobnie proste pytanie dotyczące odczytywania wartości number z json (oracle version up 18)

O ile takie coś w #sql:

SELECT JSON_VALUE('{"VALUE_NUMBER": "123.45"}','$.VALUE_NUMBER' RETURNING NUMBER) AS V_LICZBA FROM DUAL;

Zwraca mi normlanie na konsole wynik typu number

O tyle w #plsql przypisanie tego wyniku do zmiennej number nie działa. Zmienna number jest pusta
https://pastebin.com/Q70kEZzQ

#wtf ?
Komunikacja Postgres - Oracle - Oracle
Miał ktoś z Was kiedyś podobny problem?

Mam trzy bazy:
1. Oracle (główna, produkcja)
2. Oracle (zwykła robiąca za gateway)
3. Postgres (developerska)

1. W bazie produkcyjnej są dwa schematy:
a) Schemat aplikacyjny z utworzonym tam widokiem
b) Schemat użytkownika na potrzeby dblinka - użytkownik ten ma możliwość robienia select na powyższym widoku

2. W bazie "gateway" jest utworzony jeden schemat:
a) Schemat ten zawiera synonim,
@DinapeS: W sumie nie spotkałem się nigdy z tym. Sam DB LINK chyba działa poprawnie skoro zapytanie z bazy "gateway" działa.
Czy w 1a) masz w danych jakieś daty? Jeśli tak to spróbuj napisać select todate(kolumnazdatą, maska) i zobaczyć czy wtedy zwraca OK.
Mam podejrzenie, że postgresql i oracle mają inne formaty daty.
Oczywiście to
date() to funkcja oracle, powinieneś spróbować analogicznej w postgresql.
Baza danych Oracle

Orientujecie się może czy w jakiś sposób jest możliwość przyspieszenia wykonywania select z widoku?

Mianowicie mam taką sytuację:
Baza Postgres (z której korzysta firma zewnętrzna) ↔ baza "gateway" (Oracle) ↔ główna baza (Oracle)

1) W bazie "gateway" utworzony jest widok który poprzez dblinka odwołuje się do widoku w głównej bazie
2) W bazie Postgres utworzony jest widok który poprzez dblinka odwołuje się do widoku utworzonego w pkt 1)

Firma
@DinapeS: sprawdzaj v$activesessionhistory na bazie gateway oraz głównej w calu znalezienia waitów, które się pojawiają przy egzekucji zapytań.
Jeśli problemem jest duży poziom odczytów na bazie głównej to tak jak napisał @bob9876 robisz widok zmaterializowany i zastępujesz nim zwykły widok.
Generalnie warto żebyś zaprzyjaźnił się z raportami ASH, ADDM oraz AWR, bez tego będzie ciężko.
@nbzwdsdzbcps: nie polecę, ale ze strony admina, nauczcie się kurła:
* zmiennych bindowanych
* poprawnego używania indeksów, bo jak robicie zapytania z niejawną konwersją typów danych, to oracle niekoniecznie zacznie używać indeksy, a najczęściej nie zacznie
* milion widoków to nie jest optymalny kod
* poprawnego otwierania i ZAMYKANIA sesji, a nie że potem w bazie 10 aktywnych sesji i 10 000 nieaktywnych, zjadających 95% PGA
Baza danych Oracle

Czy zmiany w pliku listener.ora oraz tnsnames.ora wymagają ponownego uruchomienia procesu listener?

Jeżeli tak, to czy takie ponowne uruchomienie na pracującej bazie produkcyjnej może wyrządzić jakieś problemy?

Muszę zrobić połączenie (dblinka) do bazy mssql ale to się wiąże z modyfikacją ww plików i nie chciałbym rozwalić bazy produkcyjnej ( ͡° ͜ʖ ͡°)
#oracle #bazydanych #informatyka
@bob9876: Jak to tylko statycznie?
A jak dodam nasłuch na hoście? poprzez standardowy wpis? To nie jest dynamiczny nasłuch?
Co do walletów to możliwe, że masz rację. Kiedyś to konfigurowałem ale nie pamiętam czy reload wystarczał.
#sql #oracle #plsql #bazydanych
Cześć :)
Jestem programistą baz danych Oracle i ETL Developerem. Przygotowałem poradnik z masą cennej wiedzy dla obecnych lub przyszłych programistów PL/SQL. Opisuję w nim 7 najczęstszych błędów, które możesz napotkać w kodzie PL/SQL. Z e-booka dowiesz się między innymi:
✅ jak poprawić wydajność aplikacji bazodanowej
✅ jak poprawnie logować błędy
✅ jak unikać hardcodowania w bazie danych

Cały poradnik możesz pobrać za darmo tutaj: https://nieinformatyk.pl/strona/plsql-bonus,430

Pozdrawiam, Darek
nieinformatyk - #sql #oracle #plsql #bazydanych 
Cześć :)
Jestem programistą baz da...

źródło: comment_1615808266vJ5ad9ulEVJwge3DfStGta.jpg

Pobierz