docker拉不下来registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g镜像下,进行数据迁移
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g拉不下来如何进行数据迁移1. 安装helowin/oracle_11g1).问题阐述说明公司遇到的问题:原来的oracle服务器磁盘空间已经满了急需将数据迁移到新的oracle服务上由于数据量太大一般迁移方式太慢可能会不兼容数据遗失registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g镜像包作者已经在dockerhup下架了由于这个原因导致oracle数据差点丢失还好以前给oracle镜像打过包本文就以oracle物理迁移的数据进行数据转移到新的服务2).使用docker导入镜像dockerimportoracle.tar registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:snapshot1:latest3).创建文件夹mkdir-p/usr/local/docker/oraclevimdocker-compose.yml#version: 3.1services: master: image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g container_name: oracle privileged:trueports: -1521:1521 command: /bin/sh-c/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart /home/oracle/app/oracle/product/11.2.0/dbhome_2 tail -f /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log启动过程中可能会权限问题报错不用理会启动成功进入容器docker-compose up-d docker exec-it oracle bash配置环境并创建用户cd/home/oracle# 进入到 oracle 用户目录source.bash_profile# 加载 oracle 环境变量source ~/.bashrc# 加载 oracle 环境变量$PATH# 查看 oracle 环境变量是否生效sqlplus/as sysdba# 连接 oracle 数据库alter user system identified by oracle;# 修改 DBA 账号的密码alter user sys identified by oracle;# 修改 DBA 账号的密码alter profile default limit password_life_time unlimited;# 设置密码为永不过期create user test identified by oracle;# 创建一个 test 用户密码 oracleselect*fromdba_users t where t.username TEST;# 查询用户是否创建成功grant connect,resource to test;# 给用户授予连接和数据权限相关配置可省略grantselecton V_$sessionto test;grantselecton V_$sesstatto test;grantselecton V_$statnameto test;show parameter deferred_segment_creation;--查看是否启用 true 为启动 alter systemsetdeferred_segment_creationfalse;--修改为不启用 show parameter deferred_segment_creation;--查看是否修改成功 false 未启用plsql 连接修改tnsnames.orafind/-name tnsnames.ora# /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora# /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/samples/tnsnames.oravi/home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora将localhost修改成iporacle_11g(DESCRIPTION(ADDRESS_LIST(ADDRESS(PROTOCOLTCP)(HOST10.168.1.***)(PORT1521)))(CONNECT_DATA(SERVICE_NAMEhelowin)))数据持久化(将docker内容文件拷贝到宿主机中)mkdir-p/usr/local/docker/oracle/ cd/usr/local/docker/oracle/ dockercporacle:/home/oracle/app/oracle/oradata/helowin/usr/local/docker/oracle/helowin cd/usr/local/docker/oracle chown-R 500.500./helowin# 500 500 是容器内 oracle 组合用户的 id关闭容器docker-compose down修改docker-compose.ymldocker-compose.yml在/usr/local/docker/oracle目录下version:3.1services: master: image: registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g container_name: oracle privileged: true ports:-1521:1521 command:/bin/sh-c/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart /home/oracle/app/oracle/product/11.2.0/dbhome_2 tail -f /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log# 新增以下信息volumes:-./helowin:/home/oracle/app/oracle/oradata/helowin数据迁移将/usr/local/docker/oracle/helowin目录下的文件全部删除cd/usr/local/docker/oracle/helowinrm-rf./*将原来的Oracle数据helowin下的文件全部移到/home/oracle/app/oracle/oradata/helowin下mvdata(原来的数据)/usr/local/docker/oracle/helowin给Oracle用户赋予权限chown-R 500.500./helowin# 500 500 是容器内 oracle 组合用户的 id启动docker-composedocker-compose up-d查看日志docker logs -f oracle我们发现了一个错误这是由于 oracle 为了数据安全添加的版本验证/home/oracle/app/oracle/product/11.2.0/dbhome_2 Processing Database instancehelowin: log file/home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log Redo Buffers 24137728 bytes ORA-00214: control file/home/oracle/app/oracle/oradata/helowin/control01.ctlversion 877 inconsistent with file/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctlversion 841 SQL DisconnectedfromOracle Database 11g Enterprise Edition Release 11.2.0.1.0-64bit Production With the Partitioning,OLAP,DataMining and Real Application Testing options/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart: Database instancehelowinwarm started.进入容器内解决错误每次重启都需要此部操作docker exec-it oracle bash cd/home/oracle# 进入到 oracle 用户目录source.bash_profile# 加载 oracle 环境变量每次进入容器都要加载配置文件source ~/.bashrc# 删除新生成的版本控制文件将数据卷中的版本控制文件复制为新生成的版本控制文件#选择性执行如果启动有报错则执行没有报错可以不执行rm-rf/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctlcp/home/oracle/app/oracle/oradata/helowin/control01.ctl/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl su-oracle#以oracle用户执行lsnrctlstart#启动监听sqlplus/as sysdba# 以 dba 身份连接 oracle 数据库shutdown immediate# 关闭数据库实例这里会报错不用管startup# 启动实例#如果连接超时重启docker服务即可systemctl restart docker#再执行上面的命令即可如果出现ORA-01113: file * needs media recovery的错误解决办法 sqlplus/as sysdba SQLstartup ERROR at line 1: ORA-01113: file*needs media recovery ORA-01110:datafile*:xxx.dbf单机系统su-oracle sqlplus/as sysdba recover database;shutdown immediate startupexit高可用性系统在root用户下使用命令hares -state Netlsnr -sys $(hostname) 查看执行结果是否为“online”确保Netlsnr资源在线。执行如下命令登录Oraclesu-oracle sqlplus commonuser/网管数据库密码 as sysdba;登录成功之后执行如下命令恢复数据文件recover database;exit在root用户下执行命令hares -offline Oracle -sys $(hostname) 使Oracle资源离线然后再执行命令hares -online Oracle -sys $(hostname)使Oracle资源在线。registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g镜像安装包自取地址通过网盘分享的文件oracle.tar 链接: https://pan.baidu.com/s/1YdOrcNibM44E2t4psvGSEw?pwdyyds 提取码: yyds