• Oracle如何把数据库表迁移到指定表空间


    

    问题描述:
    将测试数据库中的表结果导入到正式数据库。需要在正式库中建立独立的表空间存放新导入的表,以避免和正式库中原来的表混淆。

    处理步骤:
    1. 在命令行中用exp指令导出测试库中指定表到指定的dmp文件
    exp wm/wm@orcl file=d:daochu.dmp tables=( wm.BI_GYS, wm.BI_BMXP, wm.BI_DJXS, wm.BI_KS, wm.BI_MD, wm.BI_PHJY, wm.BI_SPLB)
    该命令以wm用户将7个表(表原来位于测试库的表空间WFBI)导出到daochu.dmp文件中。


    导出报告如下:
    C:Documents and SettingsAdministrator>exp wm/wm@orcl file=d:daochu.dmp tables=
    ( wm.BI_GYS, wm.BI_BMXP, wm.BI_DJXS, wm.BI_KS, wm.BI_MD, wm.BI_PHJY, wm.BI_SPLB)
    Export: Release 10.2.0.1.0 – Production on 星期二 1月 25 20:31:41 2011
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
    With the Partitioning, OLAP and Data Mining options
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    即将导出指定的表通过常规路径…
    . . 正在导出表 BI_GYS导出了 2222 行
    . . 正在导出表 BI_BMXP导出了 2 行
    . . 正在导出表 BI_DJXS导出了 209 行
    . . 正在导出表 BI_KS导出了 140 行
    . . 正在导出表 BI_MD导出了 45 行
    . . 正在导出表 BI_PHJY导出了 9108 行
    . . 正在导出表 BI_SPLB导出了 220 行
    成功终止导出, 没有出现警告。

    也可以用指令将数据库完全导出如下:
    exp wm/wm@orcl file=d:daochu.dmp full=y

    2. 在正式库中建立表空间wftsp,该表空间为目的表空间。
    Create tablespace wftsp datafile ‘D:datawfbi.dbf’ size 10M UNIFORM SIZE 128K;

    3. 在正式库中新建用户wfdba,指定用户的默认表空间wftsp,回收用户unlimited tablespace权限,这样就可以导入到用户缺省表空间wftsp。


    1)新建用户wfdba,密码wfdba,默认表空间wftsp。

    create user wfdba identified by wfdba
    default tablespace wftsp
    temporary tablespace temp;

    2)授予用户相应权限,并回收用户的unlimited tablespace权限。
    SQL> grant connect,resource to wfdba;
    Grant succeeded
    SQL> grant dba to wfdba;
    Grant succeeded
    SQL> revoke unlimited tablespace from wfdba;– 回收unlimited tablespace权限,用户在表空间无限制配额先废除
    Revoke succeeded
    SQL> alter user wfdba quota 0 on users;–将用户wfdba在users表空间下的配额设置为0.让其无法写入
    User altered
    SQL> alter user wfdba quota unlimited on wftsp;– 将用户wfdba在wftsp表空间下的配额设置成无限
    User altered

    4. 在命令行用imp指令导入数据
    imp wfdba/wfdba file=d:daochu.dmp fromuser=wm touser=wfdba grants=n
    该命令将文件d:daochu.dmp中所属用户wm的数据导入另一个用户wfdba。

    导出报告如下:

    C:Documents and SettingsAdministrator>imp wfdba/wfdba file=d:daochu.dmp fromuser=wm touser=wfdba grants=n
    Import: Release 10.2.0.1.0 – Production on 星期二 1月 25 20:56:53 2011
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
    With the Partitioning, OLAP and Data Mining options
    经由常规路径由 EXPORT:V10.02.01 创建的导出文件
    警告: 这些对象由 WM 导出, 而不是当前用户
    已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
    . 正在将 WM 的对象导入到 WFDBA
    . . 正在导入表 “BI_GYS”导入了 2222 行
    . . 正在导入表 “BI_BMXP”导入了 2 行
    . . 正在导入表 “BI_DJXS”导入了 209 行
    . . 正在导入表 “BI_KS”导入了 140 行
    . . 正在导入表 “BI_MD”导入了 45 行
    . . 正在导入表 “BI_PHJY”导入了 9108 行
    . . 正在导入表 “BI_SPLB”导入了 220 行
    成功终止导入, 没有出现警告。

    5. 以用户wfdba登录,查看表及其所在空间。


    SQL> select table_name,tablespace_name from user_tables;
    TABLE_NAME TABLESPACE_NAME
    —————————— ——————————
    BI_GYS WFTSP
    BI_BMXP WFTSP
    BI_DJXS WFTSP
    BI_KS WFTSP
    BI_MD WFTSP
    BI_PHJY WFTSP
    BI_SPLB WFTSP
    7 rows selected


    以上查询结果表明测试库的表已经被成功的导入到正式库新建立的表空间WFTSP。

    注意:如果用具有dba权限的用户导入,那么导入时会按照原来的位置导入数据,即导入到原表空间
    比如用如上方法建立一个用户wfdba1,赋予相应的权限.


    create user wfdba identified by wfdba
    default tablespace wftsp
    temporary tablespace temp;
    grant connect,resource to wfdba;
    grant dba to wfdba1;

    该用户导入表得出如下导出报告,表被成功的导入,但是没有被导入至指定的表空间。


    C:Documents and SettingsAdministrator>imp wfdba1/wfdba1 file=d:daochu.dmp fromuser=wm touser=wfdba1 grants=n
    Import: Release 10.2.0.1.0 – Production on 星期二 1月 25 21:18:47 2011
    Copyright (c) 1982, 2005, Oracle. All rights reserved.
    连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Production
    With the Partitioning, OLAP and Data Mining options
    经由常规路径由 EXPORT:V10.02.01 创建的导出文件
    警告: 这些对象由 WM 导出, 而不是当前用户
    已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
    . 正在将 WM 的对象导入到 WFDBA1
    . . 正在导入表 “BI_GYS”导入了 2222 行
    . . 正在导入表 “BI_BMXP”导入了 2 行
    . . 正在导入表 “BI_DJXS”导入了 209 行
    . . 正在导入表 “BI_KS”导入了 140 行
    . . 正在导入表 “BI_MD”导入了 45 行
    . . 正在导入表 “BI_PHJY”导入了 9108 行
    . . 正在导入表 “BI_SPLB”导入了 220 行
    成功终止导入, 没有出现警告。

    以用户wfdba1登录,查看表及其所在空间。

    SQL> select table_name,tablespace_name from user_tables;
    TABLE_NAME TABLESPACE_NAME
    —————————— ——————————
    BI_GYS WFBI
    BI_BMXP WFBI
    BI_DJXS WFBI
    BI_KS WFBI
    BI_MD WFBI
    BI_PHJY WFBI
    BI_SPLB WFBI
    7 rows selected

    查询结果表明,表被导入到了原来的表空间WFBI。

  • 相关阅读:
    第六节:MySQL字符集和排序规则详解
    .net core中间件修改请求的数据
    Excel根据单元格的内容修改背景色或行背景色
    Excel下拉选择
    notepad++每行末尾或开头插入指定字符串
    .net core通过依赖注入使用log4net记录日志
    7种 Java 设计模式,你会几种?
    微服务技术方案:Spring Cloud 从入门到实战
    OpenCV 进阶应用,用编程手段搞定图像处理
    Vue.js 打造酷炫的可视化数据大屏
  • 原文地址:https://www.cnblogs.com/shiGuangShiYi/p/10117549.html
Copyright © 2020-2023  润新知