Sauvegarde et restauration de la base de données Oracle sous Linux (commandes emp et imp)

                                      Sauvegarde et restauration de la base de données Oracle sous Linux (commandes emp et imp)

Par rapport à MySQL, les commandes de sauvegarde et de restauration d'Oracle sont plus puissantes, la commande de sauvegarde est emp et la commande de restauration est imp. Le fichier logique utilisé est généralement suffixé avec dmp, fichier de sauvegarde logique oracle, qui est souvent utilisé pour la sauvegarde logique de la base de données, la migration de la base de données et d'autres opérations.

 

L'outil d'exportation exp compresse la sauvegarde des données de la base de données dans un fichier système binaire. Il peut être migré entre différents systèmes d'exploitation

Il dispose de trois modes:
       a. Mode utilisateur: exporter tous les objets de l'utilisateur et les données de l'objet;
       b. Mode table: exporter toutes les tables ou tables spécifiées de l'utilisateur;
       c. Base de données entière: exporter tous les objets de la base de données.

L'outil d'importation d'impulsions a trois modes:
       a. Mode utilisateur: importer tous les objets de l'utilisateur et les données de l'objet;
       b. Mode table: importer toutes les tables ou tables spécifiées de l'utilisateur;
       c. Base de données entière: importer tous les objets dans la base de données.

Les étapes effectuées par imp: 
   (1) créer une table (2) insérer des données (3) créer un index (4) créer des déclencheurs, des contraintes - créer une table, insérer des données, générer des index, créer de nouveaux déclencheurs et diverses contraintes.

Il convient de noter que seuls les utilisateurs disposant des autorisations IMP_FULL_DATABASE et DBA peuvent effectuer l'intégralité de l'importation de la base de données 

Problèmes pouvant survenir lors de l'utilisation de l'outil d'importation imp:

(1) L'objet de base de données existe déjà en 
général, les tables, séquences, fonctions / procédures, déclencheurs, etc. sous les données cibles doivent être complètement supprimés avant d'importer les données; la   
base de données objet existe déjà, appuyez sur la valeur par défaut les paramètres imp seront importés échouent 
si le paramètre ignore = y, est introduit dans le contenu du fichier de données expirera 
si une table a une contrainte de clé unique, des conditions indésirables ne seront pas introduites dans 
la contrainte si la table n'est pas des clés uniques, provoquera des enregistrements en double 

(2) Lorsque l'objet de base de données a des contraintes de clé primaire et étrangère qui 
      ne respectent pas les contraintes de clé primaire et étrangère, les données ne seront pas importées.  
      Solution: Commencez par
importer la table primaire , puis importez la table dépendante  désactivez les contraintes de clé primaire et étrangère de l'objet d'importation cible, importez Après les données, activez-les 
(3) Autorisations insuffisantes 
Si vous souhaitez importer les données de l'utilisateur A vers l'utilisateur B, l'utilisateur A doit disposer de l'autorisation imp_full_database 

(4) Lors de l'importation de tables volumineuses (supérieures à 80 Mo), l'allocation de stockage échoue. Lorsque l' 
      EXP par défaut, compresser = Y, c'est-à-dire compresser toutes les données dans un bloc de données. Lors de l' 
      importation, s'il n'y a pas de bloc de données volumineux continu, l'importation échouera. Lors de l' 
      exportation d'une grande table au-dessus de 80 Mo, n'oubliez pas que compress = N, cela ne provoquera pas ce type d'erreur. 

(5) Le jeu de caractères utilisé par imp et exp est différent.
      Si le jeu de caractères est différent, le jeu de caractères utilisé par imp et exp est différent.  L'importation échouera. Vous pouvez modifier la variable d'environnement Unix ou les informations associées à NLS_LANG dans le registre NT. 
      Modifiez-le à nouveau une fois l'importation terminée. 

select * from v $ nls_parameters where parameter = 'NLS_CHARACTERSET'; --Rechercher le jeu de caractères utilisé par le système actuel

select * from v $ nls_parameters; --Rechercher tous les paramètres liés au jeu de caractères

Modifiez le jeu de caractères du système:

Avant Oracle 8, vous pouvez directement modifier les accessoires de table de dictionnaire de données $ pour changer le jeu de caractères de la base de données. Cependant, après oracle8, il existe au moins trois tables système qui enregistrent les informations du jeu de caractères de la base de données. Seule la modification de la table props $ n'est pas complète et peut entraîner de graves conséquences. La méthode de modification correcte est la suivante

Si le serveur de base de données est démarré à ce moment, exécutez d'abord la commande SHUTDOWN IMMEDIATE pour arrêter le serveur de base de données, puis exécutez la commande suivante:
  SQL> STARTUP MOUNT;
  SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
  SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;
  SQL> ALTER SYSTEM SET AQ_TM_PROCESSES = 0;
  SQL> ALTER DATABASE OPEN;
  SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK; // Ignorer la détection de supersubset AL32UTF8;
  SQL> ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK; AL32UTF8;

Le processus ci-dessus est le suivant: fermer la base de données, démarrer la base de données à l'état de montage et entrer en mode de maintenance de la base de données. À ce stade, seuls les utilisateurs système et sys peuvent se connecter à la base de données. Fermez le planificateur du SGBD et les tâches de planification du SGBD, fermez le démarrage automatique de la tâche, ignorez la vérification du super sous-ensemble de caractères, définissez le jeu de caractères système, fermez la base de données et redémarrez la base de données.



(6) Les versions Imp et exp ne peuvent pas être compatibles vers le haut. 
Imp peut importer avec succès les fichiers générés par les versions inférieures de exp, mais ne peut pas importer les fichiers générés par les versions supérieures de exp. 
Selon la situation, nous pouvons utiliser

 

 

La différence entre exp et imp et pompe de données expdp et impdp:

1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。exp在客户端使用,要受到网速的影响,因此会比较慢。
2、expdp和impdp是服务端的工具程序,他们只能在Oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
4、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。
5,数据泵expdp和impdp导出可以使用parallel属性指定并行任务导出,parallel=2就是并行2个任务导出。当然,这个并不是越多越好,需要考虑服务器的性能和cpu的个数等等因素。还可以通过导出多个文件的方式提高性能,即使用dumpfile=expdp.dp1,expdp.dp2这种方式提高性能。需要用户根据实际情况设置
6,exp导出时读取的是sql,通过加载sql查询结果到缓存,然后在写进目标文件,而expdp是直接读取的数据块,直接从数据块写进目标文件。

 

Commençons par un exemple simple, exportez la table emp de l'utilisateur zsk et importez la table emp.

a, exportez la table emp de l'utilisateur zsk

Expliquez que l'utilisateur zsk est un nouvel utilisateur et que la table emp est créée par elle-même. Une fois la table créée, exportez la table emp sous forme de fichier, puis supprimez la table emp et restaurez la table emp dans le fichier d'importation.

b, créez un utilisateur zsk et donnez les autorisations appropriées

Entrez sqlplus, utilisez l'utilisateur sys pour vous connecter à la base de données, créez un nouvel utilisateur zsk, accordez des autorisations pour créer des tables, insérer des données et supprimer des tables.

créer un utilisateur zsk identifié par zsk; accorder create session à zsk; accorder un espace de table illimité à zsk; accorder créer n'importe quelle table à zsk; - autorisations de base de données de connexion, autorisations de lecture d'espace de table, nouvelles autorisations de table, juste ces autorisations suffisent, et le mot de passe utilisateur zsk est zsk.

c. Créez un exemple de table emp. L'instruction SQL de création de la table est la suivante, en insérant 14 enregistrements:

create table EMP
(
empno NUMBER(4),
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2)
)
;
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (1, 'dog', 'code', 7369, to_date('05-06-2018', 'dd-mm-yyyy'), 5000, 5000, 10);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800, null, 20);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600, 300, 
30);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7521, 'WARD', 'SALESMAN', 7698, to_date('22-02-1981', 'dd-mm-yyyy'), 1250, 500, 30);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7566, 'JONES', 'MANAGER', 7839, to_date('02-04-1981', 'dd-mm-yyyy'), 2975, null, 
20);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-09-1981', 'dd-mm-yyyy'), 1250, 1400, 
30);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850, null, 
30);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7788, 'SCOTT', 'ANALYST', 7566, to_date('19-04-1987', 'dd-mm-yyyy'), 3000, null, 
20);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981', 'dd-mm-yyyy'), 5000, null, 
10);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7844, 'TURNER', 'SALESMAN', 7698, to_date('08-09-1981', 'dd-mm-yyyy'), 1500, 0, 30);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7876, 'ADAMS', 'CLERK', 7788, to_date('23-05-1987', 'dd-mm-yyyy'), 1100, null, 20);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7900, 'JAMES', 'CLERK', 7698, to_date('03-12-1981', 'dd-mm-yyyy'), 950, null, 30);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7902, 'FORD', 'ANALYST', 7566, to_date('03-12-1981', 'dd-mm-yyyy'), 3000, null, 20);
insert into EMP (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7934, 'MILLER', 'CLERK', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300, null, 10);
commit;

d, exportez la table emp

Sous l'utilisateur Oracle, entrez la commande exp pour entrer interactive

[oracle@centos11 ~]$ exp

Export: Release 11.2.0.1.0 - Production on Tue Jan 19 20:13:43 2021

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Username: zsk
Password: 

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Enter array fetch buffer size: 4096 > 

Export file: expdat.dmp > 

(2)U(sers), or (3)T(ables): (2)U > T

Export table data (yes/no): yes > 

Compress extents (yes/no): yes > 

Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)

About to export specified tables via Conventional Path ...
Table(T) or Partition(T:P) to be exported: (RETURN to quit) > emp

. . exporting table                            EMP         14 rows exported
Table(T) or Partition(T:P) to be exported: (RETURN to quit) > 

Export terminated successfully without warnings.

Le fichier enregistré se trouve dans le répertoire oracle sous le répertoire utilisateur Oracle. Ce qui précède est la valeur par défaut. Entrez le nom de la table à sauvegarder après la ligne RETURN toquit, puis appuyez à fond sur Entrée. L'exportation ci-dessus consiste à activer la compression par défaut et à exporter les données de la table, et l'entrée T signifie exporter une seule table. Le deuxième RETURN pour quitter est entré lorsque vous voulez exporter la deuxième table. Si vous ne voulez pas exporter, appuyez simplement sur Entrée.

e, importez la base de données emp.

Tout d'abord, sqlplus se connecte à zsk et supprime la table emp. drop table emp;

Exécutez ensuite la commande: imp  zsk / zsk @ test file = / home / oracle / expdat.dmp

Le nom de la base de données est test, alors écrivez test après @ et entrez ce qui suit normalement:

[oracle@centos11 ~]$ imp zsk/zsk@test file=/home/oracle/emp.dmp

Import: Release 11.2.0.1.0 - Production on Tue Jan 19 20:25:06 2021

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
. importing ZSK's objects into ZSK
. importing ZSK's objects into ZSK
. . importing table                         "EMPS"         14 rows imported
Import terminated successfully without warnings.

Si la table d'origine est importée sans être supprimée, un objet d'erreur sera signalé comme existant et l'erreur est signalée comme suit, bien qu'elle réussisse également:

[oracle@centos11 ~]$ imp zsk/zsk@test file=/home/oracle/expdat.dmp

Import: Release 11.2.0.1.0 - Production on Tue Jan 19 20:27:24 2021

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
. importing ZSK's objects into ZSK
. importing ZSK's objects into ZSK
IMP-00015: following statement failed because the object already exists:
 "CREATE TABLE "EMPS" ("EMPNO" NUMBER(4, 0), "ENAME" VARCHAR2(10), "JOB" VARC"
 "HAR2(9), "MGR" NUMBER(4, 0), "HIREDATE" DATE, "SAL" NUMBER(7, 2), "COMM" NU"
 "MBER(7, 2), "DEPTNO" NUMBER(2, 0))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRA"
 "NS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST"
 " GROUPS 1 BUFFER_POOL DEFAULT)                    LOGGING NOCOMPRESS"
Import terminated successfully with warnings.

 

 

 


    
   je

 

Je suppose que tu aimes

Origine blog.csdn.net/alwaysbefine/article/details/112757991
conseillé
Classement