{"id":327277,"date":"2022-01-10T08:49:50","date_gmt":"2022-01-10T08:49:50","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=327277"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=327277","title":{"rendered":"<span>\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f 500 \u0413\u0438\u0433 \u0438\u0437 \u041e\u0440\u0430\u043a\u043b\u0430 \u0437\u0430 5 \u0447\u0430\u0441\u043e\u0432<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/05d\/29b\/d9a\/05d29bd9a64835453c02a45993a89f61.png\"\/><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0435\u0449\u0435 9 \u0447\u0430\u0441\u043e\u0432 \u0437\u0430\u043d\u044f\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 PostgreSQL, \u043d\u043e \u043e\u0431\u043e \u0432\u0441\u0435\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<br \/>  \u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0435\u0449\u0430\u043b\u043e \u0433\u0440\u043e\u0437\u044b \u2014 \u0443 \u0417\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u0443\u043f\u0430\u043b \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0432\u0441\u0435\u0433\u043e-\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u041e\u0440\u0430\u043a\u043b \ud83d\ude09<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u043b.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0412\u041d\u0415\u0417\u0410\u041f\u041d\u041e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0443 \u043d\u0443\u0436\u043d\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0430 \u0434\u0435\u0434\u043b\u0430\u0439\u043d \u0447\u0435\u0440\u0435\u0437 3 \u0434\u043d\u044f \u0438 \u0432\u0441\u0435 \u0437\u0430\u0432\u0435\u0440\u0442\u0435&#8230;<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p>\u0422\u0443\u0442 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u0441 \u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u044b\u043b \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c, \u0430 \u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0437\u043d\u0430\u043b \u043b\u0438\u0448\u044c \u043f\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u043c \u043d\u0430 <a href=\"https:\/\/habr.com\/ru\/company\/infowatch\/blog\/494430\/\">\u0425\u0430\u0431\u0440\u0435<\/a>.<\/p>\n<p>  <\/p>\n<p>\u042f \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u043b \u0432\u0441\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0447\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445, \u043d\u043e \u0432\u0441\u0435-\u0436\u0435,<strong> &#171;\u041c\u042b \u041f\u0420\u0418\u041d\u0418\u041c\u0410\u0415\u041c \u0411\u041e\u0419!&#187;<\/strong><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/2f4\/91b\/66f\/2f491b66f671369b976ce9cda904a856.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2f4\/91b\/66f\/2f491b66f671369b976ce9cda904a856.jpg\" data-blurred=\"true\"\/><\/p>\n<p>  <\/p>\n<p>\u041c\u043d\u0435 \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430 \u0441 Centos 8 \u0438 <del>\u0432\u0441\u0435\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e<\/del>\u0432\u044b\u0445\u043e\u0434\u043e\u043c \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u0431\u0435\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0412\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u0431\u044b\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f(23.0) \u0432\u0435\u0440\u0441\u0438\u044f <a href=\"https:\/\/ora2pg.darold.net\/\" rel=\"nofollow noopener noreferrer\">ora2pg<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0414\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0438\u043b \u0442\u043e\u0436\u0435 \u043f\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0441 \u044d\u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u0430\u0439\u0442\u0430, \u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<p><code>perl -MCPAN -e 'install DBD::Oracle'<\/code><br \/>  <em>\/usr\/bin\/ld: cannot find -lnsl<br \/>  collect2: error: ld returned 1 exit status<\/em><\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0432\u0435\u0442\u044b \u0413\u0443\u0433\u043b\u0430 \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u0438, \u0430 \u0447\u0430\u0441\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0438 \u043d\u0435\u0443\u043c\u043e\u043b\u0438\u043c\u043e \u0442\u0438\u043a\u0430\u0442\u044c&#8230;<\/p>\n<p>  <\/p>\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c, \u043a\u0430\u043a \u043f\u043e\u0439\u0442\u0438 <a href=\"https:\/\/schneide.blog\/2021\/04\/30\/migrating-from-oracle-to-postgresql\/\" rel=\"nofollow noopener noreferrer\">\u043f\u0440\u043e\u0442\u043e\u0440\u0435\u043d\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c<\/a><br \/>  \u0422\u0430\u043c \u0430\u0432\u0442\u043e\u0440 \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0441 12-\u0433\u043e \u041e\u0440\u0430\u043a\u043b\u0430 \u0441\u043e\u0444\u0442\u043e\u043c Ora2Pg v21.1 \u0432 \u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0439 PostgreSQL.<\/p>\n<p>  <\/p>\n<p>\u042f \u043b\u0438\u0448\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u043b \u0432\u0432\u043e\u0434\u043d\u044b\u0435 \u2014 CentOS Linux release 7.9 \u0438 \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u044b\u0439 \u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u0447\u0430\u043b\u043e \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0438 \u043f\u0440\u043e\u0448\u043b\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c(\u0432\u0441\u0435 \u0438\u043c\u0435\u043d\u0430 \u0438 IP -\u0432\u044b\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u044b\u0435):<br \/>  <strong>192.168.0.8 \u2014 Oracle sever<br \/>  192.168.0.14 \u2014 new PostgreSQL server<br \/>  client \u2014 dbname \u041e\u0440\u0430\u043a\u043b\u0430 \u0438 \u0438\u043c\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u041f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430<\/strong><\/p>\n<p>  <\/p>\n<p>\u0412\u0441\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm rpm -ivh oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm rpm -ivh oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86_64.rpm rpm -ivh oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm  yum install -y wget  wget https:\/\/yum.oracle.com\/RPM-GPG-KEY-oracle-ol7 -O \/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-oracle  yum install -y perl perl-CPAN perl-DBI perl-Time-HiRes perl-YAML perl-local-lib make gcc  yum install -y perl-App-cpanminus  cpanm CPAN::Config cpanm CPAN::FirstTime  export LD_LIBRARY_PATH=\/usr\/lib\/oracle\/12.2\/client64\/lib export ORACLE_HOME=\/usr\/lib\/oracle\/12.2\/client64  perl -MCPAN -e 'install DBD::Oracle'  tar zxf ora2pg-21.1.tar.gz &amp;&amp; cd ora2pg-21.1 &amp;&amp; perl Makefile.PL &amp;&amp; make &amp;&amp; make install<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u041d\u043e \u043c\u044b-\u0436\u0435 \u043f\u043e\u043c\u043d\u0438\u043c, \u043e 500\u0413\u0438\u0433\u0430\u0445, \u0430 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043d\u0430 \u0434\u0438\u0441\u043a\u0430\u0445 \u0412\u0438\u043d\u0434\u044b dbf-\u0444\u0430\u0439\u043b\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438 \u0432\u0434\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u043e 3\u0422\u0411, \u0431\u044b\u043b\u0438 \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \/postgres<\/strong><\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 ora2pg:<\/p>\n<p>  <\/p>\n<p><code>ora2pg --project_base \/postgres\/ora2pg --init_project client WORKDIR \/postgres\/ora2pg<\/code><\/p>\n<p>  <\/p>\n<p><em>\u0421\u0442\u0440\u043e\u043a\u043e\u0439 \u0432\u044b\u0448\u0435 \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439 \u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043e\u0442 \u0442\u0435\u0445, \u0447\u0442\u043e \u043f\u043e\u043f\u0430\u043b\u0438\u0441\u044c \u043c\u043d\u0435 \u043d\u0430 \u0433\u043b\u0430\u0437\u0430.<\/em><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">COPY ora2pg.conf \/postgres\/ora2pg\/client\/config\/  cd \/postgres\/ora2pg\/client<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u2014 vi ora2pg.conf \u043c\u0435\u043d\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">ORACLE_HOME     \/usr\/lib\/oracle\/12.2\/client64  # Set Oracle database connection (datasource, user, password) ORACLE_DSN      dbi:Oracle:host=192.168.0.8;sid=client;port=1521 ORACLE_USER     system ORACLE_PWD      systempwd  # Set this to 1 if you connect as simple user  USER_GRANTS     0  # Export Oracle schema to PostgreSQL schema EXPORT_SCHEMA   1  # Oracle schema\/owner to use SCHEMA<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0441 \u0411\u0414 \u041e\u0440\u0430\u043a\u043b, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f:<\/strong><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">export LD_LIBRARY_PATH=\/usr\/lib\/oracle\/12.2\/client64\/lib export ORACLE_HOME=\/usr\/lib\/oracle\/12.2\/client64<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">cd \/postgres\/ora2pg\/client ora2pg -t SHOW_VERSION -c config\/ora2pg.conf<\/code><\/pre>\n<p>  <\/p>\n<p><em>Oracle Database 12c Enterprise Edition Release 12.2.0.1.0<\/em><\/p>\n<p>  <\/p>\n<p>\u041e\u043a, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u2014 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435, \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0411\u0414:<\/p>\n<p>  <\/p>\n<p><code>ora2pg -t SHOW_TABLE -c config\/ora2pg.conf<\/code><\/p>\n<p>  <\/p>\n<p>\u0418 \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u043c\u043e\u0436\u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0442\u0440\u0443\u0434\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u044b (\u0432\u0440\u0435\u043c\u044f \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438):<\/p>\n<p>  <\/p>\n<p><code>ora2pg -t SHOW_REPORT --estimate_cost -c config\/ora2pg.conf export_schema.sh<\/code><\/p>\n<p>  <\/p>\n<p>\u0412 \u0432\u044b\u0432\u043e\u0434\u0435 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0441\u0440\u0435\u0434\u0438 \u043d\u0438\u0438\u0445 \u0442\u0430\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 :<\/p>\n<p>  <\/p>\n<p><strong>cost migration units means approximatively 11 man-day(s)<\/strong><\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u0442, \u043d\u0430 \u044d\u0442\u043e \u044f \u043f\u043e\u0439\u0442\u0438\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443!<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/515\/23f\/691\/51523f6912c5b2c119ff985ce554d99f.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/515\/23f\/691\/51523f6912c5b2c119ff985ce554d99f.jpg\" data-blurred=\"true\"\/><\/p>\n<p>  <\/p>\n<p>\u0418 \u0434\u0430\u0436\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 <em>Migration level: C-5<br \/>  C \u2014 Migration with code rewrite and a human-days cost above 5 days<br \/>  5 = difficult: stored functions and\/or triggers with code rewriting<\/em><br \/>  \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u043c\u0430 \u043d\u0435 \u0432\u043d\u0443\u0448\u0430\u043b\u0438<\/p>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0412\u0430\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442 \u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0446\u0438\u0444\u0440\u0430\u0445, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<p>  <\/p>\n<p><code>ora2pg -t INSERT -o data.sql -b .\/data -c .\/config\/ora2pg.conf<\/code><\/p>\n<p>  <\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u0432\u0438\u0434\u0435 create table \u2014 insert \u0434\u043b\u044f psql<\/p>\n<p>  <\/p>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u0443\u0434\u0443\u0440\u0447\u0430\u044e\u0449\u0435 \u043d\u0438\u0437\u043a\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0441\u0435\u0440\u0442\u043e\u0432 \u2014 \u043e\u043a\u043e\u043b\u043e 5\u0413\u0411\/\u0447\u0430\u0441.<\/p>\n<p>  <\/p>\n<p><strong>\u0427\u0442\u043e-\u0436 \u0447\u0438\u0442\u0430\u0435\u043c \u043e\u043f\u0446\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 ora2pg, \u0438 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0412\u041d\u0415\u0417\u0410\u041f\u041d\u041e \u043c\u043e\u0436\u043d\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u044c \u0447\u0442\u0435\u043d\u0438\u0435\/\u0437\u0430\u043f\u0438\u0441\u044c, \u043e \u0447\u0435\u043c \u044f \u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u0433\u0430\u0439\u0434\u043e\u0432 \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0447\u0438\u0442\u0430\u043b.<\/strong><\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0432 \u043f\u043e\u0440\u0443 \u0437\u0430\u0440\u044f\u0436\u0430\u0442\u044c <del>\u0448\u0435\u0441\u0442\u0438\u0441\u0442\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u043b\u0435\u043c\u0435\u0442<\/del>\u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u0443\u044e \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/d9d\/a0b\/7d8\/d9da0b7d8331e1bf0e7dcaac096e40ba.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d9d\/a0b\/7d8\/d9da0b7d8331e1bf0e7dcaac096e40ba.jpg\" data-blurred=\"true\"\/><br \/>  \u041e\u041a, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044f\u0434\u0435\u0440 \u043d\u0430\u0448\u0435\u0439 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0438 \u0441 4 \u0434\u043e 16 \u0438 \u043f\u043e\u0441\u043b\u0435 \u0440\u044f\u0434\u0430 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:<\/p>\n<p>  <\/p>\n<p><code>nohup ora2pg -j 2 -J 12 -t INSERT -o data.sql -b .\/data -c .\/config\/ora2pg.conf<\/code><\/p>\n<p>  <\/p>\n<p>\u0422\u0443\u0442 \u041e\u0440\u0430\u043a\u043b \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 12 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u0437\u0430\u043f\u0438\u0441\u044c \u0438\u0434\u0435\u0442 \u0432 \u0434\u0432\u0430, \u0435\u0449\u0435 \u0434\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 ora2pg.<\/p>\n<p>  <\/p>\n<p><em>\u0418 \u0434\u0430, \u044d\u0442\u043e \u0431\u044b\u043b\u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0441\u0442 \u043e\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u043c\u043d\u0435 \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432 \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438.<\/em><\/p>\n<p>  <\/p>\n<p><strong>\u0423 \u0412\u0430\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0441\u0435 \u043f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u2014 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u0442\u043d\u0438\u0440\u0443\u0439\u0442\u0435!<\/strong><\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a\u043e\u0432\u043e-\u0436\u0435 \u0431\u044b\u043b\u043e \u043c\u043e\u0435 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u043e \u0441\u0435\u0442\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0437\u0430 5 \u0447\u0430\u0441\u043e\u0432!<\/p>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u0438 \u0442\u043e\u043c, \u0447\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u044d\u043a\u0430\u043f \u041e\u0440\u0430\u043a\u043b\u0430 \u0434\u0430\u0442\u0430\u043f\u0430\u043c\u043f\u043e\u043c \u0438\u0434\u0435\u0442 \u0432\u0441\u0435 6.<\/p>\n<p>  <\/p>\n<p>\u0423\u0436\u0435 \u043f\u043e\u0437\u0436\u0435 \u044f \u043d\u0430\u0448\u0435\u043b <a href=\"https:\/\/blog.dalibo.com\/2016\/04\/06\/Ora2Pg_data_export_improvement.html\" rel=\"nofollow noopener noreferrer\">\u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438<\/a>, \u0433\u0434\u0435 \u0430\u0432\u0442\u043e\u0440 \u0442\u043e\u0436\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u0431\u043e\u043b\u044c\u0448\u0435\u043c\u0443 \u043f\u0440\u043e\u0442\u0438\u0432 \u0437\u0430\u043f\u0438\u0441\u0438 \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0447\u0442\u0435\u043d\u0438\u044f, \u0445\u043e\u0442\u044f \u0438 \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 CPU, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0449\u0430\u044f \u043f\u043e\u0440\u043e\u0439 90% \u2014 \u0445\u043e\u0442\u044c \u0438 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u044b\u0439, \u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432.<\/p>\n<p>  <\/p>\n<p><strong>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c PostgreSQL, \u0435\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u044d\u0442\u043e \u0440\u0430\u043d\u0435\u0435, 12 \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432:<\/strong><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">yum install dnf   dnf module list postgresql  https:\/\/www.postgresql.org\/  # Install the repository RPM: yum install -y https:\/\/download.postgresql.org\/pub\/repos\/yum\/reporpms\/EL-7-x86_64\/pgdg-redhat-repo-latest.noarch.rpm  # Install PostgreSQL: yum install -y postgresql12-server<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0411\u0414 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0430\u0432\u0442\u043e\u0441\u0442\u0430\u0440\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">\/usr\/pgsql-12\/bin\/postgresql-12-setup initdb systemctl enable postgresql-12 systemctl start postgresql-12<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u041d\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u043c\u044b-\u0436\u0435 \u043f\u043e\u043c\u043d\u0438\u043c \u043f\u0440\u043e \u043f\u043e\u043b-\u0422\u0435\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u044d\u0442\u043e \u0443 \u0414\u0436\u043e\u043d\u043d\u0438-\u043c\u043d\u0435\u043c\u043e\u043d\u0438\u043a\u0430 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u044f \u0432\u044b\u0448\u0435 320\u0413\u0411 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 OOM <\/strong><\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/949\/68f\/2bf\/94968f2bf450ae24b0e49d04d17f1aa8.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/949\/68f\/2bf\/94968f2bf450ae24b0e49d04d17f1aa8.jpg\" data-blurred=\"true\"\/><\/p>\n<p>  <\/p>\n<p><strong>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0441\u0438\u0435\u0439 \u0443\u0447\u0430\u0441\u0442\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433, \u0443\u043a\u0430\u0437\u0430\u0432 \u043d\u0430 &#171;\u0431\u043e\u043b\u044c\u0448\u043e\u0439&#187; \u0434\u0438\u0441\u043a:<\/strong><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">vi \/var\/lib\/pgsql\/12\/data\/postgresql.conf  data_directory = '\/postgres\/pgsql'<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u043d\u043e\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">cp \/var\/lib\/pgsql\/12\/data\/* \/postgres\/pgsql  chown -R postgres \/postgres\/pgsql  chmod -R 750 \/postgres\/pgsql  systemctl restart postgresql-12<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435 \u2014 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0437\u0430\u043d\u0430\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0411\u0414 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0430\u043c\u0443 \u0431\u0430\u0437\u0443:<\/strong><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">psql -c \"alter user postgres with password 'clientpostgres'\"   vi \/var\/lib\/pgsql\/12\/data\/postgresql.conf  set Listen address to your server IP address or \u201c*\u201d for all interfaces.  vi \/var\/lib\/pgsql\/12\/data\/pg_hba.conf  # Accept from anywhere host all all 0.0.0.0\/0 md5  restart:  systemctl restart postgresql-12  psql -U postgres -h 192.168.0.14 -p 5432 postgres  CREATE DATABASE client;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0438\u043d\u044b(\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445) \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u043b\u0441\u044f, \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0434\u0435\u0434\u043b\u0430\u0439\u043d<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/616\/dff\/b56\/616dffb565d0d5fb5beb09038eef0b76.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/616\/dff\/b56\/616dffb565d0d5fb5beb09038eef0b76.jpg\" data-blurred=\"true\"\/><\/p>\n<p>  <\/p>\n<p><strong>\u042f \u0443\u0436\u0435 \u0432\u0441\u0435\u043c\u0438 \u0444\u0438\u0431\u0440\u0430\u043c\u0438 \u0434\u0443\u0448\u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0430\u0432\u0430\u043d\u0442\u044e\u0440\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u043d\u0438\u044f, \u043d\u043e \u043a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u2014 \u0433\u043b\u0430\u0437\u0430-\u0431\u043e\u044f\u0442\u0441\u044f \u0430 \u0440\u0443\u043a\u0438 \u2014 \u0434\u0435\u043b\u0430\u044e\u0442!<\/strong><\/p>\n<p>  <\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0441\u043e\u0432\u0435\u0442\u0443\u044e\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438:<\/p>\n<p>  <\/p>\n<p><code>postgres\/ora2pg\/client\/import_all.sh -d client -o postgres -U postgres<\/code><\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u043e\u043d \u043d\u0443 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0438 \u0437\u0430\u0434\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u2014 \u0432 \u0441\u0442\u0438\u043b\u0435 \u2014 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c-\u043b\u0438 \u0411\u0414, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b (\u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438 \u0442.\u0434. ) \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c.<\/p>\n<p>  <\/p>\n<p>\u0411\u0443\u0434\u044c \u0443 \u043c\u0435\u043d\u044f \u0441\u0435\u0440\u0432\u0435\u0440 \u043f\u043e\u0434 \u0431\u043e\u043a\u043e\u043c \u2014 \u044f \u0431\u044b \u0442\u0430\u043a \u0438 \u0441\u0434\u0435\u043b\u0430\u043b, \u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043f\u043e\u0442\u043e\u043c\u0443, \u043f\u0443\u0442\u0435\u043c \u0447\u0442\u0435\u043d\u0438\u044f \u043c\u0430\u043d\u0443\u0430\u043b\u0430 \u0438 \u0440\u044f\u0434\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u044f \u0442\u0430\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0435\u0437 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043a\u0440\u0438\u043f\u0442\u0430<\/p>\n<p>  <\/p>\n<p><code>nohup \/postgres\/ora2pg\/client\/import_all.sh -d client -o postgres -U postgres -a -y -I -P 8<\/code><\/p>\n<p>  <\/p>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u043c\u044b \u0434\u0440\u043e\u043f\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u0443\u044e \u0431\u0430\u0437\u0443 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u0443\u044e, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u044f\u0441\u044c \u0441\u043e \u0432\u0441\u0435\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<p>  <\/p>\n<p><em>\u0414\u0430, \u0442\u0443\u0442 \u0442\u043e\u0436\u0435 \u0444\u0438\u0448\u043a\u0430 \u0432 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 8 \u0442\u0430\u0431\u043b\u0438\u0446, \u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u0437\u043d\u0430\u044e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0442\u044f\u043d\u0443\u043b\u0441\u044f-\u0431\u044b 9-\u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/em><\/p>\n<p>  <\/p>\n<p>\u0418 \u0435\u0449\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0431\u044c\u0435\u043a\u0442\u044b \u2014 \u0442\u043e \u0443\u0436\u0435 \u0431\u0435\u0437 \u043e\u043f\u0446\u0438\u0439 -a, -y, -I \u0438 \u043d\u043e\u0443\u0445\u0430\u043f\u0430, \u0441 \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u043a\u0443\u0447\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<p>  <\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0435, \u0438 \u043a\u0430\u043a-\u0431\u044b \u0441\u043a\u0430\u0437\u0430\u043b(\u0430) \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442(\u043a\u0430) \u0438\u0437 &#171;\u041f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u043e\u0432&#187;:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/post_images\/beb\/36e\/809\/beb36e8094ebe5756a91ed6cc281cf30.jpg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/beb\/36e\/809\/beb36e8094ebe5756a91ed6cc281cf30.jpg\" data-blurred=\"true\"\/><\/p>\n<p>  <\/p>\n<p>&#171;\u2026 \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430!, \u2014 \u0432\u0435\u0434\u044c \u044f \u0441\u043f\u0430\u0441\u043b\u0430 \u0412\u0430\u0448\u0438 \u0437\u0430\u0434\u043d\u0438\u0446\u044b!&#187;<\/p>\n<p><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/598313\/\"> https:\/\/habr.com\/ru\/post\/598313\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><img decoding=\"async\" src=\"\/img\/image-loader.svg\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/05d\/29b\/d9a\/05d29bd9a64835453c02a45993a89f61.png\"\/><\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0435\u0449\u0435 9 \u0447\u0430\u0441\u043e\u0432 \u0437\u0430\u043d\u044f\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 PostgreSQL, \u043d\u043e \u043e\u0431\u043e \u0432\u0441\u0435\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<br \/>  \u041d\u0438\u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u0432\u0435\u0449\u0430\u043b\u043e \u0433\u0440\u043e\u0437\u044b \u2014 \u0443 \u0417\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u0443\u043f\u0430\u043b \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0432\u0441\u0435\u0433\u043e-\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u041e\u0440\u0430\u043a\u043b \ud83d\ude09<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u044f \u0438 \u0441\u0434\u0435\u043b\u0430\u043b.<\/p>\n<p>  <\/p>\n<p>\u041d\u043e \u0412\u041d\u0415\u0417\u0410\u041f\u041d\u041e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0443 \u043d\u0443\u0436\u043d\u0430 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0430 \u0434\u0435\u0434\u043b\u0430\u0439\u043d \u0447\u0435\u0440\u0435\u0437 3 \u0434\u043d\u044f \u0438 \u0432\u0441\u0435 \u0437\u0430\u0432\u0435\u0440\u0442\u0435&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-327277","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=327277"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327277\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}