Oracle数据库dmp文件导入实例

记一次项目上大文件导入Oracle实例。

参考转载链接:https://blog.csdn.net/qq_38380025/article/details/80647620

首先,项目内文件是有分区的,所以要使用oracle的企业版才行,通过sql查看:

select * from v$version;

我的结果为:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE	11.2.0.1.0	Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

Oracle创建数据库和用户

mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在创建数据库的时候要对应一个用户,数据库和用户一般一一对应,mysql和sql server 直接通过create databse “数据库名” 就可以直接创建数据库了,而oracle创建一个数据库需要以下三个步骤:

  1. 创建两个数据库的文件
  2. 创建用户与上面创建的文件形成映射关系
  3. 给用户添加权限

创建两个数据文件

create tablespace [数据库名称] logging datafile '/home/oracle/app/oracle/oradata/helowin/[数据库名称].dbf'
size 100m autoextend on next 32m maxsize 500m extent management local;

create tablespace [数据库名称] logging datafile '/home/oracle/app/oracle/oradata/helowin/[数据库名称].dbf'
size 100m autoextend on  maxsize unlimited;可无限扩展大小(墙裂建议都这样用吧)。

create temporary tablespace [数据库名称]_temp tempfile '/home/oracle/app/oracle/oradata/helowin/[数据库名称]_temp.dbf'
size 100m autoextend on next 32m maxsize 500m extent management local; 
#后来发现临时表空间可以不用创建,主要之前不会用Oracle。

之前以为83G的文件是一、两个表空间,创建表空间时提示:
CREATE TABLESPACE testqqq LOGGING DATAFILE '/home/oracle/app/oracle/oradata/helowin/testqqq.dbf'
SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE 2048000M EXTENT MANAGEMENT LOCAL
ORA-03206: maximum file size of (262144000) blocks in AUTOEXTEND clause is out of range

oracle在db_block_size=4k时,表空间最大只能16G
后面查资料看到Oracle 11g 支持bigfile,可写为:

create bigfile tablespace [数据库名称] logging datafile '/home/oracle/app/oracle/oradata/helowin/[数据库名称].dbf'
size 100m autoextend on next 32m maxsize 50000m extent management local;

但是后面发现有很多表空间,每个大约有3G数据,后来废弃这种方式。

 下图为各db_block_size=Xkb时,表空间最大的列表,链接:https://www.cnblogs.com/zjfjava/p/9556311.html

由于是临时导入,直接用了SYSTEM用户。

下面为安装过程:

安装docker

使用的ubuntu18.04

链接:https://www.jianshu.com/p/cef32b054968

安装Oracle11g

链接:https://blog.csdn.net/qq_38380025/article/details/80647620

导入dmp文件

1.使用docker cp 把文件复制到容器内

2.由于表空间较多,用脚本输出:

#! /bin/env/python
YEAR = ['2016','2017','2018','2019','2020']
MONTH = ['01','02','03','04','05','06','07','08','09','10','11','12']
STRING = ['A','B','C']
for year in YEAR:
    for month in MONTH:
        for string in STRING:
            print "CREATE TABLESPACE TM_SITE"+year+month+"_"+string+" LOGGING DATAFILE '/home/oracle/app/oracle/oradata/helowin/TM_SITE"+year+month+"_"+string+".dbf'SIZE 100M AUTOEXTEND ON  MAXSIZE UNLIMITED;"

3. /home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/imp system/system@helowin file=/home/tb_citizen.dmp full = y ignore = y buffer=100000000  #这个buffer一开始没加报错,后来百度加上后可以。(不知道为什么。。。)

4.等待。后面没有报错了,时间较久。

5.注意!!找个足够的磁盘,找个足够的磁盘,找个足够的磁盘。要不真浪费时间。83G的文件恢复出来大概有500G的样子。

拓展

创建用户与上面创建的文件形成映射关系(用户名为monitor,密码为monitor)

  1. CREATE USER monitor IDENTIFIED BY monitor DEFAULT TABLESPACE[数据库名称] TEMPORARY TABLESPACE [数据库名称]_temp;

添加权限

  1. grant connect,resource,dba to monitor;
  2. grant create session to monitor;

删除数据库

  1. DROP TABLESPACE monitor INCLUDING CONTENTS AND DATAFILES;
  2. 对于带有分区,首先删除表,才能删除表空间及数据文件;
  3. DROP TABLE [表名];
  4. DROP TABLESPACE TM_SITE201601_A INCLUDING CONTENTS AND DATAFILES;
    DROP TABLESPACE TM_SITE201601_B INCLUDING CONTENTS AND DATAFILES;
    DROP TABLESPACE TM_SITE201601_C INCLUDING CONTENTS AND DATAFILES;
    DROP TABLESPACE TM_SITE201602_A INCLUDING CONTENTS AND DATAFILES;等等

删除用户

  1. drop user monitor cascade;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值