EXP一个库(表空间是TEST1,USER1)
IMP到另一个库里面(表空间是TEST2,USER2)
在要导入的用户(也就是USER2) 的系统权限中取消掉 unlimited tablespace ,然后指定限额, 指定要导入的表空间(TEST2)。
执行
imp test/test@test2 fromuser=USER1 touser=USER2 file=D:\exp\TEST1.dmp
结果:所有普通的表都导入成功,只有几个分区表没有导入,提示报错说对TEST1表空间没有操作权限。
解决方法:
1. 导入时生成转储文件(indexfile=...),然后手工编辑这个文件,
将tablespace 参数后面的值替换成users
参考:
Q1: Can one import tables to a different tablespace?
A1:
Oracle offers no parameter to specify a different tablespace
to import data into. Objects will be re-created in the tablespace
they were originally exported from.
One can alter this behaviour by following one of these
procedures:
1. Pre-create the table(s) in the correct tablespace:
Import the dump file using the INDEXFILE= option
Edit the indexfile. Remove remarks and specify the correct
tablespaces.
Run this indexfile against your database, this will create the
required tables in the appropriate tablespaces
Import the table(s) with the IGNORE=Y option.
2.Change the default tablespace for the user:
Revoke the "UNLIMITED TABLESPACE" privilege from the
user
Revoke the user's quota from the tablespace from where the
object was exported. This forces the import utility to create
tables in the user's default tablespace.
Make the tablespace to which you want to import the default
tablespace for the user
Import the table
Q2: Import user to another tablespace
A2:
Here is how I move users to another tablespace. I will use the
schema scott as an example and the tablespace will be
DATA (was in USERS).
exp userid=system/manager parfile=exp_user.par
file=exp_scott.dmp log=exp_scott.log
owner="(scott)"
Parameter File:
BUFFER=4096000
COMPRESS=Y
GRANTS=Y
INDEXES=Y
ROWS=Y
CONSTRAINTS=Y
DIRECT=Y
Enter the following at the SQL prompt:
revoke DBA,RESOURCE from scott;
alter user scott quota unlimited on DATA;
alter user scott quota 0M on USERS;
alter user scott quota 0M on SYSTEM;
grant create procedure to scott;
grant create trigger to scott;
grant create type to scott;
Now import the user:
imp userid=system/manager parfile=imp_user.par
file=exp_scott.dmp log=imp_scott.log
fromuser="(scott)" touser="(scott)"
Parameter File:
BUFFER=4096000
GRANTS=Y
INDEXES=N
IGNORE=Y
ROWS=Y
I realize "Y" is the default for the parameters in the par file
but there are times you want to change them to "N" so I
leave them in. Once you have moved the user you can
grant the privileges back to them.
分区表在导入时,一般来说,有两种情况
1、在导入数据库中,与被导入表的分区相关的表空间已对等建立好(表空间名也是与exp数据库中一致的),那么这种情况,与普通表的imp操作是一样的
2、但多数情况下,我们不知道exp数据库中该表的物理结构,此时,可以执行以下步骤
(1)、从dmp文件中获取分区表的物理结构,执行如下命令
C:\Documents and
Settings\qcui>imp qcui/qcui@ora9
file=d:\temp\p.dmp fromuser=bi
touser=qcui ignore=y
tables=(dhfa_revenue_base) indexfile=d:\temp\dhfa.sql
(2)、根据需要编辑该表的DDL脚本(在本例中就是 d:\temp\dhfa.sql)。
- 如果希望重新规划该表的物理存储结构,则可以先创建好表空间,然后直接编辑DDL脚本,并创建该表
- 如果希望分区表相关的分区表空间就按照exp库组织,那么创建好相关的表空间,直接执行该DDL脚本,即可
3、执行分区表的导入,导入时比一般的imp操作,参数上多增加一个 ignore=y 就可以了
分享到:
相关推荐
在实际工作中,有时需要将exp导出的历史备份dmp文件进行恢复,若之前的建表语句及表空间名无法找到,则直接用imp语句进行导入的话可能...使用本文方法可将exp导出的数据用imp导入不同的表空间,从而有效解决此问题。
#### 五、使用`exp/imp`导出导入分区表数据 接下来,我们使用`exp/imp`工具来演示分区表的数据导出和导入过程。 1. **导出整个分区表**: ```bash exp scott/tiger file='/u02/dmp/tb_pt.dmp' log='/u02/dmp/tb_...
6. **安全性和性能**:在导入大量数据时,考虑使用表锁定、并行导入、分区策略等技术以提高性能和降低对生产系统的影响。 7. **后处理**:导入完成后,验证数据的完整性和一致性,可能还需要调整索引、权限等。 ...
3. **使用了`direct=true`**: 在导出数据时使用了`direct=true`选项,这会提高导出速度,但也会增加出现问题的风险,特别是在处理分区表时。 #### 三、解决办法 针对上述问题,可以采取以下几种解决方法: 1. **...
1. **导入数据**: 凌晨4点30分,使用imp命令从备份文件中恢复数据,验证数据的完整性和可用性。 ### 关键点分析 - **Oracle分区表优势**: 分区表可以将大数据集分解成较小的、更易于管理的部分,显著提升数据读写...
- 表模式备份:仅备份指定的表或表分区。 - 用户模式备份:备份指定用户的全部对象。 - 全库模式备份:备份整个数据库,包括所有用户和对象。 4四、imp逻辑恢复 imp恢复与exp备份相对应,也有三种模式: - 表模式...
通过以上内容,我们可以看到 `exp/imp2` 在处理复杂数据库操作时的强大能力,尤其是在处理索引和表分区等高级特性时。掌握这些技巧对于数据库管理员来说至关重要,能够有效提升数据库管理的效率和安全性。
`TABLES`参数可以用来指定要导入的特定表或分区。`FILE`参数指明了要导入的.dmp文件。`LOG`参数则可以设置日志文件,记录导入过程。`CONSTRAINTS`、`INDEXES`、`ROWS`等参数与exp类似,控制是否导入约束、索引和数据...
"使用PLSQL导入导出oracle数据" PL/SQL 是 Oracle 数据库管理系统中的一个过程语言,能够实现数据的导入和导出。下面我们将详细介绍使用 PL/SQL 导入导出 Oracle 数据的几种方式。 Oracle 导出方式 使用 Oracle ...
- 考虑到性能,大容量数据的导出导入可能需要规划时间窗口,并可能需要使用参数优化,如分区导出、并行导出等。 - 数据安全:在操作前备份原有数据,防止意外情况导致数据丢失。 - 版本兼容性:确认源数据库和...
5. 分区:如果导出和导入的表包含分区,需要特别处理分区信息。 6. 兼容性:导出的文件格式必须与导入的Oracle版本兼容。 在实际操作中,Oracle还提供了数据泵(Data Pump)的增强版,即expdp和impdp命令,它们提供...
可以使用 `T1:P1` 这样的格式来指定表的分区。 - **COMPRESS**:指定是否对导出的数据进行压缩处理,默认不压缩。 - **RECORDLENGTH**:指定记录的长度,影响 I/O 操作的效率。 - **GRANTS**:控制是否导出权限,...
可以指定多个表,并且可以用分区名称指定特定分区。例如:`TABLES=(emp,dept)`或`TABLES=(t1:p1,t1:p2)`。 - **COMPRESS**:控制是否压缩数据。`Y`表示启用压缩,`N`表示不压缩,默认为`N`。 - **RECORDLENGTH**:...
Oracle 数据泵(Data Pump,简称DMP)是Oracle数据库中用于高效数据迁移的工具,它在Oracle 10g及后续版本中引入,提供比传统EXP/IMP更快、更灵活的数据导出和导入功能。在Oracle 12C中,DMP文件可能包含一些特定于...
- 对Greenplum数据库进行特定的优化操作,如创建和管理分区表,进行分布式查询等。 总之,pgAdmin III 1.16.bate2作为一款强大的数据库管理工具,其新增的"imp"功能和对Greenplum的优化支持,使其在数据管理领域更...
该工具支持多种导入模式,包括但不限于表空间级别、模式级别、表级别等,并且可以灵活地指定导入过程中的各种操作选项,如覆盖现有对象、重映射模式等。 #### 三、Impdp命令格式 `impdp`的基本命令格式如下: ```...
可以导出和导入分区;支持数据过滤和数据子集导入;提供更详细的导出报告。 4. **实际操作示例** - **导出单个表**:`exp user/passwd file=mydata.dmp tables=(mytable)` - **导入导出文件**:`imp user/passwd ...
- `exp SCOTT/TIGER tables=(T1:P1, T1:P2)` (如果 T1 是分区表) - **EXP 关键字说明**: - `USERID`: 必须是命令行中的第一个参数。 - `FULL`: 导出整个文件 (默认为 N)。 - `BUFFER`: 数据缓冲区大小。 - `...