zoukankan      html  css  js  c++  java
  • pl/sql 导出数据库表dmp文件并导入数据库过程

    本文将通过plsql客户端工具,演示如何对Oracle数据库中的表以dmp文件的格式进行导出和导入。

    dmp的导出 
    步骤如下: 
    1、打开plsql并登陆,点击 工具 ——> 导出表 

    2、在打开的窗口选中要导出的表, 输出文件 那里指定导出的dmp文件的保持路径和文件名 

    3、点击 导出

    dmp的导入 
    步骤如下: 
    1、打开plsql并登陆,点击 工具 ——> 导入表 
    打开plsql并登陆,点击 工具 ——> 导出表 

    2、在打开的窗口中,导入文件 那里选择dmp文件所在路径和文件 

    3、点击 导入

    场景:
    在已有dmp文件而不知道其中表的表空间名的情况下,有以下两种解决方法:
    1、通过编辑器打开dmp文件,通过搜索关键字“TABLESPACE”,找到所有表的所属表空间,然后将其替换为自定义的表空间。再将该dmp文件通过plsql导入到Oracle数据库中。
    (该方法只适用在文件内容 较少的情况下,而且将表的所属表空间修改,可能会有不可预计的影响)

    2、在不知表空间名的情况下,还是直接通过plsql将dmp文件导入到Oracle数据库中,在导入的过程中,可能会产生很多的错误,暂时不管。在导入程序执行完后,我们直接点击 plsql导入窗口中的 日志 选项,查看导入过程中日志信息。这时,我们可以通过日志所提示的错误信息,得知某些表原先所属的表空间名,或者是其它的一些重要信息。
    (小编遇到的情况是不知道dmp文件中所包含的表的所属表空间名,在第一次导入dmp文件失败后,通过查看日志找到数据库中的表原先所属的所有表空间后,依次创建这些表空间,并将数据库清空后再次重新导入,此时已经成功。注:至于导出dmp文件时的用户跟导入时的用户不同也是可以的,反正我是没受到影响,当然,能够一样就更好了)

    以下是创建数据库用户并授权,表空间的设定等相关的sql语句:

    -- 创建oracle用户
    create user xue identified by 123456;
    (“xue”为数据库用户名,“123456”为该用户密码)

    -- 为新建用户授予角色权限
    grant dba to xue;
    (为了方便,直接将dba角色权限赋予新建的数据库用户)


    -- 设置oracle帐号密码永久不过期
    -- 1、查看用户的proifle是那个,一般是default:
    SELECT username,PROFILE FROM dba_users;
    -- 2、查看指定概要文件(如default)的密码有效期设置:
    SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
    -- 3、将密码有效期由默认的180天修改成“无限制”:
    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
    (前三步已经解决第四步没必要)
    -- 4、修改后,还没有被提示ORA-28002警告的用户不会再碰到同样的提示;
    -- 已经被提示的用户必须再改一次密码,举例如下:
    $sqlplus / as sysdba
    sql> alter user xue identified by 123456;
    (刚新建的数据库用户默认的账号密码有效期为180天,避免以后失效,直接将其设为永久不过期)


    -- 1.创建表空间
    create tablespace XUESPACE datafile 'C:Javaoracle_tablespaceXUESPACE.dbf' size 100m reuse autoextend on next 10m maxsize unlimited;
    (“XUESPACE”为新建的表空间名称,“C:Javaoracle_tablespaceXUESPACE.dbf”是与表空间对应的文件的路径和文件名,其它的表空间大小相关的设定,暂时可忽略)

    -- 2.创建用户,指定 表空间 和 临时表空间
    create user xue identified by 123456 default tablespace XUESPACE temporary tablespace temp;
    (“XUESPACE”为用户“xue”指定的表空间,“temp”为其临时表空间)

    -- 3.查看当前用户默认的表空间、临时表空间
    select * from user_users;
    ( username 为当前用户名;
    default_tablespace 为当前用户默认的表空间;
    temporary_tablespace 为当前用户默认的临时表空间 )

    -- 4.修改用户默认的表空间
    alter user xue default tablespace spaceX;
    (将用户“xue”的默认表空间改为“spaceX”)


    -- 查看某个表空间有多少张表
    select * from all_tables where tablespace_name='spaceX';
    (“spaceX”为表空间名,此处需要注意表空间名的大小写,如“USERS”必须为大写才能将数据查询出来)

    -- 查看某个用户关联的所有表空间及各个表空间中表的数量
    select tablespace_name,count(*) from all_tables where owner = 'XUE' group by tablespace_name;

    -- Oracle如何查询表空间对应文件所在的路径
    select * from dba_data_files where tablespace_name='USERS';
    (“USERS”为表空间名)

  • 相关阅读:
    for 循环/ while 循环/ do-while 循环
    让元素脱离动画流
    缓存布局信息
    一个程序员的管理心得
    CenOS下Tomcat外网不能访问
    卸载CentOS自带的JDK并配置指定JDK环境变量
    Linux系统安装Mysql
    系统的非功能性需求
    做软件的追求
    路途小歇
  • 原文地址:https://www.cnblogs.com/luoning/p/11170763.html
Copyright © 2011-2022 走看看