docker oracle镜像导出带数据吗_docker oracle 数据库导出 - CSDN
精华内容
参与话题
  • orlace数据库非常的繁琐,在linux上的安装也是非常反人类。步骤非常多且麻烦,容易出错。...然后,如果不手动在linux上安装oracle,或者因为服务器上还有很多别的应用,不想由于安装oracle影响到别的...

    orlace数据库非常的繁琐,在linux上的安装也是非常反人类。步骤非常多且麻烦,容易出错。不信邪的,在linux上的安装详情可以参见oracle官方文档:

    https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm


    然后,如果不手动在linux上安装oracle,或者因为服务器上还有很多别的应用,不想由于安装oracle影响到别的应用的正常运行,那么使用docker容器运行oracle,则是一个不错的选择,顺便也学习了docker的使用。docker的安装这里就不说了,请参考我之前一篇博文:

    http://blog.csdn.net/weixin_41004350/article/details/79139930


    好的,下面开始进行oracle容器的运行,完成数据库基本的设置,数据库的数据导入,数据备份

    好的,系统环境: centos7.2   数据库版本:oracle 11g。   

    1. 拉取oracle 11g 的镜像:

    用root登陆服务器,输入下面的命令,拉取oracle 11g的镜像,有点大,6.8G多,推荐放用screen放到后台下载。

    docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

    注意,这个镜像的底层操作系统版本是centos6.5



    2. 镜像下载完成后,创建容器:

    mkdir /usr/local/data_temp
    chown -R 500.500 /usr/local/data_temp
    创建一个文件目录,用于挂载到容器内,做oracle数据备份时数据存放的位置,保证备份数据不丢失。并将文件的权限给到 500.500 这个是在容器内的oracle用户的sid。不用管,后面会用到


    docker run -d --name oracle_11g -p 1521:1521 -v /usr/local/data_temp:/home/oracle/data_temp registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

    其中,oracle_11g是名称,-p是端口映射,-v是将宿主机的/usr/local/data_temp 目录映射到容器内的 /home/oracle/data_temp内。



    3. 进入容器,

    docker ps             ## 查看容器的id号,复制一下
    docker exec -it xxxxxxxx /bin/bash               ## xxxxxxx就是上一部查看的id号
    


    4 . 查看oracle状态,修改system用户密码。

    source ~/.bash_profile                          ## 加载一下用户环境变量,进入容器后,自动是oracle用户
    sqlplus /nolog                                  ## 使用sqlplus 工具,进去命令行
    SQL> connect /as sysdba                         ## 使用sysdba 连接oracle,最大权限,os认证,只能在本机上登陆使用。
    
    SQL> select status from v$instance;             ## 查看oracle现在的状态 ,状态为 OPEN 则正常,表示已开启状态。
    
    SQL> alter user system identified by oracle;    ## 修改用户 system 的密码为 oracle ,可以自定义
    



    5. 修改oracle数据库编码为 中国编码(常用编码)。 默认的是美国的UTF8编码

    SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';	       ## 查看数据库编码,结果最下面一行则是目前编码
    
    SQL> shutdown immediate;               ## 关闭数据库
    
    SQL> startup mount;                    ## 启动到 mount状态,oracle分为4个状态,详情请百度
    
    SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;                        ## 设置session ,下同
    SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
    
    SQL> alter database open;                               ## 打开oracle到 open状态
    
    SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;                ## 修改编码为 ZHS16GBK
    
    SQL> shutdown immediate;                      ## 重启oracle ,先关闭,再启动
    SQL> startup;



    6.  创建自定义的 directory ,用于存放备份数据。

    SQL> create or replace directory DATA_TEMP as '/home/oracle/data_temp';             ## 将挂载进来的目录/home/oracle/data_temp创建到oracle的directoy中。
    创建之后,导出的数据可以指定导出到这个目录,那么数据可以直接在宿主机上的对应目录中拿到,持久化保存。另外需要导入的数据文件也是直接放到这个目录,在容器中则可以调用impdp命令进行导入。


    OK,到此,基础的操作配置已完成。你可以重新提交这个容器作为新的镜像以保存修改,随便你。




    7. 然后就是创建表空间,创建用户,并授权。

    创建表空间核用户,这个可以使用工具连接到oracle数据库上进行创建,也可以手动命令行进行创建。注意依然是在sysdba权限下操作,命令如下:

    SQL> select name from v$tempfile;    ## 查询临时表空间的路径
    ## 下面这句,创建表空间,名:tets ,数据文件路径复制临时表空间数据文件路径然后改一下文件名就行了,大小:1G, 自动增长:50M 。 参数根据自己的需求自行修改
    SQL> create tablespace test datafile '/home/oracle/app/oracle/oradata/helowin/tets02.dbf' size 1G reuse autoextend on next 50M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited); 
    SQL> select tablespace_name from dba_tablespaces    ## 查看所有表空间,看看是否有刚才创建的
    SQL> create user test01 identified by testpasswd default tablespace TEST temporary tablespace TEMP;    ## 创建用户,test01,密码:testpass,设置默认表空间为刚才创建的 test, 临时表空间设为默认的 TEMP。
    SQL> select username from dba_users    ## 查看用户名,可以看到是否有刚才我们创建的用户名
    SQL> grant connect,dba,exp_full_database,imp_full_database to test01 with admin option;  ## 授权用户 test01,拥有连接,管理员,导入,导出权限,并可以传递权限。(根据需求自己定义权限)
    



    8. 导入数据,导出数据。

    还记得之前自定义的directory文件目录吗?第6步中设置的。 只需要将需要导入的数据文件,放入这个目录。就可以使用 impdp命令导入数据了。用expdp命令导出的数据,也可以设置放在此文件目录中,由于这个目录是最初从宿主机上挂载来的,所以,这些导入导出的数据,将不会随容器关闭而丢失,可以持久化保存数据。

    导入,导出命令如下:   注意,这里退出sqlplus,回到oracle用户下,操作:

    ## 导入数据,登陆用户为刚才创建的用户,实例为镜像的实例helowin,数据文件为第6步创建的DATA_TEMP,导入文件为BPM.EXPDP,用户为test01到test01,这些需要自行修改,导入的用户和当时导出的用户最好保持一直。
    impdp test01/testpasswd@helowin table_exists_action=replace directory=DATA_TEMP dumpfile=BPM.EXPDP logfile=BPM_20180124.log REMAP_SCHEMA=test01:test01 schemas=test01
    
    
    ## 导出数据,导出文件名为:BPM.EXPDP, 路径为: DATA_TEMP, 用户为test01 
    expdp test01/testpasswd@helowin dumpfile=BPM.EXPDP directory=DATA_TEMP schemas=test01 reuse_dumpfiles=y  version=11.2.0.1.0



    9. 了解了导入导出后,就可以写一个简单的导出数据的脚本,设置定时任务,作为数据备份。

    简单的备份数据的脚本如下:

    #! /usr/bin/python
    
    
    import datetime
    import os
    import re
    
    
    back_dir = '/home/oracle/data_temp'
    today = datetime.datetime.today().strftime('%Y-%m-%d')
    command = 'source /home/oracle/.bash_profile && expdp bpm/bpm@helowin dumpfile=bb
    pmxk_%s.expdp directory=DATA_TEMP schemas=bpm reuse_dumpfiles=y version=11.2.0.11
    .0' %today
    os.system(command)
    
    
    dirlist = os.listdir(back_dir)
    for dirname in dirlist:
        if 'bpmxk' in dirname:
            time1 = re.findall('bpmxk_(.*?).expdp',dirname)[0]
            time2 = datetime.datetime.strptime(time1,'%Y-%m-%d')
            time_diff = datetime.datetime.today() - time2
            if time_diff.days > 20:
                os.remove(back_dir+'\\'+dirname)
    


    然后设置定时任务,进入root账号操作,此镜像的root密码为:helowin。

    vi /etc/crontab      ## 编辑定时任务配置文件,添加下面一行
    
    * 3 * * * root /home/oracle/oracle_backup.sh      ## 每天凌晨3点自行备份脚本
    
    chmod 777 /home/oracle/oracle_backup.sh           ## 给备份脚本可执行授权
    service crond start                       ## 启动crond服务,默认是没有启动的。



    OK。到此。便全部完成了。此只是做了一个简单的备份,如何需要将所有数据文件都持久化,就需要在创建容器的时候,挂载一个存放表空间数据文件的目录到容器内,然后在创建表空间的时候,再创建一个临时表空间,将数据文件都放入挂载的目录。这样存放的数据文件就能可以持久化了。避免数据的丢失。


    如果有什么写错的,或者不明白的地方,欢迎指正

    展开全文
  • (1)进入docker拉取oracle镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g (2)创建oracle容器  docker run -d -p 1521:1521 --name oracle11g registry....

    (1)进入docker拉取oracle镜像

    docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

    (2)创建oracle容器

     docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

    (3)启动容器

    docker start oracle11g

    (4)进入镜像配置

    docker exec -it oralce11g(这个地方可以是容器名也可以是容器id)

     

    (5)创建软连接sqlplus /nolog,此时是无效的 command not found

    (6)先切换到root用户去解决软连接的问题

    切换root用户,并编辑profile文件

     

    [root@a8a161b66e1d /]# vi /etc/profile

    在文件末未添加

    export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2

    export ORACLE_SID=helowin

    export PATH=$ORACLE_HOME/bin:$PATH

     

    这是才真正创建l软连接

    ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

    su - oracle

    conn sys/ as sysdba;

     

    alter user sys identified by sys;

    alter user system identified by system;

    创建用户

    create user dlsys identified by dlsys;

    赋予权限

    grant connect,resource,dba to dlsys;

    (5)配置listener.ora以及 tnsnames.ora

    进入oracle用户的家目录

    输入 lsnrctl status查看监听状态

    cd /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin

    目录下有两个文件listener.ora以及 tnsnames.ora

    用vi编辑这两个文件修改host为自己的ip

    至此就可以用客户端连接oracle了

     

     

    接下来讲下怎么导入dmp数据到oracle库中

    (6)将dmp文件上传到容器中

    docker cp syszdb.DMP 容器id:/home/oracle/(注意syszdb.DMP文件放在dockertoolbox的安装目录下)

    (7)创建一个逻辑目录并赋予去权限(导入命令的时候需要用到)

    查看刚才创建的目录

    (7)创建表空间及用户

    CREATE TABLESPACE "DLGIS"

        LOGGING

        DATAFILE '/home/oracle/app/oracle/oradata/helowin/DLGIS.ORA' SIZE 400M

        REUSE EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;

        

    ALTER DATABASE

        DATAFILE '/home/oracle/app/oracle/oradata/helowin/DLGIS.ORA' AUTOEXTEND

        ON  NEXT 10M  MAXSIZE UNLIMITED;

    表空间及用户名创建完后就可以返回到oracle用户的家目录

    (oracle用户的家目录可以通过su root输入密码helowin后切换oracle用户su - oracle)

    (8)最后输入导入命令:(针对expdp的导出命令)

    impdp dlsys/dlsys@helowin directory=dir_dump dumpfile=syszdb.dmp

    展开全文
  • 使用export/import导出和导入docker容器

    万次阅读 2015-06-19 10:35:25
    1、导出容器 如果要导出本地某个容器,可以使用 docker export 命令,导出容器快照到本地文件。 $ sudo docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
    1、导出容器
    如果要导出本地某个容器,可以使用 docker export 命令,导出容器快照到本地文件
    $ sudo docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
    7691a814370e        ubuntu:14.04        "/bin/bash"         36 hours ago        Exited (0) 21 hours ago                       test
    $ sudo docker export 7691a814370e > ubuntu.tar
    2、导入容器快照
    可以使用 docker import 从容器快照文件中再导入为镜像,例如
    $ cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0
    $ sudo docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
    test/ubuntu         v1.0                9d37a6082e97        About a minute ago   171.3 MB
    此外,也可以通过指定 URL 或者某个目录来导入,例如
    $sudo docker import http://example.com/exampleimage.tgz example/imagerepo
    *注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
    展开全文
  • docker导入dmp文件到oracle容器

    千次阅读 2018-10-16 16:23:55
    docker的安装和oracle 镜像的拉取就不讲了之前写过了在这 https://blog.csdn.net/qq_38380025/article/details/80647620  这里讲下把 导入的dmp文件导入到oracle容器中 1. 上传文件 把dmp文件上传到服务器,然后...

    docker的安装和oracle 镜像的拉取就不讲了之前写过了在这 https://blog.csdn.net/qq_38380025/article/details/80647620

     这里讲下把 导入的dmp文件导入到oracle容器中

    1. 上传文件

    把dmp文件上传到服务器,然后在复制到oracle容器中

    首先你先把文件上传到服务器,然后在cp到容器中

     docker cp /home/production/test.dmp 4480e931b512:/home/oracle/
                  dmp文件的全路径             容器id     复制到容器中的路径

     

     2.进入容器

    exec -if   容器名  /bin/bash

     3.创建用户

     软连接 :  sqlplus   /nolog

    create user test identified by test;  创建用户

    grant dba to test;                         给用户赋予权限

    注意:可能会出现如下错误     SP2-0640: Not connected

     解决方法:conn sys/ as sysdba;

    然后继续进行创建就可以了

    create user test identified by test;  创建用户

    grant dba to test;                         给用户赋予权限

    创建完成后exit 退出软连接

    4开始导入dmp文件到oracle

    imp 用户名/密码@ocl file=/home/oracle/test.dmp full=y ignore=y

    这里的路径一定要写全路径要不会找不到文件的

    Import terminated successfully without warnings.出现如下字样表示导入成功

    展开全文
  • 因为在Linux中安装oracle非常麻烦,相信每个人也会遇到各种坑,为了一次装好,也方便将来直接可以导出镜像在各平台移植使用,所以选择用docker安装,并做详细记录,为以后需要之时拿来再看。 1、安装docker环境。 ...
  • mac 下安装docker,在docker下安装oracle

    千次阅读 2017-08-28 15:37:30
    阿里云里面的教程 https://cr.console.aliyun.com/#/accelerator下载安装这里的镜像也可以 http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/?spm=a2c1q.8351553.0.0.dn1SYR
  • docker 安装:mac:先确保系统为最新版系统,然后直接到docker官网下载mac版安装版,傻瓜式安装即可。windows:win10直接官网下载最新docker版本即可,非win10下载docker-toolbox,同样傻瓜式安装。linux:不同版本...
  • Docker 基础(二) 安装ubuntu 和 镜像保存路径1安装nginx 首先 理清一下 docker 里面的 image ,container, machine关系 Image(镜像) 可以用命令 docker images列出来$ docker images REPOSITORY TAG IMAGE ID ...
  • sath89/oracle-12c docker镜像使用笔记

    千次阅读 2019-03-26 16:54:34
    为获取该镜像使用说明,2019.2.28从dockerhub网页搜索该docker镜像,发现该镜像已经别“下架”。这意味着目前无法直接从dockerhub 拉取、使用该镜像。但是可以从该镜像的github页面获取使用说明。 该镜像已经被打包成...
  • Docker

    万次阅读 多人点赞 2020-09-21 10:59:43
    dockerdocker 手册centos7 联网安装docker官方安装手册镜像加速基本概念镜像容器docker 镜像操作下载 CentOS 镜像查看centos7镜运行 centos7删除镜像镜像导出镜像导入容器操作启动容器后台运行查看后台运行的容器...
  • docker类式于为沙盒中运行的线程,可以看做是一个简易的linux系统,容器的ID与名称都是唯一的,可以通过ID的前3位进行访问这个容器,Docker 使用一个叫做 UnionFS 的层级文件系统进行镜像操作。容器对镜像文件的...
  • 如果接触过dockerfile的同学应该知道,我们构建镜像时都会选择一个基础镜像(没接触过别担心下面会讲),这说明docker镜像是一层层进行构建的,一个镜像往往由多层文件系统组成。 2.容器 镜像是静态的,镜像运行...
  • 虚拟化容器Docker

    万次阅读 2020-10-16 00:54:22
    Docker:简介、常用命令、应用部署、迁移和备份、Dockerfile的构建、注册中心的搭建和使用
  • 参考来源:https://hub.docker.com/r/taivokasper/omnidb/   使用OmniDB数据库管理工具  --管理Oracle/MariaDB/PostgreSQL等关系型数据库 ...Docker镜像 Minimal Alpine linux based Docker container run...
  • docker笔记

    万次阅读 2020-09-02 17:19:54
    【1】ubuntu安装docker 【2】docker命令 【3】docker 网络映射 【4】制作镜像 【5】主机与docker文件交互 【6】本地镜像 【7】阿里docker镜像 【8】阿里 docker加速器(linux 客户端版本大于1.10) 【9】容器迁移 ...
  • Mac平台上Docker安装与使用

    万次阅读 多人点赞 2018-12-23 23:15:39
    Docker是一个跨平台的轻量级虚拟机,可移植性非常高,一次部署,终生可用。Docker可以在Linux,Windows,MacOS等平台上安装使用。我们都知道Linux有很多不同 的版本,例如Ubuntu,AIX,CentOS,Debian,Fedora,Oracle...
  • Docker-Windows 2008 R2安装使用

    万次阅读 2016-09-20 17:04:54
    Docker-Windows 2008 R2安装使用 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,...
  • 这里涉及到docker的一些使用(打包,发布,导入导出,运行等等),应用以小幺鸡(http://www.xiaoyaoji.cn/),简单好用的在线接口文档管理工具介绍,这是一个开源的工具,当然你也可用用你自己的应用发布; 准备应用 ...
  • 实际使用中主要为了解决无法访问外网的情况下,安装部署 docker 镜像的目的。 Docker 提供了 docker save 和 docker load 命令,用以将镜像保存为一个文件,然后传输到另一个位置上,再加载进来。 1. 导出镜像 使用 ...
1 2 3 4 5 ... 20
收藏数 722
精华内容 288
关键字:

docker oracle镜像导出带数据吗