个人学习记录

1 测试环境准备

在docker环境中操作,安装记录于:docker中安装Oracle 11g_oracle11gdocker镜像怎么下载-CSDN博客

安装完成后创建表空间记录于:Oracle创建表空间-CSDN博客

使用navicat导入了两张测试表数据

参考Oracle备份的几种方式 - lclc - 博客园

 2 创建备份目录

[oracle@adbc580880e4 /]$ mkdir /data/oracle/bak

3 创建逻辑目录并赋权

[oracle@adbc580880e4 /]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 22 13:12:16 2024

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn /as sysdba
Connected.
SQL> create directory data_dir as '/data/oracle/bak';

Directory created.

查看管理员目录是否存在:

 参考博客上的命令为SQL> select * from dba_direcories; 运行报错不存在,改成directories

SQL> select * from dba_directories;

OWNER			       DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------
SYS			       DATA_DIR
/data/oracle/bak

SYS			       SUBDIR
/home/oracle/app/oracle/product/11.2.0/dbhome_2/demo/schema/order_entry//2002/Se
p

SYS			       SS_OE_XMLDIR
/home/oracle/app/oracle/product/11.2.0/dbhome_2/demo/schema/order_entry/

OWNER			       DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------

SYS			       LOG_FILE_DIR
/home/oracle/app/oracle/product/11.2.0/dbhome_2/demo/schema/log/

SYS			       DATA_FILE_DIR
/home/oracle/app/oracle/product/11.2.0/dbhome_2/demo/schema/sales_history/

SYS			       XMLDIR
/ade/b/2125410156/oracle/rdbms/xml

OWNER			       DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------

SYS			       MEDIA_DIR
/home/oracle/app/oracle/product/11.2.0/dbhome_2/demo/schema/product_media/

SYS			       DATA_PUMP_DIR
/home/oracle/app/oracle/admin/orcl/dpdump/

SYS			       ORACLE_OCM_CONFIG_DIR
/home/oracle/app/oracle/product/11.2.0/dbhome_2/ccr/state

OWNER			       DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------


9 rows selected.

赋权给备份用户备份目录的操作权限

SQL> grant read,write on directory data_dir to helowin;

Grant succeeded.

使用sys用户不用进行这一步

4 导出数据

退出sql命令行,进入操作系统命令行操作

命令解释:

user/password@实例名:用户名和密码,这里也可以不写,直接输入命令,最后提示输入用户名的时候,直接输入 / as sysdba
directory:指定导出的目录,步骤3创建的逻辑目录
dumpfile:指定导出的文件名,存放于directory目录里
schemas:指定需要导出的数据库用户名
exclude:导出时排除特定的对象类型
tables:指定需要导出的表
logfile:指定日志文件名
parallel:指定并行导出线程的数量
cluster:是否采用多实例导出

tablespaces:指定要导出的表空间

4.1 导出整个数据库

[oracle@adbc580880e4 /]$ expdp helowin/helowin@helowin DIRECTORY=data_dir DUMPFILE=full_bak.dmp logfile=full_bak.log FULL=y;

Export: Release 11.2.0.1.0 - Production on Fri Nov 22 14:08:46 2024

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
Starting "HELOWIN"."SYS_EXPORT_FULL_01":  helowin/********@helowin DIRECTORY=data_dir DUMPFILE=full_bak.dmp logfile=full_bak.log FULL=y 
Estimate in progress using BLOCKS method...
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 140.7 MB
Processing object type DATABASE_EXPORT/TABLESPACE
Processing object type DATABASE_EXPORT/PROFILE
...
. . exported "SYSTEM"."SQLPLUS_PRODUCT_PROFILE"              0 KB       0 rows
Master table "HELOWIN"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
******************************************************************************
Dump file set for HELOWIN.SYS_EXPORT_FULL_01 is:
  /data/oracle/bak/full_bak.dmp
Job "HELOWIN"."SYS_EXPORT_FULL_01" successfully completed at 14:11:16

4.2 schemas按用户导出

[oracle@adbc580880e4 /]$ expdp helowin/helowin@helowin DIRECTORY=data_dir DUMPFILE=user_bak.dmp logfile=user_bak.log schemas=helowin;

Export: Release 11.2.0.1.0 - Production on Fri Nov 22 14:21:41 2024

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
Starting "HELOWIN"."SYS_EXPORT_SCHEMA_01":  helowin/********@helowin DIRECTORY=data_dir DUMPFILE=user_bak.dmp logfile=user_bak.log schemas=helowin 
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 11 MB
Processing object type SCHEMA_EXPORT/USER
...
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "HELOWIN"."dy_dslp"                         8.016 MB   19859 rows
. . exported "HELOWIN"."T_AP_PAYABLE_VH"                 780.1 KB   11956 rows
Master table "HELOWIN"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for HELOWIN.SYS_EXPORT_SCHEMA_01 is:
  /data/oracle/bak/user_bak.dmp
Job "HELOWIN"."SYS_EXPORT_SCHEMA_01" successfully completed at 14:21:57

4.3 按表空间导出 

[oracle@adbc580880e4 /]$ expdp helowin/helowin@helowin DIRECTORY=data_dir DUMPFILE=tablespace_bak.dmp logfile=tablespace_bak.log TABLESPACES=helowin,system;

Export: Release 11.2.0.1.0 - Production on Fri Nov 22 14:39:43 2024

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
Starting "HELOWIN"."SYS_EXPORT_TABLESPACE_01":  helowin/********@helowin DIRECTORY=data_dir DUMPFILE=tablespace_bak.dmp logfile=tablespace_bak.log TABLESPACES=helowin,system 
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 11.31 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/PRE_TABLE_ACTION
...
. . exported "SYSTEM"."REPCAT$_USER_PARM_VALUES"             0 KB       0 rows
. . exported "SYSTEM"."SQLPLUS_PRODUCT_PROFILE"              0 KB       0 rows
Master table "HELOWIN"."SYS_EXPORT_TABLESPACE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for HELOWIN.SYS_EXPORT_TABLESPACE_01 is:
  /data/oracle/bak/tablespace_bak.dmp
Job "HELOWIN"."SYS_EXPORT_TABLESPACE_01" successfully completed at 14:39:55

 4.4 按表导出-失败

报错失败

[oracle@adbc580880e4 /]$ expdp helowin/helowin@helowin DIRECTORY=data_dir DUMPFILE=table_bak.dmp logfile=table_bak.log TABLES=dy_dslp;

Export: Release 11.2.0.1.0 - Production on Fri Nov 22 15:00:42 2024

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
Starting "HELOWIN"."SYS_EXPORT_TABLE_01":  helowin/********@helowin DIRECTORY=data_dir DUMPFILE=table_bak.dmp logfile=table_bak.log TABLES=dy_dslp 
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 0 KB
ORA-39166: Object HELOWIN.DY_DSLP was not found.
ORA-31655: no data or metadata objects selected for job
Job "HELOWIN"."SYS_EXPORT_TABLE_01" completed with 2 error(s) at 15:00:43

4.5 并行操作导出整个数据库

可以通过 PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件,因此参数 dumpfile 应当拥有和并行度一样多的项目。可以指定通配符作为文件名,如:dumpfile=expCASES_%U.dmp  "%U"表示自动生成递增的序列号。

并行方式只有在表的数量多于并行值并且表很大时才是有效的。

[oracle@adbc580880e4 /]$ expdp helowin/helowin@helowin DIRECTORY=data_dir DUMPFILE=full_pa_%U.dmp logfile=full_pa.log FULL=y parallel=4;

Export: Release 11.2.0.1.0 - Production on Fri Nov 22 15:12:35 2024

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
Starting "HELOWIN"."SYS_EXPORT_FULL_01":  helowin/********@helowin DIRECTORY=data_dir DUMPFILE=full_pa_%U.dmp logfile=full_pa.log FULL=y parallel=4 
Estimate in progress using BLOCKS method...
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 140.7 MB
Processing object type DATABASE_EXPORT/TABLESPACE
Processing object type DATABASE_EXPORT/PROFILE
...
Processing object type DATABASE_EXPORT/AUDIT
Master table "HELOWIN"."SYS_EXPORT_FULL_01" successfully loaded/unloaded
******************************************************************************
Dump file set for HELOWIN.SYS_EXPORT_FULL_01 is:
  /data/oracle/bak/full_pa_01.dmp
  /data/oracle/bak/full_pa_02.dmp
  /data/oracle/bak/full_pa_03.dmp
  /data/oracle/bak/full_pa_04.dmp
Job "HELOWIN"."SYS_EXPORT_FULL_01" successfully completed at 15:15:12

5 导入还原准备

5.1还原环境准备

docker重新安装一个数据库用于还原测试:docker中安装Oracle 11g_docker 安装 oracle11g-CSDN博客

docker run  --privileged -d --restart=always -v /home/oracle:/data/oracle -p 1522:1521 --name oracle_test akaiot/oracle_11g

测试环境映射主机端口改成了1522,挂载磁盘路径和导出环境一致,再配置环境变量

5.2 创建备份目录

同步骤2,因为容器两次挂载目录一致,所以无需再次创建

5.3 创建逻辑目录

同步骤3,因为创建用户暂不赋权

SQL> create directory data_dir as '/data/oracle/bak';

Directory created.

SQL> select * from dba_directories;

OWNER			       DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------
SYS			       DATA_DIR
/data/oracle/bak

6 导入还原数据

6.1 导入整个数据库

报错ORA-01119

[oracle@82c89589c940 oracle]$ impdp system/helowin@helowin DIRECTORY=data_dir DUMPFILE=full_bak.dmp logfile=impfull_bak.log FULL=y table_exists_action=replace;

Import: Release 11.2.0.1.0 - Production on Fri Nov 22 16:43:46 2024

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
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_FULL_01":  system/********@helowin DIRECTORY=data_dir DUMPFILE=full_bak.dmp logfile=impfull_bak.log FULL=y table_exists_action=replace 
Processing object type DATABASE_EXPORT/TABLESPACE
ORA-31684: Object type TABLESPACE:"SYSAUX" already exists
...
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01119: error in creating database file '/data/oracle/helowin/helowin_temp.dbf'
ORA-27038: created file already exists
Additional information: 1
Failing sql is:
CREATE TEMPORARY TABLESPACE "HELOWIN_TEMP" TEMPFILE '/data/oracle/helowin/helowin_temp.dbf' SIZE 52428800 AUTOEXTEND ON NEXT 52428800 MAXSIZE 20480M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1048576

原因是我这个测试的容器挂载磁盘目录和导出的一样,同名的dbf文件已存在,将原来的两个dbf文件重命名

(为了保证干净的测试环境,我这里删掉现在的测试docker重新再装了一个)

重复步骤5.3再进入测试环境导入:还是报错ORA-39083和ORA-29516

ORA-39083: Object type PROC_SYSTEM_GRANT failed to create with error:
ORA-29516: Aurora assertion failure: Assertion failure at joez.c:3311
Bulk load of method java/lang/Object.<init> failed; insufficient shm-object space
Failing sql is:
BEGIN 
DECLARE
   TJP DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY;
   CURSOR C1 IS SELECT KIND,GRANTEE,TYPE_SCHEMA,TYPE_NAME,
                       NAME,ACTION,ENABLED FROM TEMP_JAVA_PRIVS;
BEGIN
   OPEN C1;
   FETCH C1 BULK COLLECT INTO TJP;
   CLOSE C1;
   DBMS_JVM_EXP_PERMS.I

查询后执行

SQL> alter system set java_jit_enabled=false;

System altered

报错

ORA-39083: Object type XMLSCHEMA failed to create with error:
ORA-31085: schema "http://localhost:8080/source/schemas/poSource/xsd/purchaseOrder.xsd" already registered
Failing sql is:
BEGIN dbms_xmlschema.registerSchema(:1, :2, (:3 = 1), FALSE,FALSE,FALSE,FALSE, :4, options=> :5, schemaoid => :6, import_options => :7); END; 
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PROCESS_TABLE_EXISTS_ACTION [TABLE:"IX"."AQ$_STREAMS_QUEUE_TABLE_T"] 
ORA-24019: identifier for QUEUE_TABLE too long, should not be greater than 24 characters
ORA-00955: name is already used by an existing object
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPW$WORKER", line 8164
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0xb1cc8a40     19028  package body SYS.KUPW$WORKER
0xb1cc8a40      8191  package body SYS.KUPW$WORKER
0xb1cc8a40     14991  package body SYS.KUPW$WORKER
0xb1cc8a40     15795  package body SYS.KUPW$WORKER
0xb1cc8a40     15433  package body SYS.KUPW$WORKER
0xb1cc8a40      3944  package body SYS.KUPW$WORKER
0xb1cc8a40      8874  package body SYS.KUPW$WORKER
0xb1cc8a40      1651  package body SYS.KUPW$WORKER
0xbe5153e8         2  anonymous block
ORA-39126: Worker unexpected fatal error in KUPW$WORKER.PROCESS_TABLE_EXISTS_ACTION [TABLE:"IX"."AQ$_STREAMS_QUEUE_TABLE_T"] 
ORA-24019: identifier for QUEUE_TABLE too long, should not be greater than 24 characters
ORA-00955: name is already used by an existing object
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.KUPW$WORKER", line 8164
----- PL/SQL Call Stack -----
  object      line  object
  handle    number  name
0xb1cc8a40     19028  package body SYS.KUPW$WORKER
0xb1cc8a40      8191  package body SYS.KUPW$WORKER
0xb1cc8a40     14991  package body SYS.KUPW$WORKER
0xb1cc8a40     15795  package body SYS.KUPW$WORKER
0xb1cc8a40     15433  package body SYS.KUPW$WORKER
0xb1cc8a40      3944  package body SYS.KUPW$WORKER
0xb1cc8a40      8874  package body SYS.KUPW$WORKER
0xb1cc8a40      1651  package body SYS.KUPW$WORKER
0xbe5153e8         2  anonymous block
Job "SYSTEM"."SYS_IMPORT_FULL_02" stopped due to fatal error at 11:30:36

尝试解决: 

 ​​​​Oracle11g impdp全库导入报错ORA-39126: Worker unexpected fatal error in-CSDN博客

再次重装测试容器后执行上面两个报错的处理步骤后,再次导入

[oracle@a4245157443b /]$ impdp system/helowin@helowin DIRECTORY=data_dir DUMPFILE=full_bak.dmp logfile=impfull_bak.log FULL=y table_exists_action=truncate;

登陆一会的结果:

...
BEGIN SYS.DBMS_IJOB.SUBMIT( JOB=> 3, LUSER=> 'SYS', PUSER=> 'SYSMAN', CUSER=> 'SYSMAN', NEXT_DATE=> TO_DATE('2024-11-22 14:11:54', 'YYYY-MM-DD:HH24:MI:SS'), INTERVAL=> 'sysdate + 1 / (24 * 60)', BROKEN=>  FALSE, WHAT=> 'EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS();', NLSENV=> 'NLS_LANGUAGE=''AMERICAN'' NLS_TERRITORY=''AMERICA'' NLS_CURRENCY=''$'' NLS_ISO_CURRENCY=''AMERICA'' NLS_NUMERIC_
Processing object type DATABASE_EXPORT/SCHEMA/DIMENSION
ORA-31684: Object type DIMENSION:"SH"."CUSTOMERS_DIM" already exists
ORA-31684: Object type DIMENSION:"SH"."PRODUCTS_DIM" already exists
ORA-31684: Object type DIMENSION:"SH"."TIMES_DIM" already exists
ORA-31684: Object type DIMENSION:"SH"."CHANNELS_DIM" already exists
ORA-31684: Object type DIMENSION:"SH"."PROMOTIONS_DIM" already exists
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCACT_INSTANCE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMA
Processing object type DATABASE_EXPORT/AUDIT
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 8078 error(s) at 14:43:41

 最后虽然导入完成,但是还有大量报错,从navicat上使用导出环境的helowin账号密码进行连接,成功

再查询表空间及对应的表,也都有数据,报错这样不处理后续有无问题不知。

 6.2 schema按用户导入

重装测试容器(步骤5.1),重复步骤3创建逻辑目录

6.2.1 同名用户导入

创建和导出环境一样的用户,赋权dba角色和逻辑目录


SQL> create directory data_dir as '/data/oracle/bak';

Directory created.

SQL> create user helowin identified by helowin;

User created.

SQL> grant dba to helowin;

Grant succeeded.

SQL> grant read,write on directory data_dir to helowin;

Grant succeeded.

尝试导入报错ORA-00959: tablespace 'HELOWIN' does not exist,表空间不存在

[oracle@230ce4e60dce ~]$ impdp helowin/helowin schemas=helowin directory=data_dir dumpfile=user_bak.dmp logfile=impdp2.log;

Import: Release 11.2.0.1.0 - Production on Wed Nov 27 14:25:37 2024

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
Master table "HELOWIN"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "HELOWIN"."SYS_IMPORT_SCHEMA_01":  helowin/******** schemas=helowin directory=data_dir dumpfile=user_bak.dmp logfile=impdp2.log 
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"HELOWIN" already exists
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
ORA-39083: Object type TABLE:"HELOWIN"."T_AP_PAYABLE_VH" failed to create with error:
ORA-00959: tablespace 'HELOWIN' does not exist
Failing sql is:
CREATE TABLE "HELOWIN"."T_AP_PAYABLE_VH" ("FBIZVOUCHER" NUMBER, "FBIZVOUCHER1" NUMBER, "FID" NUMBER, "FBOOKID" NUMBER, "FACCTSYSTEM" NUMBER, "FGLVOUCHERI" NUMBER, "FVOUCHERGRO" NUMBER, "FVOUCHERGRO1" VARCHAR2(254 BYTE), "FVOUCHERBIL" VARCHAR2(254 BYTE), "FVOUCHERYEA" VARCHAR2(254 BYTE), "FVOUCHERCRE" NUMBER, "FVOUCHERDAT" DATE) SEGMENT CREATION IMMEDIATE PCTF
ORA-39083: Object type TABLE:"HELOWIN"."dy_dslp" failed to create with error:
ORA-00959: tablespace 'HELOWIN' does not exist
Failing sql is:
CREATE TABLE "HELOWIN"."dy_dslp" ("id" NUMBER(20,0) NOT NULL ENABLE, "platform_name" VARCHAR2(255 BYTE), "store_name" VARCHAR2(255 BYTE), "commodity_id" VARCHAR2(255 BYTE), "commodity_link" VARCHAR2(255 BYTE), "merchandis" VARCHAR2(255 BYTE), "mercha" VARCHAR2(255 BYTE), "product_title" VARCHAR2(255 BYTE), "number1" VARCHAR2(255 BYTE), "number2" VARCHAR2(255 BYTE), "
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "HELOWIN"."SYS_IMPORT_SCHEMA_01" completed with 3 error(s) at 14:25:41

再去创建表空间:Oracle创建表空间-CSDN博客

关联表空间

SQL> alter user helowin default TABLESPACE helowin TEMPORARY TABLESPACE helowin_temp;

User altered.

再次导入成功

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
Master table "HELOWIN"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "HELOWIN"."SYS_IMPORT_SCHEMA_01":  helowin/******** schemas=helowin directory=data_dir dumpfile=user_bak.dmp logfile=impdp2.log 
Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"HELOWIN" already exists
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "HELOWIN"."dy_dslp"                         8.016 MB   19859 rows
. . imported "HELOWIN"."T_AP_PAYABLE_VH"                 780.1 KB   11956 rows
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "HELOWIN"."SYS_IMPORT_SCHEMA_01" completed with 1 error(s) at 15:06:28

通过navicat连接能看到测试的两张表数据。

 6.2.2 不同表空间、不同用户导入

 重建新的测试环境

创建表空间AA、临时表空间AA_temp和用户AA并授权

SQL> CREATE TEMPORARY TABLESPACE AA_temp TEMPFILE '/data/oracle/helowin/AA_temp.dbf' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 20480M EXTENT MANAGEMENT LOCAL;

Tablespace created.

SQL> CREATE TABLESPACE AA LOGGING DATAFILE '/data/oracle/helowin/AA.DBF' SIZE 50M AUTOEXTEND ON NEXT 50M MAXSIZE 20480M EXTENT MANAGEMENT LOCAL;

Tablespace created.

SQL> CREATE USER AA IDENTIFIED BY helowin DEFAULT TABLESPACE AA TEMPORARY TABLESPACE AA_temp;

User created.

SQL> grant dba to AA;

Grant succeeded.

参照步骤3创建逻辑目录并授权给用户AA

SQL> create directory data_dir as '/data/oracle/bak';

Directory created.

SQL> grant read,write on directory data_dir to AA;

Grant succeeded.

将表空间HELOWIN导入到表空间AA,用户helowin的数据导入到用户AA

impdp参数:

REMAP_SCHEMA          将一个方案中的对象加载到另一个方案

REMAP_TABLE           表名重新映射到另一个表

REMAP_TABLESPACE      将表空间对象重新映射到另一个表空间

REUSE_DATAFILES       如果表空间已存在, 则将其初始化 (N)

TRANSFORM             要应用于适用对象的元数据转换

 (这里我用的全库备份的文件进行恢复)

impdp AA/helowin remap_tablespace=HELOWIN:AA remap_schema=helowin:AA transform=oid:n directory=data_dir dumpfile=full_bak.dmp logfile=impdp3.log

结果成功但是有很多报错

ORA-31684: Object type DIMENSION:"SH"."PRODUCTS_DIM" already exists
ORA-31684: Object type DIMENSION:"SH"."TIMES_DIM" already exists
ORA-31684: Object type DIMENSION:"SH"."CHANNELS_DIM" already exists
ORA-31684: Object type DIMENSION:"SH"."PROMOTIONS_DIM" already exists
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCACT_INSTANCE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMA
Processing object type DATABASE_EXPORT/AUDIT
Job "AA"."SYS_IMPORT_FULL_01" completed with 8071 error(s) at 16:08:57

使用AA的账号密码用navicat查看,发现测试表数据已经导入到AA

6.3 按表空间导入

重复步骤5.1 5.2 5.3

步骤4.3导出的helowin和system两个表空间,这里导入helowin

[oracle@640424617bfe ~]$ impdp system/helowin directory=data_dir dumpfile=tablespace_bak.dmp logfile=impdp4.log tablespaces=helowin; 
Import: Release 11.2.0.1.0 - Production on Thu Nov 28 16:25:58 2024

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

UDI-28002: operation generated ORACLE error 28002
ORA-28002: the password will expire within 7 days

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
Master table "SYSTEM"."SYS_IMPORT_TABLESPACE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TABLESPACE_01":  system/******** directory=data_dir dumpfile=tablespace_bak.dmp logfile=impdp4.log tablespaces=HELOWIN 
Processing object type TABLE_EXPORT/TABLE/TABLE
ORA-39083: Object type TABLE:"HELOWIN"."T_AP_PAYABLE_VH" failed to create with error:
ORA-01918: user 'HELOWIN' does not exist
Failing sql is:
CREATE TABLE "HELOWIN"."T_AP_PAYABLE_VH" ("FBIZVOUCHER" NUMBER, "FBIZVOUCHER1" NUMBER, "FID" NUMBER, "FBOOKID" NUMBER, "FACCTSYSTEM" NUMBER, "FGLVOUCHERI" NUMBER, "FVOUCHERGRO" NUMBER, "FVOUCHERGRO1" VARCHAR2(254 BYTE), "FVOUCHERBIL" VARCHAR2(254 BYTE), "FVOUCHERYEA" VARCHAR2(254 BYTE), "FVOUCHERCRE" NUMBER, "FVOUCHERDAT" DATE) SEGMENT CREATION IMMEDIATE PCTFREE 10
ORA-39083: Object type TABLE:"HELOWIN"."dy_dslp" failed to create with error:
ORA-01918: user 'HELOWIN' does not exist
Failing sql is:
CREATE TABLE "HELOWIN"."dy_dslp" ("id" NUMBER(20,0) NOT NULL ENABLE, "platform_name" VARCHAR2(255 BYTE), "store_name" VARCHAR2(255 BYTE), "commodity_id" VARCHAR2(255 BYTE), "commodity_link" VARCHAR2(255 BYTE), "merchandis" VARCHAR2(255 BYTE), "mercha" VARCHAR2(255 BYTE), "product_title" VARCHAR2(255 BYTE), "number1" VARCHAR2(255 BYTE), "number2" VARCHAR2(255 BYTE), "number
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYSTEM"."SYS_IMPORT_TABLESPACE_01" completed with 2 error(s) at 16:26:02

执行报错,需要先新建用户helowin,重复步骤6.2.1新建同名用户并赋权,然后用新建的helowin账号导入

[oracle@640424617bfe ~]$ impdp helowin/helowin directory=data_dir dumpfile=tablespace_bak.dmp logfile=impdp4.log tablespaces=helowin;

Import: Release 11.2.0.1.0 - Production on Thu Nov 28 16:35:02 2024

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
Master table "HELOWIN"."SYS_IMPORT_TABLESPACE_01" successfully loaded/unloaded
Starting "HELOWIN"."SYS_IMPORT_TABLESPACE_01":  helowin/******** directory=data_dir dumpfile=tablespace_bak.dmp logfile=impdp4.log tablespaces=helowin 
Processing object type TABLE_EXPORT/TABLE/TABLE
ORA-39083: Object type TABLE:"HELOWIN"."T_AP_PAYABLE_VH" failed to create with error:
ORA-00959: tablespace 'HELOWIN' does not exist
Failing sql is:
CREATE TABLE "HELOWIN"."T_AP_PAYABLE_VH" ("FBIZVOUCHER" NUMBER, "FBIZVOUCHER1" NUMBER, "FID" NUMBER, "FBOOKID" NUMBER, "FACCTSYSTEM" NUMBER, "FGLVOUCHERI" NUMBER, "FVOUCHERGRO" NUMBER, "FVOUCHERGRO1" VARCHAR2(254 BYTE), "FVOUCHERBIL" VARCHAR2(254 BYTE), "FVOUCHERYEA" VARCHAR2(254 BYTE), "FVOUCHERCRE" NUMBER, "FVOUCHERDAT" DATE) SEGMENT CREATION IMMEDIATE PCTF
ORA-39083: Object type TABLE:"HELOWIN"."dy_dslp" failed to create with error:
ORA-00959: tablespace 'HELOWIN' does not exist
Failing sql is:
CREATE TABLE "HELOWIN"."dy_dslp" ("id" NUMBER(20,0) NOT NULL ENABLE, "platform_name" VARCHAR2(255 BYTE), "store_name" VARCHAR2(255 BYTE), "commodity_id" VARCHAR2(255 BYTE), "commodity_link" VARCHAR2(255 BYTE), "merchandis" VARCHAR2(255 BYTE), "mercha" VARCHAR2(255 BYTE), "product_title" VARCHAR2(255 BYTE), "number1" VARCHAR2(255 BYTE), "number2" VARCHAR2(255 BYTE), "
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "HELOWIN"."SYS_IMPORT_TABLESPACE_01" completed with 2 error(s) at 16:35:04

报错HELOWIN表空间不存在

新建表空间(这里只新建了表空间,没有临时表空间,也没和用户做关联),然后导入

[oracle@640424617bfe ~]$ impdp helowin/helowin directory=data_dir dumpfile=tablespace_bak.dmp logfile=impdp4.log tablespaces=helowin;

Import: Release 11.2.0.1.0 - Production on Thu Nov 28 16:42:29 2024

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
Master table "HELOWIN"."SYS_IMPORT_TABLESPACE_01" successfully loaded/unloaded
Starting "HELOWIN"."SYS_IMPORT_TABLESPACE_01":  helowin/******** directory=data_dir dumpfile=tablespace_bak.dmp logfile=impdp4.log tablespaces=helowin 
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
. . imported "HELOWIN"."dy_dslp"                         8.016 MB   19859 rows
. . imported "HELOWIN"."T_AP_PAYABLE_VH"                 780.1 KB   11956 rows
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "HELOWIN"."SYS_IMPORT_TABLESPACE_01" successfully completed at 16:42:31

导入成功,navicat可以看到测试数据。

导入测试结果:按用户和表空间导入都需要先新建用户和表空间,如新建的用户和表空间名称不一致需要使用remap参数

6.4 按表导入 

遇到这类情况较少,不进行测试

6.5 并行导入测试

重置测试环境,参考步骤6.1先解决报错的问题

SQL> alter system set java_jit_enabled=false;

System altered.

步骤4.5并行导出的是4个文件

用这4个文件进行恢复

impdp system/helowin@helowin DIRECTORY=data_dir DUMPFILE=full_pa_%U.dmp logfile=impfull_bak.log FULL=y table_exists_action=truncate parallel=4;

导入速度很慢,差不多20分钟导入完成

 使用navicat连接查看测试数据也导入成功

expdp参数说明:

参考:https://www.cnblogs.com/oracle-dba/p/3344230.html

关键字               说明 (默认)
---------------------------------------------------------------------------

ATTACH                连接到现有作业, 例如 ATTACH [=作业名]。
COMPRESSION           减小转储文件内容的大小, 其中有效关键字  值为: ALL, (METADATA_ONLY), DATA_ONLY 和 NONE。
CONTENT               指定要卸载的数据, 其中有效关键字  值为: (ALL), DATA_ONLY 和 METADATA_ONLY。  --默认值为ALL                    
DATA_OPTIONS          数据层标记, 其中唯一有效的值为: 使用CLOB格式的 XML_CLOBS-write XML 数据类型
DIRECTORY             供转储文件和日志文件使用的目录对象。
DUMPFILE              目标转储文件 (expdat.dmp) 的列表,例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.d
ENCRYPTION            加密部分或全部转储文件, 其中有效关键字值为: ALL, DATA_ONLY, METADATA_ONLY,ENCRYPTED_COLUMNS_ONLY 或 NONE。
ENCRYPTION_ALGORITHM  指定应如何完成加密, 其中有效关键字值为: (AES128), AES192 和 AES256。
ENCRYPTION_MODE       生成加密密钥的方法, 其中有效关键字值为: DUAL, PASSWORD 和 (TRANSPARENT)。
ENCRYPTION_PASSWORD   用于创建加密列数据的口令关键字。
ESTIMATE              计算作业估计值, 其中有效关键字值为: (BLOCKS) 和 STATISTICS。
ESTIMATE_ONLY         在不执行导出的情况下计算作业估计值。
EXCLUDE               排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。--EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause]FILESIZE              以字节为单位指定每个转储文件的大小。
FLASHBACK_SCN         用于将会话快照设置回以前状态的 SCN。 --指定导出特定SCN时刻的表数据FLASHBACK_TIME        用于获取最接近指定时间的 SCN 的时间。--指定导出特定时间点的表数据,注意FLASHBACK_SCN和FLASHBACK_TIME不能同时使用FULL导出整个数据库 (N)。
HELP                  显示帮助消息 (N)。
INCLUDE               包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME              要创建的导出作业的名称。
LOGFILE               日志文件名 (export.log)。
NETWORK_LINK          链接到源系统的远程数据库的名称。
NOLOGFILE             不写入日志文件 (N)。
PARALLEL              更改当前作业的活动 worker 的数目。
PARFILE               指定参数文件。
QUERY                 用于导出表的子集的谓词子句。--QUERY = [schema.][table_name:] query_clauseREMAP_DATA            指定数据转换函数,例如 REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REUSE_DUMPFILES       覆盖目标转储文件 (如果文件存在) (N)。
SAMPLE                要导出的数据的百分比;
SCHEMAS               要导出的方案的列表 (登录方案)。
STATUS                在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。
TABLES                标识要导出的表的列表 - 只有一个方案。--[schema_name.]table_name[:partition_name][,…]TABLESPACES           标识要导出的表空间的列表。
TRANSPORTABLE         指定是否可以使用可传输方法, 其中有效关键字值为: ALWAYS, (NEVER)。
TRANSPORT_FULL_CHECK  验证所有表的存储段 (N)。
TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。
VERSION               要导出的对象的版本, 其中有效关键字为:(COMPATIBLE), LATEST 或任何有效的数据库版本。
下列命令在交互模式下有效。
注: 允许使用缩写
命令               说明
---------------------------------------------------------------------------
ADD_FILE              向转储文件集中添加转储文件。
CONTINUE_CLIENT       返回到记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT           退出客户机会话并使作业处于运行状态。
FILESIZE              后续 ADD_FILE 命令的默认文件大小 (字节)。
HELP                  总结交互命令。
KILL_JOB              分离和删除作业。
PARALLEL              更改当前作业的活动 worker 的数目。PARALLEL=<worker 的数目>。    REUSE_DUMPFILES       覆盖目标转储文件 (如果文件存在) (N)。
START_JOB             启动/恢复当前作业。
STATUS                在默认值 (0) 将显示可用时的新状态的情况下,要监视的频率 (以秒计) 作业状态。STATUS[=interval]
STOP_JOB              顺序关闭执行的作业并退出客户机。STOP_JOB=IMMEDIATE 将立即关闭数据泵作业。
备注:()括号括起来的代表是expdp命令的默认选项

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐