`

IMP数据到指定的表空间

阅读更多

IMP数据到指定的表空间

一直以来,我都认为只要指定用户的默认表空间,向该用户导入数据时,会自动进入到默认表空间。后来发现从System导出的dmp文件在导入时,即使指定新用户的默认表空间,还是要往System表空间中导数据。

上网搜了一下,还是有解决方法的,常见的方法如下:

SQL> create user myhuang identified by myhuang default tablespace myhuang;

SQL> grant resource,connect to myhuang;

SQL> grant dba to myhuang;//DBA权限

SQL> revoke unlimited tablespace from myhuang;//撤销此权限

SQL> alter user myhuang quota 0 on system;//将用户在System表空间的配额置为0

SQL> alter user myhuang quota unlimited on myhuang;//设置在用户在myhuang表空间配额不受限。

 

经过上述设置后,就可以用imp导入数据,数据将会进入指定的myhuang表空间:

C:\Documents and Settings\myhuang>imp system/123456@vdb fromuser=lnxh tous

er=myhuang file=G:\myhuang\lnxh.dmp ignore=y grants=n

 

顺便说两个小问题:

1IMP-00003: 遇到 ORACLE 错误 1658

ORA-01658: 无法为表空间 MYHUANG 中的段创建 INITIAL

通常这个问题可以通过Resize增加表空间数据文件大小来解决。

 

2)删除表空间

SQL> drop tablespace myhuang including contents and datafiles;

10g中实验,drop表空间之后,仍然需要手动去删除数据文件。

 
//2008-08-24补充————————————————————————
另一种比较好的方法:

Create tablespace {tbs_name} datafile ‘{file_path}’ size 500M autoextend on next 10M;

Create user {u_name} identified by {u_pwd} default tablespace {tbs_name} quota unlimited on {tbs_name};

Grant connect,imp_full_database to {u_name};

Imp {u_name}/{u_pwd}@{local_svrname} fromuser={from_user} touser={u_name} file={dmp_file_path} ignore=y tablespaces={tbs_name};

此方法不需要授予新用户DBA权限。
此方法的存在的问题是:可能导致包含BLOB、CLOB字段的表导入失败,这种情况下可以先用sql脚本将表结构建立起来,再导入相应的数据。

 

 

SQL> create user atf_ygj identified by mas123 default tablespace ygj_atf_data temporary tablespace ygj_atf_temp quota unlimited on ygj_atf_data ;

用户已创建。

SQL> grant connect,imp_full_database to atf_ygj;

授权成功。

D:\>imp atf_ygj/mas123@orcl_192.168.6.19 fromuser=atf_back touser=atf_ygj file=d:/atf_back20090927.dmp ignore=y tablespaces=ygj_atf_data;

 

 

方法三 改变用户数据所在的表空间

以后以该用户登录,创建的任何数据库对象都属于test_temp 和test_data表空间,这就不用在每创建一个对象给其指定表空间了。

=============  移动数据到表空间  ================= 
查询需要移动的表所在的表空间
  select tt.table_name,tt.tablespace_name  from user_all_tables tt where tt.tablespace_name like '%YGJ%'
 移动表到指定表空间
 alter table employees move tablespace ygj_data;
查询要移动的索引所在的表空间
select ii.index_name,ii.table_name,ii.tablespace_name,ii.temporary from user_indexes ii where index_name like  '%EMP_PK%'
 移动(重建)索引到指定表空间
 alter index EMP_PK rebuild tablespace ygj_data;

 

分享到:
评论
1 楼 keyuxi1984 2011-09-19  
public void static main(String[] args) {
System.out.println("Hello World!");
}

相关推荐

    ORACLE导入数据文件到指定的表空间

    如果是文本数据,可能需要先转换成Oracle可以识别的格式,然后使用`SQL Loader`工具加载到表空间。 5. **表空间管理**:在导入前,检查目标表空间的可用空间,必要时扩展或创建新的表空间。通过`ALTER TABLESPACE`...

    oracle导入时表空间不一致解决方法

    在进行Oracle数据迁移时,源系统与目标系统的表空间可能存在差异,这会导致在执行`imp`命令时出现错误提示,如“ORA-01546: object in wrong tablespace”。为了解决这一问题,我们需要采取一系列步骤来调整表空间...

    Oracle dmp文件导出导入(还原)到不同的表空间和不同的用户操作

    通过上述步骤,可以从一个现有的Oracle环境中导出DMP文件,并将其导入到不同的表空间和不同的用户下,从而实现数据的有效迁移和管理。这种方式在进行数据迁移、测试环境搭建等方面非常实用,能够有效避免数据丢失和...

    从一个表空间 另一个表空间

    如果已经将数据导入到旧表空间,可以通过以下步骤更改其表空间: - 使用`ALTER TABLE`语句更改表的表空间归属。 - 对于包含LOB(Large Object)类型的表,还需要额外的步骤来迁移LOB数据。 ### 三、SQL脚本示例 #...

    Oracle数据库中imp导入数据

    - **使用IMP工具导入数据**:假设有一个名为`mydata.dmp`的数据文件需要导入到新建的数据库中,可以使用以下命令来进行导入: ```bash host imp myadmin/admin@mydb fromuser=myadmin touser=myadmin file=e:\...

    Oracle11G导入导出(imp和exp)少表解决方法.docx

    - 导入到指定用户:`impdp system/manager DIRECTORY=db_bak DUMPFILE=expdp.dmp SCHEMAS=system` - 更改表的所有者:`impdp system/manager DIRECTORY=db_bak DUMPFILE=expdp.dmp TABLES=system.dept REMAP_...

    如何移动Oracle数据库的表空间

    将表空间的数据文件和导出文件复制到目标数据库所在的服务器上。例如,假设数据文件位于`d:\localdb\local1.dbf`和`d:\localdb\local2.dbf`,则需要将这两个文件复制到目标服务器的相应目录中。 ##### 4. 导入表...

    exp/imp2导入导出

    - 通过这些工具,用户可以轻松地导出整个数据库、单个表或指定的表空间,也可以将导出的数据导入到另一个数据库中。 **2. 使用场景** - 数据迁移:当需要将数据从一个环境迁移到另一个环境时,例如从开发环境迁移...

    ORACLE 导入导出表空间文档

    ### Oracle 数据库表空间管理与数据导入导出详解 #### 表空间概念及管理 在Oracle数据库中,**表空间**是逻辑存储结构的一部分,用于组织数据库中的数据和索引。一个表空间由一个或多个数据文件组成,这些数据文件...

    Oracle数据库逻辑增量备份之exp/imp

    - D时间点丢失表空间恢复:恢复到D时间点的表空间。 - 全库恢复:当需要恢复整个数据库时,可以使用全库备份及所有相关的增量备份。 7七、Exp/Imp增量备份恢复总结 通过exp/imp的增量备份恢复功能,数据库管理员...

    oracle创建表空间用户等

    例如,要创建名为`example_tbs`的表空间,并指定数据文件路径为`D:\data.dbf`,初始大小为100MB,可以执行以下SQL命令: ```sql CREATE TABLESPACE example_tbs DATAFILE 'D:\data.dbf' SIZE 100M; ``` #### 二、...

    在oracle两个表空间之间移动表

    此命令用于将指定的表移动到新的表空间中。需要注意的是,如果表中包含`LONG`类型的字段,则无法直接使用此命令进行移动。此外,如果表中包含了LOB类型的字段,并且需要一起移动这些字段的数据,则需要使用特殊的...

    Oracle数据库创建表空间、建立用户、授权、还原备份.docx

    创建数据表空间时需要指定数据文件的位置、初始大小、自动扩展策略等。示例语法如下: ```sql CREATE TABLESPACE OA LOGGING DATAFILE 'G:\OaData\OA1.DBF' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED ...

    Oracle数据库用户角色、表空间创建、删除命令

    在Oracle数据库中,表空间是逻辑存储单元,它由一个或多个数据文件组成,用于存储数据库对象,例如表、索引等。要创建一个新的数据表空间,可以使用如下命令: ```sql CREATE TABLESPACE BCC DATAFILE 'D:\oracle\...

    orcl创建表空间

    此命令创建了一个名为`ռ`的表空间,并指定其数据文件的路径和初始大小为50MB,同时开启了自动扩展功能,以适应未来数据增长的需求。 ### 创建用户并关联表空间 在创建了表空间后,接下来是创建用户并指定该用户...

    oracle创建用户、表空间、导入导出命令

    `defaulttablespace` 指定了默认的数据表空间;`temporarytablespace` 指定了默认的临时表空间。 **授予用户权限** 创建完用户后,还需要为其授予必要的权限。例如: ```sql grant connect, resource to ...

    Oracle数据库用户角色、表空间创建、删除命令.pdf

    表空间是Oracle数据库中的逻辑存储单元,每个表空间由一个或多个数据文件组成。表空间可以分为永久表空间和临时表空间两大类。创建表空间的命令如下: 1. **创建数据表空间**: ```sql CREATE TABLESPACE BCC ...

    oracle构建表空间及用户

    本文将详细介绍如何在Oracle环境中创建临时表空间、数据表空间以及用户,并授予这些用户必要的权限,特别是DBA角色的所有权限。 ### 一、创建临时表空间 #### 1.1 临时表空间概述 临时表空间主要用于存储SQL语句...

    oracle数据更新及arcsde空间数据更新.pdf

    该过程通常涉及到数据表的创建、删除、修改和维护等操作。在本文档中,我们将介绍如何使用 PL/SQL 语言来更新 Oracle 数据库中的数据,并介绍 ArcSDE 空间数据的更新。 删除用户与表空间 在 Oracle 数据库中,删除...

Global site tag (gtag.js) - Google Analytics