oracle批量导入dmp文件

1. 以管理员角色登录oracle数据库

image-20211029224417857

2. 创建表空间、用户、用户授权

参考博文:

  1. 创建表空间

    create tablespace 表空间名称
    datafile 存放表空间地址         #一般放在 "oracle安装目录\oradata\orcl\文件名.dbf"
    size 1024M                   #表空间初始大小
    autoextend on                #打开/关闭自动扩展功能   “on/off”
    next 5M                      #每次增加大小
    maxsize 表空间最大存储限制
    
  2. 创建用户并指定表空间

    create user zhangsan    #用户名
    identified by root      #密码
    default tablespace 表空间名称    #表空间是上面创建的
    temporary tablespace TEMP    #临时表空间默认  TEMP
    profile default;
    
    • ora-65096:公用用户名或角色名无效

      解决:oracle有些版本创建用户时需要在用户名前添加 c##C##

    • 查看所有表空间名称语句:

      select name from v$tablespace;
      
    • 查看用户列表、删除用户命令:

      select username from dba_users;  #查看用户命令
      drop user USERNAME cascade;   #删除用户
      
  3. 给表空间授权 导入dmp文件需要dba权限

    grant dba to zhangsan;
    

3. 导入dmp文件(单个)

imp 用户名/密码@orcl file=dmp文件 full=y ignore=y
#orcl是服务名,一般都为orcl
#导入dmp文件不能自己指定表名称
#当已有同名表文件存在时,ignore=y导致新数据追加在原同名表文件后面

4. 利用shell脚本批量导入dmp文件

  1. windows运行shell脚本需要安装git bash应用,直接搜索应用一路next安装即可,安装完开始菜单图标如下:image-20211029230651111

  2. 编写shell文件,遍历文件夹下所有dmp文件并导入数据库

    (简单写法,需要保证文件夹下所有文件均为目录文件或dmp文件)

    # !/bin/bash
    function import_dmp(){
    for file in 'ls $1'   #注意此处是两个反引号,表示运行系统命令
    do
       if  [ -d $1"/"$file ]   #注意此处之间空格一定要加,否则会报错  
       then                    #判断是否为目录文件,若是则递归遍历
       import_dmp $1"/"$file   
       else
       echo $1"/"$file    #输出到控制台,相当于printf
       imp $2 file=$1"/"$file full=y ignore=y
    }
    import_dmp $1 $2
    
  3. 运行上面编写的shell文件

    ./test.sh  dmp文件夹路径 用户名/密码@orcl  #orcl是数据库服务名 一般是orcl,有可能安装时自己设成了别的
    

5. Oracle报错ORA-01653:表xx无法通过8192(在表空间xx_data中)扩展

参考博文:https://segmentfault.com/a/1190000021991722

  1. 原因

    • 查看是否磁盘已满
    • 表空间已达到32G(或其他较大值)(即达到了种种限制下的本机单个空间最大值),即使设置了自动扩展和maxsize unlimited也不能继续增大表空间
  2. 解决方法:

    alter tablespace 表空间名称
    add datafile '新的表空间地址'
    size 1024M
    autoextend on
    next 1024M
    maxsize unlimited;
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值