当前位置: 首页 > 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.lqws.cn/news/580501.html

相关文章:

  • pytorch底层原理学习--计算图
  • 【WCF】通过AOP实现基于JWT的授权与鉴权的实践
  • LG 将正式终止手机相关服务,彻底告别手机市场
  • 云手机主要是指什么?
  • static线程安全
  • 10.【C语言学习笔记】指针(二)
  • 汉字田(第十五届蓝桥杯大赛软件赛国赛)
  • 生成式人工智能实战 | 变分自编码器(Variational Auto-Encoder, VAE)
  • zxing-cpp c++版本的编译
  • 【T2I】RB: REGION AND BOUNDARY AWARE ZERO-SHOT GROUNDED TEXT-TO-IMAGE GENERATION
  • RK3588高性能处理器核心技术解析
  • 从0开始学习计算机视觉--Day06--反向传播算法
  • chatshare最新激活码分享
  • OpenCV计算机视觉实战(14)——直方图均衡化
  • Windows环境下Docker容器化的安装与设置指南
  • MySQL DATETIME 类型时间精度陷阱:一次由毫秒引发的数据“消失”之谜
  • 计算机网络第一章——计算机网络体系结构
  • Pandas5(数据清洗1)——缺失值处理、数据去重/转换/替换、离散化/分箱、检测和过滤异常值
  • 【Kafka】docker 中配置带 Kerberos 认证的 Kafka 环境(全过程)
  • NIO 工作原理
  • C++ cstring 库解析:C 风格字符串函数
  • 【甲方安全建设】SDL基线建设及审计评估
  • API接口安全-2:签名、时间戳与Token如何联手抵御攻击
  • 【第二章:机器学习与神经网络概述】04.回归算法理论与实践 -(1)线性回归模型
  • Web攻防-SSRF服务端伪造功能逻辑SRC实践复盘参数盲测自动化检测流量插件
  • 【ArcGISPro】解决Pro不能导入AppData下的site-packages
  • MySQL数据库--SQL DDL语句
  • 大学专业科普 | 云计算、大数据
  • 淘宝API接口在数据分析中的应用
  • [springboot系列] 探秘 JUnit 5:现代 Java 单元测试利器