当前位置: 首页 > news >正文

MAC电脑,在 Docker 中已经运行过一次 Oracle 镜像后,再次运行具体操作。

在 Docker 中已经运行过一次 Oracle 镜像后,再次运行具体操作取决于你的需求,以下是常见场景及对应方法:

一、若之前容器已停止,想重新启动并进入该容器

  • 查看已停止的容器 :在终端输入 docker ps -a ,这会列出所有容器,包括已经停止的,找到之前运行 Oracle 镜像所创建的容器对应的容器 ID 或名称。
  • 启动容器 :使用 docker start 容器ID/名称 命令启动之前运行过的 Oracle 容器,例如 docker start myoracle (假设容器名称为 myoracle )。容器启动后,它就会在后台运行。
  • 进入容器 :若想进入容器内部进行操作,可执行 docker exec -it 容器ID/名称 bash 或 docker exec -it 容器ID/名称 /bin/sh ,比如 docker exec -it myoracle bash ,这样就能进入容器内部的终端,像操作普通 Linux 系统一样对 Oracle 相关内容进行管理。

当重新连接docker后 连接oracle数据库 错误提示:

IO 错误: The Network Adapter could not establish the connectionThe Network Adapter could not establish the connectionThe Network Adapter could not establish the connectionConnection refused, socket connect lapse 1 ms. /0:0:0:0:0:0:0:1 1521 0 1 trueConnection refused, socket connect lapse 1 ms. /0:0:0:0:0:0:0:1 1521 0 1 trueConnection refusedConnection refused

出现这个错误的原因可能是多方面的,以下是常见的排查和解决步骤:

1. 检查容器是否正常运行

首先,确保容器已经成功启动并正在运行:

docker ps -a

如果容器状态显示为 Up ,说明容器正在运行。如果状态显示为 Exited ,则需要查看容器日志以确定问题:

docker logs 436953cc4594

这里确定应该是oracle版本与数据文件版本不一致导致的 我进行容器的重新安装

对启动命令进行了稍微修改,在创建容器时,添加 -e ORACLE_EDITION=enterprise 环境变量,以确保使用企业版。以下是修改后的 docker run 命令

docker run -d \
-p 1521:1521 \
-p 5500:5500 \
-e ORACLE_PDB=ORCL \
-e ORACLE_PWD=123456 \
-e ORACLE_CHARACTERSET=AL32UTF8 \
-e INIT_SGA_SIZE=3000 \
-e INIT_PGA_SIZE=1000 \
-e ORACLE_EDITION=enterprise \
-v /Users/liuyue/docker/oracle19c/oradata:/opt/oracle/oradata \
--name oracle19c \
docker.cnb.cool/kangaroohy/open-source/images/oracle:19c-ee

删除旧容器(如果需要)

如果需要重新创建容器,可以先删除旧容器:

docker stop oracle19c
docker rm oracle19c

然后使用修改后的命令重新创建和启动容器。

验证容器状态

创建容器后,查看其状态:

docker ps -a

容器启动成功后,检查容器健康状态: 容器的状态显示为 Up 5 seconds (health: starting) ,说明容器正在启动过程中,健康检查可能还没有完成。可以稍等片刻,再次查看容器状态:

docker ps -a

如果健康状态变为 healthy ,说明容器已经正常运行。

检查挂载卷权限: 确保挂载卷在宿主机上的目录存在,并且有正确的权限:

ls -ld /Users/liuyue/docker/oracle19c/oradata

如果目录不存在,创建它:

mkdir -p /Users/liuyue/docker/oracle19c/oradata

并确保有足够的权限:

chmod 777 /Users/liuyue/docker/oracle19c/oradata

在容器内部执行

如果你更倾向于在容器内部执行 sqlplus ,可以先进入容器,然后在容器内部执行命令:

进入容器

docker exec -it oracle19c bash

在容器内部执行 SQL*Plus

进入容器后,执行以下命令连接到数据库:

sqlplus sys/123456@ORCL as sysdba

或者,也可以直接从容器内部连接到本地数据库:

sqlplus sys/123456@localhost:1521/ORCL as sysdba

接下来你可以执行一些基本的数据库操作来验证和管理数据库:

1. 查询数据库实例状态

在 SQL*Plus 中执行以下命令来查看数据库实例的状态:

SELECT status FROM v$instance;

如果状态为 OPEN ,说明数据库实例已经启动并可以使用。

2.查看数据库中的表空间

执行以下命令来查看数据库中的表空间:

SELECT tablespace_name, status FROM dba_tablespaces;

这将列出所有表空间及其状态。

3.查看数据库中的用户

执行以下命令来查看数据库中的用户:

SELECT username, account_status FROM dba_users;

这将列出所有用户及其账户状态。

4.创建一个测试表

你可以创建一个测试表来验证数据库是否正常工作:

CREATE TABLE test_table (id NUMBER PRIMARY KEY,name VARCHAR2(50)
);

插入一些测试数据:

INSERT INTO test_table (id, name) VALUES (1, 'Test');
COMMIT;

查询测试表:

SELECT * FROM test_table;

这将显示你插入的测试数据。

示例会话

你的 SQL*Plus 会话可能像这样:

SQL> SELECT status FROM v$instance;STATUS
--------
OPENSQL> SELECT tablespace_name, status FROM dba_tablespaces;TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINESQL> SELECT username, account_status FROM dba_users;USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------
SYS                            OPEN
SYSTEM                         OPEN
DBSNMP                         OPEN
OUTLN                          OPEN
ORACLE_OCM                     OPENSQL> CREATE TABLE test_table (2      id NUMBER PRIMARY KEY,3      name VARCHAR2(50)4  );Table created.SQL> INSERT INTO test_table (id, name) VALUES (1, 'Test');1 row created.SQL> COMMIT;Commit complete.SQL> SELECT * FROM test_table;ID NAME
---------- --------------------------------------------------1 Test

http://www.lryc.cn/news/578036.html

相关文章:

  • 四.生成系统签名
  • Spring Boot属性配置方式
  • 【冷知识】Spring Boot 配置文件外置
  • C++中noexcept的具体特性及其代码示例
  • mysql 分组后时间没有按照最新时间倒序
  • 【知识分享】IIC协议详解
  • Flutter视频压缩插件video_compressffmpeg_kit_flutter_new
  • ffmpeg 安装 windows ubuntu
  • Prompt Enginering
  • vue-33(实践练习:使用 Nuxt.js 和 SSR 构建一个简单的博客)
  • 如何通过python脚本向redis和mongoDB传点位数据
  • 十大排序算法汇总
  • (5)pytest-yield操作
  • vscode一个文件夹有残余的git仓库文件,已经失效了,怎样进行清空仓库残余文件并重新初始化git--ubuntu
  • 灌区信息化渠道水位流量监测
  • 设计模式之享元模式深度解析
  • 如何在 iOS 上线前做好安全防护?IPA 混淆与逆向防护实践详解
  • 什么是集装箱残损识别系统?它如何提升港口效率?
  • AI 重塑开发范式:从工具进化到行业重构的深度实践​
  • mysql运维语句
  • 【Unity】MiniGame编辑器小游戏(七)贪吃蛇【Snake】
  • 链表题解——设计链表【LeetCode】
  • C#的datagridview使用总结
  • 复合电流检测方法:原理、技术与应用演进
  • 华为云Flexus+DeepSeek征文 | ​​华为云ModelArts Studio大模型与企业AI会议纪要场景的对接方案
  • GeoTools 结合 OpenLayers 实现属性查询(二)
  • Windows Excel文档办公工作数据整理小工具
  • Day2 音频基础知识
  • API接口安全-2:签名、时间戳与Token如何联手抵御攻击
  • starocks的be参数调优