[comment]: # ({e26480a0-e26480a0})
# 3 Database upgrade to primary keys

[comment]: # ({/e26480a0-e26480a0})

[comment]: # ({70ef924c-53564572})
### Pārskats

Šī sadaļa sniedz norādījumus, kā manuāli jaunināt esošajās instalācijās esošās tabulas uz primārajām atslēgām.

Jaunināšana uz primārajām atslēgām optimizē datu indeksēšanu un piekļuvi tiem, kas var paātrināt vaicājumus un ietaupīt vietu.
Tā arī uzlabo datu pārvaldību un sinhronizāciju klasterizētās vidēs, palīdzot mērogošanā un nodrošinot sistēmas uzticamību pat tad, ja daži serveri neizdodas.

::: noteimportant
Šajā lapā sniegtie norādījumi ir paredzēti pieredzējušiem lietotājiem, un tie var būt jāpielāgo jūsu konkrētajai konfigurācijai.
Jaunināšana uz primārajām atslēgām var būt laikietilpīga un resursietilpīga.
Pārliecinieties, ka ir pieejams pietiekami daudz brīvas diska vietas; atkarībā no datubāzes lieluma un saglabātajiem datiem process var prasīt līdz pat 2.5 reizēm vairāk vietas, nekā pašlaik aizņem vēstures tabulas.
:::

Primārās atslēgas tiek izmantotas visām tabulām jaunās instalācijās kopš Zabbix 6.0.

Nav automātiska datubāzes jauninājuma uz primārajām atslēgām; tomēr esošās instalācijas var jaunināt manuāli **pēc** Zabbix servera jaunināšanas uz 6.0 vai jaunāku versiju.

::: noteimportant
Kopš Zabbix 7.0 tabulu jaunināšana uz primārajām atslēgām arī jaunina tabulas, lai tās izmantotu dubultprecizitātes datu tipus.
<br><br>
Ja jums ir Zabbix 7.0, tabulas jau izmanto dubultprecizitāti.
Tomēr šajā lapā sniegtos norādījumus joprojām var izmantot, lai jauninātu tabulas uz primārajām atslēgām, neietekmējot tabulas, kas jau izmanto dubultprecizitāti.
<br><br>
Ja jums ir Zabbix 6.4 (vai vecāka versija), apsveriet iespēju vispirms jaunināt tabulas uz dubultprecizitāti.
Plašāku informāciju skatiet sadaļā [Jaunināšana uz paplašināta diapazona skaitliskajām vērtībām](/manual/appendix/install/db_float_range).
:::

Norādījumi ir pieejami šādām sistēmām:

* [MySQL](#mysql)
* [PostgreSQL](#postgresql)
* [TimescaleDB](#postgresql-timescaledb)
* [Oracle](#oracle)

[comment]: # ({/70ef924c-53564572})

[comment]: # ({82c37c9e-980f7329})
### Svarīgas piezīmes

Lai veiktu datubāzes jaunināšanu:

1. Apturiet Zabbix serveris.

Zabbix serveris apturēšana jaunināšanas laikā ir ļoti ieteicama.
Tomēr, ja tas ir absolūti nepieciešams, jaunināšanu var veikt arī tad, kad serveris darbojas (tikai MySQL, MariaDB un PostgreSQL bez TimescaleDB).

2. Izveidojiet datubāzes rezerves kopiju.

Ja izmantojat PostgreSQL vai TimescaleDB, skatiet [zināmās problēmas](/manual/installation/known_issues#database-restore-error-with-postgresqltimescaledb-after-upgrade-from-7.0.0-7.0.4) par PostgreSQL vai TimescaleDB rezerves kopijas atjaunošanu, kas izveidota Zabbix 7.0.0-7.0.4.

3. Instalējiet jaunāko zabbix-sql-scripts pakotni, kas ir saderīga ar jūsu Zabbix versiju (piemēram, RHEL: `dnf install zabbix-sql-scripts`).
4. Palaidiet skriptus savai datubāzei.
5. Startējiet Zabbix serveris.

::: notewarning
Palaidiet skriptus tikai servera datubāzei. starpniekserveris no šī jauninājuma negūs labumu.
:::

Ja datubāze izmanto nodalījumus, sazinieties ar DB administratoru vai Zabbix atbalstu, lai saņemtu palīdzību.

CSV failus var noņemt pēc veiksmīgas jaunināšanas uz primārajām atslēgām.

Pēc izvēles Zabbix lietotāja saskarne var tikt pārslēgta uz [apkopes režīmu](/manual/web_interface/maintenance_mode).

[comment]: # ({/82c37c9e-980f7329})

[comment]: # ({4f99bcf1-1551eb55})
### MySQL

Eksportēšana un importēšana jāveic tmux/screen vidē, lai nodrošinātu, ka sesija netiek pārtraukta.

Skatiet arī: [Svarīgas piezīmes](#important-notes)

[comment]: # ({/4f99bcf1-1551eb55})

[comment]: # ({b3eb6d02-dc89d749})
#### MySQL 8.0+ ar mysqlsh

Šo metodi var izmantot ar darbojošos Zabbix serveri, taču ieteicams uz jaunināšanas laiku serveri apturēt.
MySQL Shell (*mysqlsh*) ir jābūt [instalētam](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install-linux-quick.html) un spējīgam izveidot savienojumu ar DB.

* Piesakieties MySQL konsolē kā root (ieteicams) vai kā jebkurš lietotājs ar FILE privilēģijām.

* Startējiet MySQL ar iespējotu mainīgo [local_infile](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_local_infile).

* Pārdēvējiet vecās tabulas un izveidojiet jaunas tabulas, izpildot `history_upgrade_prepare.sql`.

```bash
mysql -uzabbix -p<password> zabbix < /usr/share/zabbix-sql-scripts/mysql/option-patches/history_upgrade_prepare.sql
```

* Eksportējiet un importējiet datus.

Izveidojiet savienojumu, izmantojot mysqlsh. Ja tiek izmantots socket savienojums, var būt nepieciešams norādīt ceļu.

```bash
sudo mysqlsh -uroot -S /run/mysqld/mysqld.sock --no-password -Dzabbix
```

Pārslēdzieties uz JavaScript režīmu, izmantojot:

```mysql
\js
```

Pēc tam izpildiet zemāk redzamo kodu (CSVPATH var mainīt pēc vajadzības):

```javascript
CSVPATH="/var/lib/mysql-files";

util.exportTable("history_old", CSVPATH + "/history.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history.csv", {"dialect": "csv", "table": "history" });

util.exportTable("history_uint_old", CSVPATH + "/history_uint.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_uint.csv", {"dialect": "csv", "table": "history_uint" });

util.exportTable("history_str_old", CSVPATH + "/history_str.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_str.csv", {"dialect": "csv", "table": "history_str" });

util.exportTable("history_log_old", CSVPATH + "/history_log.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_log.csv", {"dialect": "csv", "table": "history_log" });

util.exportTable("history_text_old", CSVPATH + "/history_text.csv", { dialect: "csv" });
util.importTable(CSVPATH + "/history_text.csv", {"dialect": "csv", "table": "history_text" });
```

Ja saņemat ziņojumu "JavaScript is not supported", jūsu MySQL Shell instalācijai nav JS atbalsta. Šādā gadījumā instalējiet oficiālo [MySQL Shell pakotni](https://dev.mysql.com/downloads/shell/) no Oracle (vai izveidojiet to no pirmkoda), lai būtu iespējots JavaScript režīms.

* Izpildiet [pēc migrācijas norādījumus](#postmigration), lai dzēstu vecās tabulas.

[comment]: # ({/b3eb6d02-dc89d749})

[comment]: # ({3466da92-b132f69b})
#### MariaDB/MySQL 8.0+ bez mysqlsh

Šī jaunināšanas metode aizņem vairāk laika, un tā jāizmanto tikai tad, ja jaunināšana ar *mysqlsh* nav iespējama.

##### Tabulu jaunināšana

* Piesakieties MySQL konsolē kā root (ieteicams) vai jebkurš lietotājs ar FILE privilēģijām.

* Ja migrācija tiek veikta, kamēr darbojas Zabbix serveris, startējiet MySQL ar iespējotu [local_infile](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_local_infile) mainīgo.

* Pārdēvējiet vecās tabulas un izveidojiet jaunas tabulas, izpildot `history_upgrade_prepare.sql`:

```bash
mysql -uzabbix -p<password> zabbix < /usr/share/zabbix-sql-scripts/mysql/option-patches/history_upgrade_prepare.sql
```

##### Migrācija ar apturētu serveri

`max_execution_time` (MySQL) vai `max_statement_time` (MariaDB) pirms datu migrēšanas ir jāatspējo, lai migrācijas laikā novērstu noildzi.

MySQL:

```sql
SET @@max_execution_time=0;
```

MariaDB:

```sql
SET @@max_statement_time=0;
```

```sql
INSERT IGNORE INTO history SELECT * FROM history_old;
INSERT IGNORE INTO history_uint SELECT * FROM history_uint_old;
INSERT IGNORE INTO history_str SELECT * FROM history_str_old;
INSERT IGNORE INTO history_log SELECT * FROM history_log_old;
INSERT IGNORE INTO history_text SELECT * FROM history_text_old;
```

Lai dzēstu vecās tabulas, izpildiet [pēc migrācijas norādījumus](#postmigration).

##### Migrācija ar darbojošos serveri

Pārbaudiet, kuriem ceļiem ir iespējota importēšana/eksportēšana:

```sql
mysql> SELECT @@secure_file_priv;
+-----------------------+
| @@secure_file_priv    |
+-----------------------+
| /var/lib/mysql-files/ |
+-----------------------+
```

Ja *secure_file_priv* vērtība ir ceļš uz direktoriju, eksportēšana/importēšana tiks veikta šajā direktorijā esošajiem failiem. Šādā gadījumā attiecīgi rediģējiet failu ceļus vaicājumos vai jaunināšanas laikā iestatiet *secure_file_priv* vērtību uz tukšu virkni.

Ja *secure_file_priv* vērtība ir tukša, eksportēšanu/importēšanu var veikt no jebkuras atrašanās vietas.

Ja *secure_file_priv* vērtība ir NULL, iestatiet to uz ceļu, kurā atrodas eksportētie tabulu dati (iepriekšējā piemērā - '/var/lib/mysql-files/').

Papildinformāciju skatiet [MySQL dokumentācijā](https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_secure_file_priv) vai [MariaDB dokumentācijā](https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/system-variables/server-system-variables#secure_file_priv).

`max_execution_time` (MySQL) vai `max_statement_time` (MariaDB) pirms datu eksportēšanas ir jāatspējo, lai eksportēšanas laikā novērstu noildzi.

MySQL:

```sql
SET @@max_execution_time=0;
```

MariaDB:

```sql
SET @@max_statement_time=0;
```

```sql
SELECT * INTO OUTFILE '/var/lib/mysql-files/history.csv' FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n' FROM history_old;
LOAD DATA INFILE '/var/lib/mysql-files/history.csv' IGNORE INTO TABLE history FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n';

SELECT * INTO OUTFILE '/var/lib/mysql-files/history_uint.csv' FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n' FROM history_uint_old;
LOAD DATA INFILE '/var/lib/mysql-files/history_uint.csv' IGNORE INTO TABLE history_uint FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n';

SELECT * INTO OUTFILE '/var/lib/mysql-files/history_str.csv' FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n' FROM history_str_old;
LOAD DATA INFILE '/var/lib/mysql-files/history_str.csv' IGNORE INTO TABLE history_str FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n';

SELECT * INTO OUTFILE '/var/lib/mysql-files/history_log.csv' FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n' FROM history_log_old;
LOAD DATA INFILE '/var/lib/mysql-files/history_log.csv' IGNORE INTO TABLE history_log FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n';

SELECT * INTO OUTFILE '/var/lib/mysql-files/history_text.csv' FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n' FROM history_text_old;
LOAD DATA INFILE '/var/lib/mysql-files/history_text.csv' IGNORE INTO TABLE history_text FIELDS TERMINATED BY ',' ESCAPED BY '"' LINES TERMINATED BY '\n';
```

Lai dzēstu vecās tabulas, izpildiet [pēc migrācijas norādījumus](#postmigration).

[comment]: # ({/3466da92-b132f69b})

[comment]: # ({634df4cd-1139207b})
### PostgreSQL

Eksportēšana un importēšana jāveic tmux/screen, lai nodrošinātu, ka sesija netiek pārtraukta.
Instalācijām ar TimescaleDB izlaidiet šo sadaļu un turpiniet ar [PostgreSQL + TimescaleDB](#postgresql-timescaledb).

Skatiet arī: [Svarīgas piezīmes](#important-notes)

#### Tabulu jaunināšana

* Pārdēvējiet tabulas, izmantojot `history_upgrade_prepare.sql`:

```bash
sudo -u zabbix psql zabbix < /usr/share/zabbix-sql-scripts/postgresql/option-patches/history_upgrade_prepare.sql
```

#### Migrācija ar apturētu serveri

* Eksportējiet pašreizējo vēsturi, importējiet to pagaidu tabulā,
  pēc tam ievietojiet datus jaunajās tabulās, ignorējot dublikātus:

```sql
INSERT INTO history SELECT * FROM history_old ON CONFLICT (itemid,clock,ns) DO NOTHING;

INSERT INTO history_uint SELECT * FROM history_uint_old ON CONFLICT (itemid,clock,ns) DO NOTHING;

INSERT INTO history_str SELECT * FROM history_str_old ON CONFLICT (itemid,clock,ns) DO NOTHING;

INSERT INTO history_log SELECT * FROM history_log_old ON CONFLICT (itemid,clock,ns) DO NOTHING;

INSERT INTO history_text SELECT * FROM history_text_old ON CONFLICT (itemid,clock,ns) DO NOTHING;
```

Skatiet padomus INSERT veiktspējas uzlabošanai: [PostgreSQL: Bulk Loading Huge Amounts of Data](https://www.cybertec-postgresql.com/en/postgresql-bulk-loading-huge-amounts-of-data), [Checkpoint Distance and Amount of WAL](https://www.cybertec-postgresql.com/en/checkpoint-distance-and-amount-of-wal).

* Izpildiet [pēc migrācijas norādījumus](#postmigration), lai dzēstu vecās tabulas.

[comment]: # ({/634df4cd-1139207b})

[comment]: # ({e951ec07-7e590ff3})
#### Migrācija ar darbojošos serveri

* Eksportējiet pašreizējo vēsturi, importējiet to pagaidu tabulā, pēc tam ievietojiet datus jaunajās tabulās, ignorējot dublikātus:

```sql
\copy history_old TO '/tmp/history.csv' DELIMITER ',' CSV
CREATE TEMP TABLE temp_history (
    itemid                   bigint                                    NOT NULL,
    clock                    integer         DEFAULT '0'               NOT NULL,
    value                    DOUBLE PRECISION DEFAULT '0.0000'          NOT NULL,
    ns                       integer         DEFAULT '0'               NOT NULL
);
\copy temp_history FROM '/tmp/history.csv' DELIMITER ',' CSV
INSERT INTO history SELECT * FROM temp_history ON CONFLICT (itemid,clock,ns) DO NOTHING;

\copy history_uint_old TO '/tmp/history_uint.csv' DELIMITER ',' CSV
CREATE TEMP TABLE temp_history_uint (
    itemid                   bigint                                    NOT NULL,
    clock                    integer         DEFAULT '0'               NOT NULL,
    value                    numeric(20)     DEFAULT '0'               NOT NULL,
    ns                       integer         DEFAULT '0'               NOT NULL
);
\copy temp_history_uint FROM '/tmp/history_uint.csv' DELIMITER ',' CSV
INSERT INTO history_uint SELECT * FROM temp_history_uint ON CONFLICT (itemid,clock,ns) DO NOTHING;

\copy history_str_old TO '/tmp/history_str.csv' DELIMITER ',' CSV
CREATE TEMP TABLE temp_history_str (
    itemid                   bigint                                    NOT NULL,
    clock                    integer         DEFAULT '0'               NOT NULL,
    value                    varchar(255)    DEFAULT ''                NOT NULL,
    ns                       integer         DEFAULT '0'               NOT NULL
);
\copy temp_history_str FROM '/tmp/history_str.csv' DELIMITER ',' CSV
INSERT INTO history_str (itemid,clock,value,ns) SELECT * FROM temp_history_str ON CONFLICT (itemid,clock,ns) DO NOTHING;

\copy history_log_old TO '/tmp/history_log.csv' DELIMITER ',' CSV
CREATE TEMP TABLE temp_history_log (
    itemid                   bigint                                    NOT NULL,
    clock                    integer         DEFAULT '0'               NOT NULL,
    timestamp                integer         DEFAULT '0'               NOT NULL,
    source                   varchar(64)     DEFAULT ''                NOT NULL,
    severity                 integer         DEFAULT '0'               NOT NULL,
    value                    text            DEFAULT ''                NOT NULL,
    logeventid               integer         DEFAULT '0'               NOT NULL,
    ns                       integer         DEFAULT '0'               NOT NULL
);
\copy temp_history_log FROM '/tmp/history_log.csv' DELIMITER ',' CSV
INSERT INTO history_log SELECT * FROM temp_history_log ON CONFLICT (itemid,clock,ns) DO NOTHING;

\copy history_text_old TO '/tmp/history_text.csv' DELIMITER ',' CSV
CREATE TEMP TABLE temp_history_text (
    itemid                   bigint                                    NOT NULL,
    clock                    integer         DEFAULT '0'               NOT NULL,
    value                    text            DEFAULT ''                NOT NULL,
    ns                       integer         DEFAULT '0'               NOT NULL
);
\copy temp_history_text FROM '/tmp/history_text.csv' DELIMITER ',' CSV
INSERT INTO history_text SELECT * FROM temp_history_text ON CONFLICT (itemid,clock,ns) DO NOTHING;
```

* Izpildiet [pēc-migrācijas norādījumus](#postmigration), lai dzēstu vecās tabulas.

[comment]: # ({/e951ec07-7e590ff3})

[comment]: # ({f968af25-589d2f09})
### PostgreSQL + TimescaleDB

Eksportēšana un importēšana jāveic tmux/screen, lai nodrošinātu, ka sesija netiek pārtraukta.
Zabbix serverim jaunināšanas laikā jābūt apturētam.

Skatiet arī: [Svarīgas piezīmes](#important-notes)

* Pārdēvējiet tabulas, izmantojot `history_upgrade_prepare.sql`.
  * Ja saspiešana ir iespējota (noklusējuma instalācijā), palaidiet skriptu no `/usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression`:
    ```bash
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression/history_upgrade_prepare.sql | sudo -u zabbix psql zabbix
    ```
  * Ja saspiešana ir atspējota, palaidiet skriptu no `/usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression`:
    ```bash
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression/history_upgrade_prepare.sql | sudo -u zabbix psql zabbix
    ```

* Palaidiet TimescaleDB hypertable migrācijas skriptus atbilstoši saspiešanas iestatījumiem:
  * Ja saspiešana ir iespējota (noklusējuma instalācijā), palaidiet skriptus no `/usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression`:
    ```bash
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression/history_upgrade.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression/history_upgrade_uint.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression/history_upgrade_log.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression/history_upgrade_str.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression/history_upgrade_text.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/with-compression/trends_upgrade.sql | sudo -u zabbix psql zabbix
    ```
  * Ja saspiešana ir atspējota, palaidiet skriptus no `/usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression`:
    ```bash
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression/history_upgrade.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression/history_upgrade_uint.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression/history_upgrade_log.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression/history_upgrade_str.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression/history_upgrade_text.sql | sudo -u zabbix psql zabbix
    cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/option-patches/without-compression/trends_upgrade.sql | sudo -u zabbix psql zabbix
    ```

Skatiet arī: [Padomi](https://www.tigerdata.com/blog/13-tips-to-improve-postgresql-insert-performance) INSERT veiktspējas uzlabošanai.

* Izpildiet [pēc migrācijas norādījumus](#postmigration), lai dzēstu vecās tabulas.

[comment]: # ({/f968af25-589d2f09})

[comment]: # ({5bbab9b5-4b428c7c})
### Oracle

::: noteimportant
Atbalsts Oracle DB ir novecojis kopš Zabbix 7.0.
:::

Eksportēšana un importēšana jāveic tmux/screen vidē, lai nodrošinātu, ka sesija netiek pārtraukta.
Zabbix serverim jaunināšanas laikā jābūt apturētam.

Skatiet arī: [Svarīgas piezīmes](#important-notes)

#### Tabulu jaunināšana

* Instalējiet Oracle Data Pump (pieejams [Instant Client Tools pakotnē](https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html)). 

Skatiet Oracle Data Pump [dokumentāciju](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-performance-tips.html) par veiktspējas ieteikumiem.

* Pārdēvējiet tabulas, izmantojot `history_upgrade_prepare.sql`.

```bash
cd /path/to/zabbix-sources/database/oracle/option-patches
sqlplus zabbix/password@oracle_host/service
sqlplus> @history_upgrade_prepare.sql
```

[comment]: # ({/5bbab9b5-4b428c7c})

[comment]: # ({dfc047ec-0dd33561})
#### Vēstures tabulu pakešmigrācija

* Sagatavojiet direktorijus Data Pump.

Data Pump šiem direktorijiem ir jābūt lasīšanas un rakstīšanas tiesībām.

Piemērs:

```bash
mkdir -pv /export/history
chown -R oracle:oracle /export
```

* Izveidojiet direktorijas objektu un piešķiriet šim objektam lasīšanas un rakstīšanas tiesības lietotājam, kas tiek izmantots Zabbix autentifikācijai (piemērā zemāk - 'zabbix'). Ar *sysdba* lomu izpildiet:

```sql
create directory history as '/export/history';
grant read,write on directory history to zabbix;
```

* Eksportējiet tabulas. Aizstājiet N ar vēlamo pavedienu skaitu.

```bash
expdp zabbix/password@oracle_host/service \
    DIRECTORY=history \
    TABLES=history_old,history_uint_old,history_str_old,history_log_old,history_text_old \
    PARALLEL=N
```

* Importējiet tabulas. Aizstājiet N ar vēlamo pavedienu skaitu.

```bash
impdp zabbix/password@oracle_host/service \
    DIRECTORY=history \
    TABLES=history_uint_old \
 REMAP_TABLE=history_old:history,history_uint_old:history_uint,history_str_old:history_str,history_log_old:history_log,history_text_old:history_text \
    data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND  PARALLEL=N CONTENT=data_only
```

* Lai dzēstu vecās tabulas, izpildiet [pēc migrācijas norādījumus](#postmigration).

[comment]: # ({/dfc047ec-0dd33561})

[comment]: # ({51b383a5-f0426f06})
#### Individuāla vēstures tabulu migrācija

* Sagatavojiet Data Pump direktorijus katrai vēstures tabulai.
Data Pump šiem direktorijiem jābūt lasīšanas un rakstīšanas tiesībām.

Piemērs:

```bash
mkdir -pv /export/history /export/history_uint /export/history_str /export/history_log /export/history_text
chown -R oracle:oracle /export
```

* Izveidojiet direktorija objektu un piešķiriet šim objektam lasīšanas un rakstīšanas tiesības lietotājam, kas tiek izmantots Zabbix autentifikācijai (piemērā zemāk - 'zabbix'). Ar *sysdba* lomu izpildiet:

```sql
create directory history as '/export/history';
grant read,write on directory history to zabbix;

create directory history_uint as '/export/history_uint';
grant read,write on directory history_uint to zabbix;

create directory history_str as '/export/history_str';
grant read,write on directory history_str to zabbix;

create directory history_log as '/export/history_log';
grant read,write on directory history_log to zabbix;

create directory history_text as '/export/history_text';
grant read,write on directory history_text to zabbix;
```

* Eksportējiet un importējiet katru tabulu. Aizstājiet N ar vēlamo pavedienu skaitu.

```bash
expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history TABLES=history_old PARALLEL=N

impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history TABLES=history_old REMAP_TABLE=history_old:history data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only

expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_uint TABLES=history_uint_old PARALLEL=N

impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_uint TABLES=history_uint_old REMAP_TABLE=history_uint_old:history_uint data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only

expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_str TABLES=history_str_old PARALLEL=N

impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_str TABLES=history_str_old REMAP_TABLE=history_str_old:history_str data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only

expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_log TABLES=history_log_old PARALLEL=N

impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_log TABLES=history_log_old REMAP_TABLE=history_log_old:history_log data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only

expdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_text TABLES=history_text_old PARALLEL=N

impdp zabbix/password@oracle_host:1521/xe DIRECTORY=history_text TABLES=history_text_old REMAP_TABLE=history_text_old:history_text data_options=SKIP_CONSTRAINT_ERRORS table_exists_action=APPEND PARALLEL=N CONTENT=data_only
```

* Lai dzēstu vecās tabulas, izpildiet [pēc migrācijas norādījumus](#postmigration).

[comment]: # ({/51b383a5-f0426f06})

[comment]: # ({e73536ae-b041e427})
### Pēc migrācijas

Visām datubāzēm, kad migrācija ir pabeigta, veiciet tālāk norādītās darbības:

* Pārbaudiet, vai viss darbojas, kā paredzēts.

* Dzēsiet vecās tabulas:

```sql
DROP TABLE history_old;
DROP TABLE history_uint_old;
DROP TABLE history_str_old;
DROP TABLE history_log_old;
DROP TABLE history_text_old;
```

* TimescaleDB gadījumā dzēsiet arī šo veco tabulu:

```sql
DROP TABLE trends_old;
```

[comment]: # ({/e73536ae-b041e427})

[comment]: # ({16ed11f0-8ee7d9aa})
#### Skatiet arī

-   [Auditlog tabulas sagatavošana particionēšanai](/manual/appendix/install/auditlog_primary_keys)

[comment]: # ({/16ed11f0-8ee7d9aa})
