docker oracle import,Mac电脑通过docker安装oracle,并导入数据

一、Mac中Docker的部署

首先,你需要在Mac中部署Docker,也就是安装Docker。安装Docker分了两种途径,一种是通过terminal终端并下载相关依赖包进行安装,另一种是通过下载dmg格式的安装包直接对Docker进行安装。我推荐使用第二种方式来安装Docker,本片博文也是基于此种方式进行的讲解,希望各位熟知。因为第一种安装Docker的方式会让我们自己再配置一些Docker的基本配置,对于不懂的小白来说,不太现实。

Docker桌面版本提供了用户GUI界面的支持,使用户对Docker的相关配置直接通过界面即可,不过是英文的,不用再写其他和配置有关的命令,部分截图如下:

安装成功之后会在Mac中显示出Docker的Logo。

33a619a67b2c

同时会在Mac顶部菜单栏中出现Docker的Logo,点击它,如下图:

33a619a67b2c

在成功安装完Docker桌面版之后,Docker会默认启动并默认开机启动,当你在菜单栏中发现Docker Desktop is running时,说明你的Docker桌面版已经安装成功了,我们进行接下来的操作。

二、通过Docker来安装Oracle11g

(1)Docker是一个容器,在容器内部存在很多镜像文件,通过具体的镜像文件可以运行具体的容器。要想在Docker中安装Oracle镜像,我们首先应该在Docker的远程仓库中进行搜索,因为Docker没有自带Oracle相关镜像,命令如下(根据你Mac的实际情况决定是否要加sudo):

sudo docker search docker-oracle-xe-11g

33a619a67b2c

为什么选择该Oracle镜像,因为该镜像是我在安装了两三个Oracle镜像之后发现的占用内存最小,功能最全,安装简便的镜像,前前后后我换了两三个镜像,碰到过5.7GB的,碰到过4.2GB的,只有这个是2.7GB的,而且功能还全。搜索结果如下:

我们选择第一个STAR最多的一个镜像进行安装,拉取镜像命令如下:

sudo docker pull deepdiver/docker-oracle-xe-11g

33a619a67b2c

33a619a67b2c

因为我已经安装过了,所以这里就不再展示了,只需要等待镜像下载完毕就可。待镜像下载完毕之后,我们需要将该镜像转成容器并使用该容器,命令如下:

sudo docker run -d -p 1521:1521 --name oracle11g deepdiver/docker-oracle-xe-11g

33a619a67b2c

值得注意的就是将容器内部的1521端口映射到宿主机中的1521端口,这样一来就能在宿主机中通过Navicat等数据库可视化管理工具进行连接了。在这步完成之后,我们需要进到容器内部对已经安装的Oracle进行简单配置。

(2)在Oracle容器中简单配置你的Oracle数据库并通过Navicat进行连接

进入容器内部的命令如下:

sudo docker exec -it  你的容器Id(可通过docker ps命令获得)  /bin/bash

通过sqlplus进入Oracle:

sqlplus system/oracle

依次进行如下操作:

查看数据库用户名和密码:

select username,password from dba_users;

当然,你可以通过已经存在的用户名和密码来登录数据库,推荐使用新创建的用户来进行数据库的登录,sql如下:

create user cqj(用户名) identified by password(密码)

创建完之后,可以通过如下sql进行验证:

select * from all_users;

在创建完新用户之后,需要对该用户进行授权,该用户具有什么权限都是通过自己指定的,这也是为什么推荐使用自定义用户登录数据库的原因,sql如下:

grant connect,resource to CQJ(这里需要将用户名大写,否则授权不成功)

connect表示具有连接数据库的权限;resource表示具有操作数据库的权限

至此,所有需要配置的数据库配置都已经配置完毕,可以通过Navicat进行连接了,如下图所示:

几个需要注意的地方:

主机就是localhost或127.0.0.1

端口为docker内部Oracle容器映射到宿主机的端口,上述命令有将,我的是映射到1521端口

选择服务名进行连接,并且该版本Oracle数据库的服务名为XE(唯一)

角色选择默认就行

用户名和密码就是我们在上述创建的用户名和密码

在配置完上述内容之后,点击连接测试,即可连接成功:

33a619a67b2c

至此,所有的操作都已经完成了,赶快在你的Mac上使用Oracle吧!!

三、用sys用户登录

1.用sys超级管理员用户登录

sqlplus / as Sysdba;

2.创建oracle数据库逻辑目录

create directory datadump as '/datadump';

3.创建cqj用户并授权(上面已经创建过,此步骤在这里省略)

create user cqj identified by cqj;   grant dba to cqj;

4.给cqj用户对datadump文件的读写权限

grant write,read on directory datapump to cqj;

四、在docker容器中创建目录并将dmp文件备份到容器中

1.在容器中创建目录datadump

mkdir datadump

2.将dmp文件备份到datadump目录下

sudo docker cp /Users/XXX/Desktop/cqj_20191231.dmp  993746984ba6(容器的id,可通过docker ps查询):/datadump/cqj.dmp

3.导入成功后,查看一下文件的详细信息

ls -l

33a619a67b2c

如果该文件不是oracle dba操作的权限,可进行修改

在root账户登录下: chown oracle:dba cqj.dmp

4.导入数据泵命令

impdp cqj/cqj directory=datadump dumpfile=cqj.dmp transform=segment_attributes:n table_exists_action=replace logfile=cqj.log

5.如果导入的表太大,担心表空间不够的时候,可以适当的增加表空间

先查询一下该用户使用的哪个表空间

-- 查看当前用户的缺省表空间

select * from user_users;

因为我使用的表空间是SYSTEM,所以,增大表空间的命令如下:

ALTER TABLESPACE SYSTEM(表空间)  ADD DATAFILE  '/u01/app/oracle/oradata/XE

/system2.dbf'(文件存放位置)  SIZE 1024M AUTOEXTEND ON NEXT 1024M MAXSIZE 30720M;

查看数据库表空间使用情况:

SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,SPACE-NVL(FREE_SPACE,0) "USED_SPACE(M)",

ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2) "USED_RATE(%)",FREE_SPACE "FREE_SPACE(M)"

FROM

(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS

FROM DBA_DATA_FILES

GROUP BY TABLESPACE_NAME) D,

(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACE

FROM DBA_FREE_SPACE

GROUP BY TABLESPACE_NAME order by TABLESPACE_NAME) F

WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)

UNION ALL  --if have tempfile

SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,

USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",

NVL(FREE_SPACE,0) "FREE_SPACE(M)"

FROM

(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS

FROM DBA_TEMP_FILES

GROUP BY TABLESPACE_NAME) D,

(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,

ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE

FROM V$TEMP_SPACE_HEADER

GROUP BY TABLESPACE_NAME) F

WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME(+);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值