{"id":38960,"date":"2025-10-09T12:27:02","date_gmt":"2025-10-09T10:27:02","guid":{"rendered":"https:\/\/pomoc.comarch.pl\/cee\/?post_type=ht_kb&#038;p=38960"},"modified":"2025-10-09T12:28:37","modified_gmt":"2025-10-09T10:28:37","slug":"wlasciwosci-bazy-danych","status":"publish","type":"ht_kb","link":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/wlasciwosci-bazy-danych\/","title":{"rendered":"W\u0142a\u015bciwo\u015bci bazy danych"},"content":{"rendered":"<h3 id=\"wprowadzenie\" >Wprowadzenie<\/h3>\n<p>W\u0142a\u015bciwo\u015bci bazy danych umo\u017cliwiaj\u0105 r\u0119czne dostosowanie fizycznego uk\u0142adu tabel i indeks\u00f3w obiekt\u00f3w biznesowych, instrukcji bazy danych i inicjalizacji nowych po\u0142\u0105cze\u0144 z baz\u0105 danych.<\/p>\n<h3 id=\"grupa-docelowa\" >Grupa docelowa<\/h3>\n<ul>\n<li>Administratorzy<\/li>\n<li>Konsultanci techniczni<\/li>\n<\/ul>\n<h3 id=\"opis\" >Opis<\/h3>\n<p>Mo\u017cliwe jest u\u017cycie w\u0142a\u015bciwo\u015bci bazy danych w celu zmiany w\u0142a\u015bciwo\u015bci dost\u0119pu do bazy danych oraz modyfikacji modelu danych.<\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy pami\u0119ta\u0107, \u017ce nieprawid\u0142owe u\u017cycie w\u0142a\u015bciwo\u015bci bazy danych mo\u017ce powa\u017cnie zagrozi\u0107 sp\u00f3jno\u015bci danych systemu ERP. Ka\u017cda zmiana w\u0142a\u015bciwo\u015bci bazy danych powinna zosta\u0107 przetestowana w systemie testowym przed zastosowaniem jej w systemie produkcyjnym. Przed u\u017cyciem w\u0142a\u015bciwo\u015bci bazy danych zawsze nale\u017cy utworzy\u0107 kopi\u0119 zapasow\u0105 systemu.<strong><\/div><\/section><\/strong><\/p>\n<p>W\u0142a\u015bciwo\u015bci bazy danych s\u0105 zapisywane w pliku XML.<\/p>\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;database&gt;\n &lt;lobsBuffered\/&gt;\n&lt;\/database&gt;<\/code><\/pre>\n<p>W\u0142a\u015bciwo\u015bci bazy danych musz\u0105 by\u0107 przechowywane w katalogu klas systemu ERP. W\u0142a\u015bciwo\u015bci bazy danych s\u0105 zapisywane w oddzielnym pliku dla ka\u017cdej bazy danych. Nazwa pliku to:<\/p>\n<p><code>properties-&lt;nazwa bazy danych&gt;.xml<\/code><\/p>\n<p>W\u0142a\u015bciwo\u015bci bazy danych s\u0105 odczytywane jednorazowo przy pierwszym dost\u0119pie do danej bazy danych, tj. po uruchomieniu serwera aplikacji. Je\u015bli w\u0142a\u015bciwo\u015bci bazy danych s\u0105 u\u017cywane, komunikat jest wy\u015bwietlany w dzienniku serwera aplikacji.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>System ERP jest zainstalowany w katalogu C:\\ABC\\semiramis. W\u0142a\u015bciwo\u015bci bazy danych dla bazy danych &#8222;ABC00&#8221; musz\u0105 by\u0107 przechowywane w nast\u0119puj\u0105cym katalogu i w nast\u0119puj\u0105cym pliku:<\/p>\n<p><code>C:\\ABC\\semiramis\\classes\\properties-ABC00.xml<\/code><strong><\/div><\/section><\/strong><\/p>\n<p>Mo\u017cna u\u017cy\u0107 nast\u0119puj\u0105cego polecenia, aby wy\u015bwietli\u0107 dodatkowe dane wyj\u015bciowe debugowania dla w\u0142a\u015bciwo\u015bci bazy danych:<\/p>\n<p><code>dbgcls -class:com.cisag.sys.kernel.sql.CisDatabaseProperties<\/code><\/p>\n<p>Nale\u017cy zwr\u00f3ci\u0107 uwag\u0119, \u017ce dane wyj\u015bciowe debugowania mog\u0105 znacz\u0105co obni\u017cy\u0107 wydajno\u015b\u0107 serwera aplikacji. Polecenie to powinno by\u0107 stosowane wy\u0142\u0105cznie w systemach testowych.<\/p>\n<h4 id=\"tabele-i-indeksy\" >Tabele i indeksy<\/h4>\n<p>System ERP jest niezale\u017cny od bazy danych. Dlatego w systemie instalacyjnym nie ma metadanych zale\u017cnych od bazy danych dla Business Objects. System ERP generuje tabele i indeksy obiekt\u00f3w biznesowych w oparciu o istniej\u0105ce metadane dla ka\u017cdego systemu bazy danych dla wi\u0119kszo\u015bci przypadk\u00f3w u\u017cycia.<\/p>\n<h5 id=\"dostosuj-wlasciwosci-fizyczne\" >Dostosuj w\u0142a\u015bciwo\u015bci fizyczne<\/h5>\n<p>W przypadku instalacji z bardzo du\u017c\u0105 ilo\u015bci\u0105 danych, r\u0119czne dostosowanie fizycznych parametr\u00f3w tabel i indeks\u00f3w mo\u017ce poprawi\u0107 wydajno\u015b\u0107 systemu ERP.<\/p>\n<p>W\u0142a\u015bciwo\u015bci bazy danych umo\u017cliwiaj\u0105 do\u0142\u0105czenie dowolnego ci\u0105gu znak\u00f3w do instrukcji <code>CREATE TABLE<\/code> lub <code>CREATE INDEX<\/code> dla ka\u017cdej tabeli lub indeksu. Je\u015bli tabela lub indeks s\u0105 nowo utworzone, zmodyfikowana instrukcja jest wykonywana.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Tabela <em>ABC<\/em> nie posiada indeksu innego ni\u017c klucz podstawowy i jest przeszukiwana tylko przy jego u\u017cyciu. Tabela <em>ABC<\/em> mo\u017ce zosta\u0107 utworzona dla bazy danych <em>XYZ00<\/em> przy u\u017cyciu w\u0142a\u015bciwo\u015bci bazy danych jako tabela z indeksem:<\/p>\n<pre><code>&lt;table&gt;\n &lt;name&gt;ABC&lt;\/name&gt;\n &lt;physical&gt;ORGANIZATION INDEX&lt;\/physical&gt;\n&lt;\/table&gt;<\/code><\/pre>\n<p>Dla indeksu I123, 20% miejsca w blokach powinno by\u0107 zarezerwowane na przysz\u0142e aktualizacje:<\/p>\n<pre><code>&lt;index&gt;\n &lt;name&gt;I123&lt;\/name&gt;\n &lt;physical&gt;PCTFREE 20&lt;\/physical&gt;\n&lt;\/index&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<p>W\u0142a\u015bciwo\u015bci bazy danych dla tabeli lub indeksu staj\u0105 si\u0119 skuteczne dopiero po utworzeniu tabeli lub indeksu, tj. tylko wtedy, gdy narz\u0119dzie <a href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/reorganizacja-obiektow-biznesowych-rgzbo\/\">Reorganizacja obiekt\u00f3w biznesowych (rgzbo)<\/a> jest wywo\u0142ywane z opcj\u0105 <code>-force<\/code> lub gdy obiekt biznesowy zostanie zmieniony przez aktualizacje oprogramowania lub w systemie deweloperskim.<\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy pami\u0119ta\u0107, \u017ce narz\u0119dzia <em>Reorganizacja obiekt\u00f3w biznesowych (rgzbo)<\/em> nie wolno u\u017cywa\u0107 w czasie, gdy dowolne aplikacje odczytuj\u0105 lub zapisuj\u0105 dane w tworzonych tabelach. Oznacza to w szczeg\u00f3lno\u015bci, \u017ce nie nale\u017cy stosowa\u0107 go w systemie produkcyjnym w sytuacji, gdy u\u017cytkownicy s\u0105 zalogowani lub realizowane s\u0105 zlecenia przetwarzania.<strong><\/div><\/section><\/strong><\/p>\n<p>Narz\u0119dzie <a title=\"Wy\u015bwietlenie tabel baz danych (dspdbt)\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/wyswietlenie-tabel-baz-danych-dspdbt\/\">Wy\u015bwietlenie tabel baz danych (dspdbt)<\/a> wy\u015bwietla tabele i nazwy indeks\u00f3w obiektu biznesowego.<\/p>\n<h5 id=\"dostosowanie-kolejnosci-kolumn\" >Dostosowanie kolejno\u015bci kolumn<\/h5>\n<p>System zarz\u0105dzania baz\u0105 danych <strong>Oracle<\/strong> mo\u017ce rozdziela\u0107 kolumny tabeli na wiele blok\u00f3w w zale\u017cno\u015bci od ich kolejno\u015bci. W wyniku tego, do odczytania jednego wiersza mo\u017ce by\u0107 konieczne odczytanie wielu blok\u00f3w. Dlatego kolumny szczeg\u00f3lnie cz\u0119sto u\u017cywane powinny znajdowa\u0107 si\u0119 razem w jednym bloku, aby np. w zapytaniach wystarczy\u0142 odczyt tylko jednego bloku.<\/p>\n<p>Przyk\u0142ad:<\/p>\n<p>Kolumny <strong>\u201eGUID\u201d<\/strong>, <strong>\u201eCODE\u201d<\/strong> i <strong>\u201eDESCRIPTION\u201d<\/strong> tabeli <strong>\u201eABC\u201d<\/strong> maj\u0105 by\u0107 pierwszymi kolumnami:<\/p>\n<pre><code>&lt;table&gt; \n &lt;name&gt;ABC&lt;\/name&gt; \n &lt;columnSequence&gt; \n  GUID \n  CODE \n  DESCRIPTION \n &lt;\/columnSequence&gt; \n&lt;\/table&gt;<\/code><\/pre>\n<p>Do obliczenia optymalnej kolejno\u015bci kolumn na podstawie danych monitoringu nale\u017cy u\u017cy\u0107 narz\u0119dzia <a title=\"Optymalizacja kolejno\u015bci kolumn (optclmsqn)\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/optymalizacja-sekwencji-kolumn-optclmsqn\/\">Optymalizacja kolejno\u015bci kolumn (optclmsqn)<\/a>. Narz\u0119dzie to mo\u017ce r\u00f3wnie\u017c zmienia\u0107 kolejno\u015b\u0107 kolumn w tabeli w bazie danych.<\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy pami\u0119ta\u0107, \u017ce przy u\u017cyciu polecenia ALTER TABLE nowe kolumny s\u0105 dodawane na ko\u0144cu tabeli. Zaleca si\u0119 u\u017cycie CREATE TABLE AS SELECT lub sprawdzenie po zmianie wersji systemu, czy kolejno\u015b\u0107 kolumn nadal jest optymalna.<strong><\/div><\/section><\/strong><\/p>\n<h4 id=\"nawiazywanie-polaczenia\" >Nawi\u0105zywanie po\u0142\u0105czenia<\/h4>\n<p>Za pomoc\u0105 w\u0142a\u015bciwo\u015bci bazy danych mo\u017cna wykonywa\u0107 dodatkowe polecenia podczas nawi\u0105zywania ka\u017cdego po\u0142\u0105czenia z baz\u0105 danych. Dzi\u0119ki tym poleceniom mo\u017cliwa jest modyfikacja w\u0142a\u015bciwo\u015bci po\u0142\u0105cze\u0144 bazodanowych u\u017cywanych przez system ERP. Polecenia wykonywane s\u0105 w takiej kolejno\u015bci, w jakiej zosta\u0142y zdefiniowane w pliku XML.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Bezpo\u015brednio po otwarciu nowego po\u0142\u0105czenia z baz\u0105 danych <em>XYZ00<\/em> mo\u017cna wykona\u0107 polecenie: <em>ALTER SESSION SET NLS_COMP=&#8217;ANSI&#8217;<\/em>.<\/p>\n<pre><code>&lt;connectStatement&gt;\n ALTER SESSION SET NLS_COMP='ANSI'\n&lt;\/connectStatement&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h4 id=\"zastepowanie-polecen-bazodanowych\" >Zast\u0119powanie polece\u0144 bazodanowych<\/h4>\n<p>Za pomoc\u0105 w\u0142a\u015bciwo\u015bci bazy danych mo\u017cna przed wykonaniem zast\u0119powa\u0107 wybrane polecenia bazodanowe innymi. Umo\u017cliwia to na przyk\u0142ad wstawienie wskaz\u00f3wek dla optymalizatora lub zmian\u0119 kolejno\u015bci \u0142\u0105cze\u0144 (JOIN) w poleceniu bazodanowym. Dzi\u0119ki w\u0142a\u015bciwo\u015bciom bazy danych optymalizacje te mo\u017cna przeprowadzi\u0107 bez konieczno\u015bci zmiany kodu programu systemu ERP.<\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy bezwzgl\u0119dnie upewni\u0107 si\u0119, \u017ce zast\u0105pienie nie zmienia wyniku polecenia bazodanowego. Nale\u017cy bezwzgl\u0119dnie pami\u0119ta\u0107, \u017ce b\u0142\u0119dne u\u017cycie tej funkcji mo\u017ce nieodwracalnie naruszy\u0107 sp\u00f3jno\u015b\u0107 bazy danych. Ka\u017cd\u0105 zamian\u0119 polece\u0144 bazodanowych nale\u017cy dok\u0142adnie przetestowa\u0107.<strong><\/div><\/section><\/strong><\/p>\n<p>Zast\u0119powanie polece\u0144 bazodanowych powinno stanowi\u0107 przypadek wyj\u0105tkowy. Wszystkie zamiany, dla kt\u00f3rych jest to mo\u017cliwe, nale\u017cy mo\u017cliwie najszybciej przenie\u015b\u0107, np. jako adaptacj\u0119, do \u015brodowiska deweloperskiego.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Polecenie bazodanowe:<\/p>\n<p><code>SELECT * FROM \"ITEM001\" WHERE \"GUID\"=?<\/code><\/p>\n<p>na bazie danych <em>XYZ00<\/em> ma zosta\u0107 zast\u0105pione przez:<\/p>\n<p><code>SELECT * FROM XYZ00.\"ITEM001\" WHERE \"GUID\"=?<\/code><\/p>\n<p>Poni\u017cszy XML wykonuje zast\u0105pienie:<\/p>\n<pre><code>&lt;replacement&gt;\n &lt;original&gt;\n  SELECT * FROM \u201cITEM001\u201d WHERE \u201cGUID\u201d=?\n &lt;\/original&gt;\n &lt;replaced&gt;\n  SELECT * FROM XYZ00.\u201dITEM001\u201d WHERE \u201cGUID\u201d=?\n &lt;\/replaced&gt;\n&lt;\/replacement&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h4 id=\"awaria-bazy-danych-database-failover\" >Awaria bazy danych (Database-Failover)<\/h4>\n<p>Obs\u0142ugiwane systemy zarz\u0105dzania bazami danych (DBMS) udost\u0119pniaj\u0105 r\u00f3\u017cne mechanizmy obs\u0142ugi awarii bazy danych (<em>Failover<\/em>). Funkcjonalno\u015b\u0107 oferowana przez DBMS nie zawsze jednak zapewnia oczekiwany przez u\u017cytkownika poziom niezawodno\u015bci.<\/p>\n<p>System ERP udost\u0119pnia opcjonalne, aktywowane funkcje, kt\u00f3re mog\u0105 zwi\u0119kszy\u0107 poziom niezawodno\u015bci podczas obs\u0142ugi awarii bazy danych (<em>Database-Failover<\/em>).<\/p>\n<h5 id=\"monitor-transakcji\" >Monitor transakcji<\/h5>\n<p>Monitor transakcji zwi\u0119ksza niezawodno\u015b\u0107 przy operacjach zapisu wykonywanych przez system ERP. Dzi\u0119ki monitorowi transakcji mo\u017cliwe jest rozpoznanie w przypadku b\u0142\u0119du, czy transakcja zapisu zosta\u0142a wykonana pomy\u015blnie, czy zako\u0144czy\u0142a si\u0119 niepowodzeniem. W sytuacji niepowodzenia transakcja zapisu jest ponawiana.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Poni\u017cszy fragment XML aktywuje monitor transakcji:<\/p>\n<pre><code>&lt;transactionMonitor\/&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h5 id=\"buforowanie-lob\" >Buforowanie LOB<\/h5>\n<p>Niekt\u00f3re systemy zarz\u0105dzania bazami danych (np. Oracle 10 i 11) nie s\u0105 w stanie zapewni\u0107 niezawodno\u015bci obs\u0142ugi awarii bazy danych (<em>Database-Failover<\/em>) w przypadku zapyta\u0144 z du\u017cymi obiektami binarnymi lub tekstowymi (BLOB lub CLOB, \u0142\u0105cznie okre\u015blane jako LOB). System ERP mo\u017ce zwi\u0119kszy\u0107 niezawodno\u015b\u0107 przy dost\u0119pie do kolumn LOB poprzez buforowanie ich zawarto\u015bci.<\/p>\n<p>Buforowanie LOB dotyczy odczytu danych za po\u015brednictwem Business Objects oraz odczytu z Knowledge Store. Odczyt realizowany poprzez ODBC-SQL lub OQL nie jest zabezpieczany przez system ERP. Oznacza to, \u017ce wi\u0119kszo\u015b\u0107 aplikacji interaktywnych oraz aplikacji dzia\u0142aj\u0105cych w tle staje si\u0119 zabezpieczona przed awari\u0105 przy zastosowaniu buforowania LOB, nawet je\u015bli DBMS nie obs\u0142uguje <em>Failover<\/em> dla obiekt\u00f3w LOB. Jednak generowanie dokument\u00f3w, raport\u00f3w oraz aplikacje typu <em>Lista<\/em> mog\u0105 przerywa\u0107 dzia\u0142anie mimo aktywnego buforowania LOB.<\/p>\n<p>Buforowanie LOB zwi\u0119ksza zapotrzebowanie na pami\u0119\u0107 serwera aplikacji oraz mo\u017ce powodowa\u0107 dodatkowe operacje na systemie plik\u00f3w serwera aplikacji.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Poni\u017cszy XML aktywuje buforowanie LOB:<\/p>\n<pre><code>&lt;lobsBuffered\/&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h5 id=\"limit-czasu-przelaczenia-awaryjnego-failover-timeout\" >Limit czasu prze\u0142\u0105czenia awaryjnego (Failover-Timeout)<\/h5>\n<p>System zarz\u0105dzania baz\u0105 danych (DBMS) mo\u017ce by\u0107 tymczasowo niedost\u0119pny w trybie produkcyjnym. W takim przypadku przez okre\u015blony czas nawi\u0105zanie po\u0142\u0105czenia z systemem zarz\u0105dzania baz\u0105 danych nie jest mo\u017cliwe. Mo\u017cna ustawi\u0107, jak d\u0142ugo serwer aplikacji ma pr\u00f3bowa\u0107 nawi\u0105za\u0107 po\u0142\u0105czenie z systemem DBMS. Po up\u0142ywie tego czasu, aplikacja, kt\u00f3ra za\u017c\u0105da\u0142a po\u0142\u0105czenia z baz\u0105 danych, zostanie zazwyczaj przerwana z komunikatem o b\u0142\u0119dzie.<\/p>\n<p>Czas trwania podaje si\u0119 jako warto\u015b\u0107 liczbow\u0105 w minutach. Je\u015bli warto\u015b\u0107 nie zostanie podana, serwer aplikacji b\u0119dzie pr\u00f3bowa\u0142 nawi\u0105za\u0107 po\u0142\u0105czenie bez ograniczenia czasowego.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Limit czasu prze\u0142\u0105czenia awaryjnego 5 minut:<\/p>\n<pre><code>&lt;failoverTimeout&gt;5&lt;\/failoverTimeout&gt;<\/code><\/pre>\n<p>Limit czasu prze\u0142\u0105czenia awaryjnego niesko\u0144czony:<\/p>\n<pre><code>&lt;failoverTimeout\/&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h5 id=\"wykrywanie-bledow-bazy-danych\" >Wykrywanie b\u0142\u0119d\u00f3w bazy danych<\/h5>\n<p>System ERP analizuje komunikaty o b\u0142\u0119dach bazy danych. Na podstawie numeru b\u0142\u0119du system mo\u017ce na przyk\u0142ad rozpozna\u0107, czy nale\u017cy zainicjowa\u0107 prze\u0142\u0105czenie awaryjne (failover) bazy danych. Komunikaty o b\u0142\u0119dach bazy danych wraz z ich znaczeniem s\u0105 na sta\u0142e zakodowane w systemie ERP. W razie potrzeby mo\u017cna doda\u0107 do systemu ERP dodatkowe komunikaty o b\u0142\u0119dach.<\/p>\n<p>Obs\u0142ugiwane s\u0105 nast\u0119puj\u0105ce typy komunikat\u00f3w o b\u0142\u0119dach:<\/p>\n<table style=\"width: 833px;\">\n<tbody>\n<tr>\n<td style=\"width: 251px;\" width=\"161\"><strong>Typ<\/strong><\/td>\n<td style=\"width: 582px;\" width=\"380\"><strong>Opis<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 251px;\" width=\"161\">CONNECTION_LOST<\/td>\n<td style=\"width: 582px;\" width=\"380\">Po\u0142\u0105czenie z serwerem bazy danych zosta\u0142o zerwane lub nie mo\u017cna go nawi\u0105za\u0107, poniewa\u017c serwer bazy danych jest niedost\u0119pny. Zostaje zainicjowane prze\u0142\u0105czenie awaryjne bazy danych.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 251px;\" width=\"161\">QUERY_TIMEOUT<\/td>\n<td style=\"width: 582px;\" width=\"380\">Zapytanie do bazy danych zosta\u0142o przerwane z powodu przekroczenia limitu czasu. Zapytanie nie jest ponawiane, a u\u017cytkownikowi wy\u015bwietlany jest komunikat o b\u0142\u0119dzie.<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 251px;\" width=\"161\">DEAD_LOCK_VICTIM<\/td>\n<td style=\"width: 582px;\" width=\"380\">Zapytanie do bazy danych zosta\u0142o przerwane z powodu blokady i musi zosta\u0107 wykonane ponownie.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Komunikat o b\u0142\u0119dzie jest identyfikowany za pomoc\u0105 SQL-State i numeru b\u0142\u0119du. W przypadku b\u0142\u0119du bazy danych system wy\u015bwietla stan SQL-State i numer b\u0142\u0119du. W celu wykrycia b\u0142\u0119du nale\u017cy poda\u0107 co najmniej jedn\u0105 z tych warto\u015bci. Gdy wyst\u0105pi b\u0142\u0105d bazy danych, dzieje si\u0119 co nast\u0119puje:<\/p>\n<ul>\n<li>Sprawdzane jest, czy wyst\u0105pi\u0142 b\u0142\u0105d rozpoznany przez system ERP. Je\u015bli tak, u\u017cywany jest ten typ b\u0142\u0119du.<\/li>\n<li>Nast\u0119pnie sprawdzane jest, czy b\u0142\u0105d zosta\u0142 zdefiniowany we w\u0142a\u015bciwo\u015bciach bazy danych. Je\u015bli wszystkie okre\u015blone w\u0142a\u015bciwo\u015bci pasuj\u0105 do b\u0142\u0119du, u\u017cywany jest odpowiedni typ b\u0142\u0119du.<\/li>\n<li>B\u0142\u0105d jest traktowany jako b\u0142\u0105d nierozpoznany.<\/li>\n<\/ul>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Rozpoznanie b\u0142\u0119du o stanie SQL \u201e42000\u201d i numerze b\u0142\u0119du 937 jako utrat\u0119 po\u0142\u0105czenia:<\/p>\n<pre><code>&lt;exception&gt;\n &lt;type&gt;CONNECTION_LOST&lt;\/type&gt;\n &lt;errorCode&gt;937&lt;\/errorCode&gt;\n &lt;sqlState&gt;42000&lt;\/sqlState&gt;\n&lt;\/exception&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h5 id=\"optymalizacja-zmian-w-modelu-danych\" >Optymalizacja zmian w modelu danych<\/h5>\n<p>Zmiany w modelu danych mog\u0105 by\u0107 czasoch\u0142onne, zw\u0142aszcza przy przej\u015bciu na nowsz\u0105 wersj\u0119 oprogramowania. Dzi\u0119ki w\u0142a\u015bciwo\u015bciom bazy danych mo\u017cna skr\u00f3ci\u0107 ten czas, rezygnuj\u0105c z zachowania integralno\u015bci transakcji w cz\u0119\u015bci procesu przechodzenia na nowsz\u0105 wersj\u0119.<\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy bardzo dok\u0142adnie sprawdzi\u0107, czy u\u017cywana w\u0142a\u015bciwo\u015b\u0107 bazy danych nie zagra\u017ca sp\u00f3jno\u015bci systemu. W przypadku niew\u0142a\u015bciwego u\u017cycia firma nie ponosi odpowiedzialno\u015bci.<strong><\/div><\/section><\/strong><\/p>\n<h6 id=\"oracle-alter-table-vs-create-table-as-select\" >Oracle: ALTER TABLE vs. CREATE TABLE AS SELECT<\/h6>\n<p>Tworzenie nowych kolumn ze sta\u0142\u0105 warto\u015bci\u0105 pocz\u0105tkow\u0105, usuwanie kolumn oraz wyd\u0142u\u017canie atrybut\u00f3w typu <em>string<\/em> jest zazwyczaj realizowane za pomoc\u0105 polecenia <em>ALTER TABLE<\/em>.<\/p>\n<p>W przypadku baz danych Oracle, zamiast u\u017cywa\u0107 <em>ALTER TABLE<\/em>, mo\u017cna wprowadzi\u0107 zmiany w modelu danych za pomoc\u0105 polecenia <em>CREATE TABLE AS SELECT<\/em> oraz tymczasowej tabeli. Takie rozwi\u0105zanie wymaga wi\u0119cej miejsca na dysku w bazie danych, ale mo\u017ce prowadzi\u0107 do mniejszego obci\u0105\u017cenia dysku, szczeg\u00f3lnie w przypadku zastosowania w\u0142a\u015bciwo\u015bci <code>&lt;updateOracleNoLogging&gt;<\/code> lub <code>&lt;updateOracleParallel&gt;<\/code>.<\/p>\n<p>Przyk\u0142ad:<\/p>\n<p>Wybierz CREATE_TABLE_AS zamiast ALTER_TABLE:<\/p>\n<pre><code>&lt;updateTable&gt;\n CREATE_TABLE_AS\n&lt;\/updateTable&gt;<\/code><\/pre>\n<h6 id=\"oracle-nologging\" >Oracle: NOLOGGING<\/h6>\n<p>Podczas tworzenia indeks\u00f3w i u\u017cywania polecenia <code>CREATE TABLE AS SELECT<\/code> mo\u017cna wykorzysta\u0107 opcj\u0119 <em>NOLOGGING<\/em>, kt\u00f3ra wy\u0142\u0105cza zapis do dziennika archiwalnego (Archive Log). Wy\u0142\u0105czenie tej funkcji znacznie przyspiesza te operacje. Je\u015bli jednak baza danych standardowo zapisuje dziennik archiwalny, u\u017cycie tej opcji sprawi, \u017ce stanie si\u0119 on niesp\u00f3jny. Niesp\u00f3jny dziennik archiwalny mo\u017ce prowadzi\u0107 do problem\u00f3w, na przyk\u0142ad w bazach danych standby lub podczas odtwarzania danych z kopii zapasowej.<\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy dok\u0142adnie sprawdzi\u0107, czy wy\u0142\u0105czenie dziennika archiwalnego na czas modyfikacji modelu danych jest dopuszczalne w konkretnym \u015brodowisku.<strong><\/div><\/section><\/strong><\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Wy\u0142\u0105czenie dziennika archiwalnego podczas zmian w modelu danych:<\/p>\n<pre><code>&lt;updateOracleNoLogging\/&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h6 id=\"oracle-parallel\" >Oracle: PARALLEL<\/h6>\n<p>Tworzenie indeks\u00f3w i u\u017cywanie polecenia <code>CREATE TABLE AS SELECT<\/code> mo\u017cna przyspieszy\u0107 poprzez ich zr\u00f3wnoleglenie za pomoc\u0105 opcji PARALLEL. Paralelizacja jest obs\u0142ugiwana w bazach danych Oracle w wersji Enterprise Edition.<\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy sprawdzi\u0107, czy paralelizacja jest licencjonowana w posiadanej instalacji bazy danych.<strong><\/div><\/section><\/strong><\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Paralelizacja zmian w modelu danych:<\/p>\n<pre><code>&lt;updateOracleParallel&gt;PARALLEL 4&lt;\/updateOracleParallel&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h6 id=\"iseries-alter-table-no-commit\" >iSeries: ALTER TABLE no commit<\/h6>\n<p>W przypadku wprowadzania zmian w modelu danych za pomoc\u0105 polecenia <em>ALTER TABLE<\/em> na serwerach iSeries, mo\u017cna wy\u0142\u0105czy\u0107 mechanizm dziennika za pomoc\u0105 w\u0142a\u015bciwo\u015bci <code>&lt;updateAlterTableNoCommit\/&gt;<\/code>. Znacznie przyspiesza to wprowadzanie modyfikacji.<\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy dok\u0142adnie sprawdzi\u0107, jakie konsekwencje dla systemu ma wy\u0142\u0105czenie funkcji dziennika.<strong><\/div><\/section><\/strong><\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Wy\u0142\u0105czenie funkcji dziennika podczas zmian w modelu danych:<\/p>\n<pre><code>&lt;updateAlterTableNoCommit\/&gt;<\/code><\/pre>\n<p><strong><\/div><\/section><\/strong><\/p>\n<h4 id=\"dostosowywanie-polaczen-z-baza-danych\" >Dostosowywanie po\u0142\u0105cze\u0144 z baz\u0105 danych<\/h4>\n<p>Zazwyczaj podczas instalacji systemu testowego lub produkcyjnego u klienta u\u017cywa si\u0119 kopii systemu deweloperskiego lub testowego systemu deweloperskiego. Baza konfiguracyjna, kt\u00f3ra jest importowana w ramach takiej instalacji, zwykle nie zawiera danych po\u0142\u0105czeniowych pasuj\u0105cych do systemu klienta. Poni\u017csze w\u0142a\u015bciwo\u015bci systemowe umo\u017cliwiaj\u0105 dostosowanie tych danych.<\/p>\n<p>W\u0142a\u015bciwo\u015bci te zawieraj\u0105 nazw\u0119 obiektu biznesowego, nazw\u0119 bazy danych oraz \u015bcie\u017ck\u0119 atrybutu, kt\u00f3ry ma zosta\u0107 dostosowany:<\/p>\n<pre><code>com.cisag.sys.configuration.obj.Database.&lt;NazwaBazyDanych&gt;.&lt;\u015acie\u017ckaAtrybutu&gt;\ncom.cisag.sys.configuration.obj.SVMDBConnection.&lt;NazwaBazyDanych&gt;.&lt;\u015acie\u017ckaAtrybutu&gt;<\/code><\/pre>\n<p>Warto\u015b\u0107 <em>&lt;NazwaBazyDanych&gt;<\/em> nale\u017cy zast\u0105pi\u0107 nazw\u0105 bazy danych w odpowiedniej bazie konfiguracyjnej. Warto\u015b\u0107 <em>&lt;\u015acie\u017ckaAtrybutu&gt;<\/em> nale\u017cy zast\u0105pi\u0107 techniczn\u0105 nazw\u0105 atrybutu, kt\u00f3ry ma zosta\u0107 zmieniony. Po\u017c\u0105dan\u0105 warto\u015b\u0107 atrybutu podaje si\u0119 jako ci\u0105g znak\u00f3w.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>W przyk\u0142adzie pokazano, jak zmieni\u0107 konfiguracj\u0119 po\u0142\u0105czenia z baz\u0105 danych o nazwie <b>ABC123RP<\/b>. Poni\u017cej przedstawiono modyfikacje, jakie mo\u017cna wprowadzi\u0107:<\/p>\n<p><b>U\u017cytkownik:<\/b><\/p>\n<ul>\n<li><code>com.cisag.sys.configuration.obj.Database.ABC123RP.user=XYZ456RP<\/code> Zmienia nazw\u0119 u\u017cytkownika bazy danych na <b>XYZ456RP<\/b>.<\/li>\n<\/ul>\n<p><b>Schemat:<\/b><\/p>\n<ul>\n<li><code>com.cisag.sys.configuration.obj.Database.ABC123RP.schema=XYZ456RP<\/code> Zmienia nazw\u0119 schematu bazy danych na <b>XYZ456RP<\/b>.<\/li>\n<\/ul>\n<p><b>Has\u0142o:<\/b><\/p>\n<ul>\n<li><code>com.cisag.sys.configuration.obj.Database.ABC123RP.password=XYZ456RP<\/code> Zmienia has\u0142o u\u017cytkownika bazy danych na <b>XYZ456RP<\/b>.<\/li>\n<\/ul>\n<p><b>Sterownik JDBC:<\/b><\/p>\n<ul>\n<li><code>com.cisag.sys.configuration.obj.SVMDBConnection.ABC123RP.driver=12<\/code> Ustawia numer sterownika JDBC na <b>12<\/b>.<\/li>\n<\/ul>\n<p><b>\u015acie\u017cka dost\u0119pu:<\/b><\/p>\n<ul>\n<li><code>com.cisag.sys.configuration.obj.SVMDBConnection.ABC123RP.driverAccessPath=jdbc:jtds:sqlserver:\/\/sql.xyz.com:1433<\/code> Dostosowuje \u015bcie\u017ck\u0119 dost\u0119pu do sterownika, wskazuj\u0105c adres serwera i port: <b>sql.xyz.com:1433<\/b>.<\/li>\n<\/ul>\n<p><strong><\/div><\/section><\/strong><\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy pami\u0119ta\u0107, \u017ce w\u0142a\u015bciwo\u015bci (properties) nale\u017cy wprowadzi\u0107 do pliku <strong><code>system.properties<\/code><\/strong>, a nie do pliku w\u0142a\u015bciwo\u015bci bazy danych.<strong><\/div><\/section><\/strong><\/p>\n<p>Po uruchomieniu systemu z po\u0142\u0105czeniem do bazy danych dostosowanym za pomoc\u0105 wymienionych w\u0142a\u015bciwo\u015bci, mo\u017cna przenie\u015b\u0107 te ustawienia do bazy konfiguracyjnej za pomoc\u0105 nast\u0119puj\u0105cego polecenia:<\/p>\n<pre><code>wrksysprp -update<\/code><\/pre>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Narz\u0119dzie <em>Praca z w\u0142a\u015bciwo\u015bciami systemu (wrksysprp, z parametrem -update)<\/em> dostosowuje konfiguracj\u0119 systemu do zawarto\u015bci w\u0142a\u015bciwo\u015bci. Narz\u0119dzia tego nale\u017cy u\u017cywa\u0107 tylko podczas instalacji nowego systemu.<strong><\/div><\/section><\/strong><\/p>\n<p>Za pomoc\u0105 nast\u0119puj\u0105cego polecenia mo\u017cna wyeksportowa\u0107 w\u0142a\u015bciwo\u015bci systemu do pliku. W tym pliku mo\u017cna w wygodny spos\u00f3b edytowa\u0107 po\u0142\u0105czenia z bazami danych:<\/p>\n<pre><code>wrksysprp -export:C:\\temp\\my.properties<\/code><\/pre>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy pami\u0119ta\u0107, \u017ce zamiast has\u0142a do bazy danych eksportowana jest jej nazwa. Nale\u017cy zast\u0105pi\u0107 nazwy baz danych w\u0142a\u015bciwymi has\u0142ami, aby umo\u017cliwi\u0107 uruchomienie systemu z tymi w\u0142a\u015bciwo\u015bciami.<strong><\/div><\/section><\/strong><\/p>\n<p>Podczas instalacji nowego systemu z kopii innego systemu, nale\u017cy zaimportowa\u0107 bazy danych z nazwami nowego systemu.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>Eksportuj\u0105c bazy danych \u201eC4711DVCF\u201d, \u201eC4711DVRP\u201d i \u201eC4711DV01\u201d, nale\u017cy je zaimportowa\u0107 do systemu bazy danych klienta pod nazwami \u201eC4711CF\u201d, \u201eC4711TRP\u201d i \u201eC4711T01\u201d. Aby system klienta \u201eC4711T\u201d m\u00f3g\u0142 zosta\u0107 uruchomiony, nale\u017cy dostosowa\u0107 w\u0142a\u015bciwo\u015bci systemowe tak, aby system mia\u0142 dost\u0119p do nowych baz danych. Po uruchomieniu systemu, baza danych repozytorium jest adresowana za pomoc\u0105 nast\u0119puj\u0105cych danych:<\/p>\n<ul>\n<li><b>Nazwa bazy danych:<\/b> C4711DVRP<\/li>\n<li><b>Schemat bazy danych:<\/b> C4711TRP<\/li>\n<\/ul>\n<p><strong><\/div><\/section><\/strong><\/p>\n<p>Polecenie <code>wrksysprp \u2013renameDatabases<\/code> s\u0142u\u017cy do zmiany nazw baz danych w bazie danych konfiguracji, tak aby odpowiada\u0142y nazwom schemat\u00f3w bazy danych.<\/p>\n<p><strong><section class=\"document-alert-box example\"><div class=\"document-alert-title\">Przyk\u0142ad<\/div><div class=\"document-alert-content\"><\/strong>W powy\u017cszym przyk\u0142adzie, polecenie <code>wrksysprp \u2013renameDatabases<\/code> zmieni nazw\u0119 bazy danych na \u201eC4711TRP\u201d.<strong><\/div><\/section><\/strong><\/p>\n<p><strong><section class=\"document-alert-box warning\"><div class=\"document-alert-title\">Uwaga<\/div><div class=\"document-alert-content\"><\/strong>Nale\u017cy pami\u0119ta\u0107, \u017ce bazy danych powinno si\u0119 zmienia\u0107 dopiero po wywo\u0142aniu narz\u0119dzia <em>Praca z w\u0142a\u015bciwo\u015bciami systemu<\/em> z parametrem <code>-update<\/code> (<code>wrksysprp \u2013update<\/code>). W przeciwnym razie w\u0142a\u015bciwo\u015bci systemowe przestan\u0105 by\u0107 skuteczne z powodu zmienionych nazw baz danych. Po u\u017cyciu narz\u0119dzia <em>Praca z w\u0142a\u015bciwo\u015bciami systemu<\/em> z parametrem <code>-renameDatabases<\/code> (<code>wrksysprp \u2013renameDatabases<\/code>) nale\u017cy usun\u0105\u0107 w\u0142a\u015bciwo\u015bci s\u0142u\u017c\u0105ce do dostosowywania po\u0142\u0105cze\u0144 z baz\u0105 danych z pliku <code>system.properties<\/code>.<strong><\/div><\/section><\/strong><\/p>\n<h3 id=\"instrukcja-tworzenie-tabel-i-indeksow\" >Instrukcja: Tworzenie tabel i indeks\u00f3w<\/h3>\n<p><b>Wymagania wst\u0119pne<\/b><\/p>\n<p>Podczas wprowadzania lub modyfikowania w\u0142a\u015bciwo\u015bci bazy danych w celu tworzenia tabel lub indeks\u00f3w, nale\u017cy ponownie utworzy\u0107 wszystkie tabele, kt\u00f3rych dotyczy zmiana, za pomoc\u0105 narz\u0119dzia <a title=\"Reorganizacja obiekt\u00f3w biznesowych (rgzbo)\" href=\"https:\/\/pomoc.comarch.pl\/cee\/index.php\/documentation\/reorganizacja-obiektow-biznesowych-rgzbo\/\">Reorganizacja obiekt\u00f3w biznesowych (rgzbo)<\/a>. Nale\u017cy przy tym bezwzgl\u0119dnie przestrzega\u0107 nast\u0119puj\u0105cych wytycznych:<\/p>\n<ul>\n<li>wszystkie zmiany nale\u017cy przetestowa\u0107 na systemie testowym, zanim zostan\u0105 wdro\u017cone na systemie produkcyjnym.<\/li>\n<li>nale\u017cy wykona\u0107 kopi\u0119 zapasow\u0105 bazy danych.<\/li>\n<\/ul>\n<p>Instrukcja:<\/p>\n<ol>\n<li>Umie\u015b\u0107 plik w\u0142a\u015bciwo\u015bci bazy danych, przeznaczony dla bazy <em>db<\/em>, o nazwie <strong><code>properties-&lt;db&gt;.xml<\/code><\/strong> w katalogu <strong><code>classes<\/code><\/strong> w systemie.<\/li>\n<li>Zako\u0144cz dzia\u0142anie wszystkich serwer\u00f3w aplikacji z wyj\u0105tkiem serwera wiadomo\u015bci (Message-Server).<\/li>\n<li>Upewnij si\u0119, \u017ce do serwera wiadomo\u015bci nie s\u0105 zalogowani \u017cadni u\u017cytkownicy i nie s\u0105 uruchomione \u017cadne zlecenia przetwarzania.<\/li>\n<li>Dla wszystkich obiekt\u00f3w biznesowych <em>x1, \u2026, xn<\/em> i bazy danych <em>db<\/em> wykonaj nast\u0119puj\u0105ce polecenia w narz\u0119dziu Toolshell:<\/li>\n<\/ol>\n<ul>\n<li><code>rgzbo -force -db:&lt;db&gt; -o:&lt;x1&gt;<\/code><\/li>\n<li>&#8230;<\/li>\n<li><code>rgzbo -force -db:&lt;db&gt; -o:&lt;xn&gt;<\/code><\/li>\n<\/ul>\n<ol start=\"5\">\n<li>Uruchomi\u0107 ponownie serwer wiadomo\u015bci i wszystkie serwery aplikacji.<\/li>\n<li>Sprawdzi\u0107 czy tabele zosta\u0142y pomy\u015blnie utworzone.<\/li>\n<\/ol>\n","protected":false},"author":12,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"class_list":["post-38960","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-bazy-danych"],"_links":{"self":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/38960","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb"}],"about":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/comments?post=38960"}],"version-history":[{"count":3,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/38960\/revisions"}],"predecessor-version":[{"id":38964,"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/ht_kb\/38960\/revisions\/38964"}],"wp:attachment":[{"href":"https:\/\/pomoc.comarch.pl\/cee\/index.php\/wp-json\/wp\/v2\/media?parent=38960"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}