(一)docker:建立oracle数据库

news/2024/9/15 22:47:20/
  • 前言,整个安装过程主要根据docker-images/OracleDatabase/SingleInstance
    /README.md
    ,里边对如何制作容器讲的比较清楚,唯一问题就是都是英文,可以使用谷歌浏览器自动翻译成中文,自己再对照英文相互参照来制作
  • 提前准备下路径和文件夹
  • docker文件夹
    • oracle文件夹
      • oradata文件夹
  1. 从github下载或者使用gitdown下oracle镜像相关文件
    在这里插入图片描述

  2. 进入dockerfile目录执行batch

cd docker-images\OracleDatabase\SingleInstance\dockerfiles\
.\buildContainerImage.sh -v 21.3.0 -x -i

一定要选x,不然会报错,因为说明里有提到:必须提供 Oracle 数据库的安装二进制文件(Oracle Database 18c XE、21c XE 和 23c FREE 除外)并将它们放入该dockerfiles/文件夹中

3.镜像创建完成
在这里插入图片描述
4.创建并启动容器

sixdog@sixiaodong oracle % pwd
/Users/sixdog/Documents/docker/oracle
sixdog@sixiaodong oracle % 
sixdog@sixiaodong oracle % docker run -d \                       
--name oracle21 \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_PWD=123456 \
-v ./oradata:/opt/oracle/oradata \
oracle/database:21.3.0-xe
0aa0fc400733d45706d1c0869bc8b106f988c714eeb434ce37c75306b38a1e17
sixdog@sixiaodong dockerfiles % 

5.查看容器是否创建成功

#看最后20行log
sixdog@sixiaodong oracle % docker logs -f -t --tail=20 oracle21 
2023-10-21T06:56:09.180180864Z PL/SQL procedure successfully completed.
2023-10-21T06:56:09.180189649Z 
2023-10-21T06:56:09.182385347Z SQL> Disconnected from Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
2023-10-21T06:56:09.182415597Z Version 21.3.0.0.0
2023-10-21T06:56:09.197874176Z The Oracle base remains unchanged with value /opt/oracle
2023-10-21T06:56:09.382047867Z The Oracle base remains unchanged with value /opt/oracle
2023-10-21T06:56:09.482741134Z #########################
2023-10-21T06:56:09.482792178Z DATABASE IS READY TO USE!
2023-10-21T06:56:09.482802884Z #########################
2023-10-21T06:56:09.490836103Z The following output is now a tail of the alert.log:
2023-10-21T06:56:09.492573130Z XEPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2023-10-21T06:56:09.492653263Z 2023-10-21T06:56:08.209280+00:00
2023-10-21T06:56:09.492661249Z ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
2023-10-21T06:56:09.492664667Z Completed: ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
2023-10-21T06:56:09.492666864Z 2023-10-21T06:56:08.771745+00:00
2023-10-21T06:56:09.492668983Z ALTER SYSTEM SET control_files='/opt/oracle/oradata/XE/control01.ctl' SCOPE=SPFILE;
2023-10-21T06:56:09.492671032Z 2023-10-21T06:56:08.796494+00:00
2023-10-21T06:56:09.492672981Z ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
2023-10-21T06:56:09.492674884Z ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE
2023-10-21T06:56:09.492676811Z Completed: ALTER PLUGGABLE DATABASE XEPDB1 SAVE STATE

6.查看容器

sixdog@sixiaodong oracle % docker ps -a
CONTAINER ID   IMAGE                       COMMAND                   CREATED         STATUS                    PORTS                                            NAMES
0aa0fc400733   oracle/database:21.3.0-xe   "/bin/bash -c $ORACL…"   9 minutes ago   Up 9 minutes (healthy)    0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp   oracle21
sixdog@sixiaodong oracle % 

7.进入sqlplus并连接

sixdog@sixiaodong oracle % docker exec -it oracle21 /bin/sh
[sh-4.2$ sqlplus sys/123456@//localhost:1521/XE as sysdba;SQL*Plus: Release 21.0.0.0.0 - Production on Sat Oct 21 07:02:50 2023
Version 21.3.0.0.0Copyright (c) 1982, 2021, Oracle.  All rights reserved.Connected to:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0SQL> 

数据库连接成功

8.找一个macos好用的SQL连接工具,我开始找了dbwear,但是他很不友好,不显示数据库的schema,表等等,也可能是我用的不对,最后还是下载了sqldeveloper-23.1.0.097.1607-macos-x64.app.zip,连接比较好用
在这里插入图片描述
在这里插入图片描述

可以分别执行一下,看看当前数据库的情况
--查看所有的数据库实例
select * from v$instance;
--查看当前的所有数据库
select * from v$database;
--查看当前库的所有数据表:
select TABLE_NAME from all_tables;

9.创建用户授权

CREATE USER SIXDOG IDENTIFIED BY 123456;

然后报错


在行: 1 上开始执行命令时出错 -
CREATE USER SIXDOG IDENTIFIED BY 123456
错误报告 -
ORA-65096: 公用用户名或角色名无效
65096. 00000 -  "invalid common user or role name"
*Cause:    An attempt was made to create a common user or role with a namethat was not valid for common users or roles. In addition to theusual rules for user and role names, common user and role namesmust consist only of ASCII characters, and must contain the prefixspecified in common_user_prefix parameter.
*Action:   Specify a valid common user or role name.

这个原因查一下就知道了,但是一大堆没什么意义,我们是要能正常使用,只要知道怎么解决就可以了

select pdb_name from cdb_pdbs;
--XEPDB1
--PDB$SEED
alter session set container = XEPDB1;
--Session已变更。
--CREATE USER SIXDOG IDENTIFIED BY 123456;
--select pdb_name from cdb_pdbs;
--alter session set container = XEPDB1;
CREATE USER SIXDOG IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE, DBA TO SIXDOG;

在这里插入图片描述
10.创建表

--------------------------------------------------------
--  文件已创建 - 星期六-十月-21-2023   
--------------------------------------------------------
--------------------------------------------------------
--  DDL for Table DEPT
--------------------------------------------------------CREATE TABLE "SIXDOG"."DEPT" (	"DEPTNO" NUMBER(2,0), "DNAME" VARCHAR2(14 BYTE), "LOC" VARCHAR2(13 BYTE)) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGINGSTORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS" ;
REM INSERTING into SIXDOG.DEPT
SET DEFINE OFF;
Insert into SIXDOG.DEPT (DEPTNO,DNAME,LOC) values (10,'ACCOUNTING','NEW YORK');
Insert into SIXDOG.DEPT (DEPTNO,DNAME,LOC) values (20,'RESEARCH','DALLAS');
Insert into SIXDOG.DEPT (DEPTNO,DNAME,LOC) values (30,'SALES','CHICAGO');
Insert into SIXDOG.DEPT (DEPTNO,DNAME,LOC) values (40,'OPERATIONS','BOSTON');
--------------------------------------------------------
--  DDL for Index PK_DEPT
--------------------------------------------------------CREATE UNIQUE INDEX "SIXDOG"."PK_DEPT" ON "SIXDOG"."DEPT" ("DEPTNO") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS" ;
--------------------------------------------------------
--  Constraints for Table DEPT
--------------------------------------------------------ALTER TABLE "SIXDOG"."DEPT" ADD CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS"  ENABLE;

在这里插入图片描述

--------------------------------------------------------
--  文件已创建 - 星期六-十月-21-2023   
--------------------------------------------------------
--------------------------------------------------------
--  DDL for Table EMP
--------------------------------------------------------CREATE TABLE "SIXDOG"."EMP" (	"EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10 BYTE), "JOB" VARCHAR2(9 BYTE), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0)) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGINGSTORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS" ;
REM INSERTING into SIXDOG.EMP
SET DEFINE OFF;
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7839,'KING','PRESIDENT',null,to_date('17-11月-81','DD-MON-RR'),5000,null,10);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7698,'BLAKE','MANAGER',7839,to_date('01-5月 -81','DD-MON-RR'),2850,null,30);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7782,'CLARK','MANAGER',7839,to_date('09-6月 -81','DD-MON-RR'),2450,null,10);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7566,'JONES','MANAGER',7839,to_date('02-4月 -81','DD-MON-RR'),2975,null,20);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7902,'FORD','ANALYST',7566,to_date('03-12月-81','DD-MON-RR'),3000,null,20);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7369,'SMITH','CLERK',7902,to_date('17-12月-80','DD-MON-RR'),800,null,20);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7499,'ALLEN','SALESMAN',7698,to_date('20-2月 -81','DD-MON-RR'),1600,300,30);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7521,'WARD','SALESMAN',7698,to_date('22-2月 -81','DD-MON-RR'),1250,500,30);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7654,'MARTIN','SALESMAN',7698,to_date('28-9月 -81','DD-MON-RR'),1250,1400,30);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7844,'TURNER','SALESMAN',7698,to_date('08-9月 -81','DD-MON-RR'),1500,0,30);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7900,'JAMES','CLERK',7698,to_date('03-12月-81','DD-MON-RR'),950,null,30);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7934,'MILLER','CLERK',7782,to_date('23-1月 -82','DD-MON-RR'),1300,null,10);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7788,'SCOTT','ANALYST',7566,to_date('19-4月 -87','DD-MON-RR'),3000,null,20);
Insert into SIXDOG.EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7876,'ADAMS','CLERK',7788,to_date('23-5月 -87','DD-MON-RR'),1100,null,20);
--------------------------------------------------------
--  DDL for Index PK_EMP
--------------------------------------------------------CREATE UNIQUE INDEX "SIXDOG"."PK_EMP" ON "SIXDOG"."EMP" ("EMPNO") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS" ;
--------------------------------------------------------
--  Constraints for Table EMP
--------------------------------------------------------ALTER TABLE "SIXDOG"."EMP" ADD CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)TABLESPACE "USERS"  ENABLE;
--------------------------------------------------------
--  Ref Constraints for Table EMP
--------------------------------------------------------ALTER TABLE "SIXDOG"."EMP" ADD CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")REFERENCES "SIXDOG"."DEPT" ("DEPTNO") ENABLE;

在这里插入图片描述
11.确认创建的表和数据
因为SQL developer一直卡死的状态,所以SQLplus确认

SQL> connect SIXDOG@XEPDB1
Enter password: 123456
Connected.SQL> SELECT COUNT(*) FROM EMP;COUNT(*)
----------14SQL> SELECT COUNT(*) FROM DEPT;COUNT(*)
----------4SQL> 

12.现在就是一个正常的数据库了,再看下本地挂载的目录里oracle配置文件的信息

sixdog@sixiaodong XE % pwd
/Users/sixdog/Documents/docker/oracle/oradata/dbconfig/XE
sixdog@sixiaodong XE % vi tnsnames.ora
# tnsnames.ora Network Configuration File:XE =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = XE)))LISTENER_XE =(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))XEPDB1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = XEPDB1)))EXTPROC_CONNECTION_DATA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)))(CONNECT_DATA =(SID = PLSExtProc)(PRESENTATION = RO)))
"tnsnames.ora" 34L, 678B

13.因为SQL developer一直卡死,最后还是研究了下dbeaver,最后找到了创建的表和数据
在这里插入图片描述


http://www.ppmy.cn/news/1169765.html

相关文章

在Go中理解栈和先进先出原则

Go是一种功能强大的编程语言,提供了丰富的数据结构和算法。堆栈是计算机科学中的基本数据结构之一。在本博文中,我们将探讨如何在 Go 中实现和使用堆栈,以及堆栈如何遵循先进先出 (FIFO) 原则。 首先,让我们来看看堆栈是什么以及它…

Git GUI工具:SourceTree代码管理

Git GUI工具:SourceTree SourceTreeSourceTree的安装SourceTree的使用 总结 SourceTree 当我们对Git的提交、分支已经非常熟悉,可以熟练使用命令操作Git后,再使用GUI工具,就可以更高效。 Git有很多图形界面工具,这里…

flink的TwoPhaseCommitSinkFunction怎么做才能提供精准一次保证

背景 TwoPhaseCommitSinkFunction是flink中基于二阶段事务提交和检查点机制配合使用实现的精准一次的输出数据汇,但是想要实现精准一次的输出,实际使用中需要注意几个方面,否则不仅仅达不到精准一次输出,反而可能导致数据丢失&am…

自然语言处理---RNN、LSTM、GRU模型

RNN模型 RNN模型概述 RNN(Recurrent Neural Network),中文称作循环神经网络,它一般以序列数据为输入,通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。RNN的循环机制使模型隐层上一时间步产生的…

go语言Array 与 Slice

有的语言会把数组用作常用的基本的数据结构,比如 JavaScript,而 Golang 中的数组(Array),更倾向定位于一种底层的数据结构,记录的是一段连续的内存空间数据。但是在 Go 语言中平时直接用数组的时候不多,大多数场景下我…

ubuntu20.04下安装nc

前言 nc在网络渗透测试中非常好用,这里的主要记一下Ubuntu20.04中nc的安装 编译安装 第一种方式是自己编译安装,先下载安装包 nc.zip wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download -O netcat-0.7.…

Java日志系统之Log4j2

Log4j2介绍 Log4j2是Log4j的升级版,参考Logback的优秀设计并修复了一些问题。主要优点有: 异常处理,在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。性能提升&am…

接口自动化测试注意事项

一、做接口测试需要哪些技能 做接口测试,需要的技能,基本就是以下几点: 业务流:了解系统及内部各个组件之间的业务逻辑交互; 数据流:了解接口的I/O(input/output:输入输出&#x…

nonaDlA 逻辑分析仪 使用记录

注意事项,很灵敏,不要用手碰,产生误触发 安装软件 github地址 官方提供的淘宝地址与使用说明 1.安装 1.安装程序 :下载githubDLA源码,打开 software\PulseView.exe安装 2.安装驱动:安装完第一步后&a…

短视频如何批量添加水印?实用技巧带你飞

在当今的数字时代,短视频已经成为一种非常流行的内容形式。无论是社交媒体还是视频分享网站,短视频都已经成为了一种非常有吸引力的内容。然而,对于一些拥有大量视频内容的创作者来说,添加水印可能是一项繁琐的任务。本文将介绍如…

HBuilder插件推荐

整理一下我觉得好用的插件,后期可能会有更改 eslint-js eslint-plugin-vue Prettier scss/sass编译 右键复制vue页面路径,主要用于快速复制vue页面的路径到浏览器

C语言实现顺序表(图解增删查改+代码)

文章目录 写在前面1. 顺序表的初始化和销毁1.1 顺序表的初始化(SLInit)1.2 顺序表的销毁(SLDestroy) 2. 插入数据2.1 尾插数据(SLPushBack)2.2 头插数据(SLPushFront)2.3 指定位置插入数据(SLInsert) 3. 删除数据3.1 尾删数据(SLPopBack)3.2 头删数据(SLPopFront)3.3 删除指定位…

maven聚合和继承

一、什么是maven的聚合和继承&why 随着技术飞速发展,各类用户对软件的要求越来越高,软件也变得越来越复杂。 软件设计人员往往会采用各种方式对软件划分模块,已得到更加清晰的设计及更高的复用性。 当把Maven应用到实际项目中的时候&am…

Kafka消息堆积

定义 消息堆积顾名思义就是Kafka中消息太多,在Kafka中准确来说是日志太多,但其实我认为日志堆积主要想说明的是日志没有被及时消费,而且Kafka中日志本来就一直被保存,除非被日志清理策略清理掉。 原因 核心原因是:生…

2023秋招笔试算法Python3题解

诸神缄默不语-个人CSDN博文目录 签两方了,感觉秋招已经结束了,所以发布一下之前写的笔试编程题题解。 不全。可能有些题我会继续补。 不保证能过。 后续依然有可能继续刷算法题,但是就另外专门写博文来解析了。 打码是因为原则上其实是不让公…

全网超细,自动化测试-数据管理/实施落地问题,跟着直接上高速...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 自动化测试——测…

【safetensor】介绍和基础代码

Hugging Face, EleutherAI, StabilityAI 用的多 介绍 文件形式 header,体现其特性。如果强行将pickle或者空软连接 打开,会出现报错。解决详见:debug 连接到其他教程结构和参数 安装 with pip:Copied pip install safetensors with con…

简述JavaScript函数柯里化

柯里化(Currying) 柯里化(Currying)是一种关于函数的高阶技术。它不仅被用于 JavaScript,还被用于其他编程语言。 柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)…

2023年09月青少年软件编程C语言一级真题答案——持续更新.....

日期输出 给定两个整数,表示一个日期的月和日。请按照"MM-DD"的格式输出日期,即如果月和日不到2位时,填补0使得满足2位。 时间限制:10000 内存限制:65536 输入 2个整数m,d(0 < m <= 12, 0 < d <= 31)。数据保证日期合法。 输出 按照题目要求输出…

【vscode】本地配置和根据不同项目不同的vscode配置

目录 1. .vscode项目配置2. vscode本地配置 1. .vscode项目配置 {"typescript.tsdk": "node_modules/typescript/lib","prettier.enable": false,"god.tsconfig": "./tsconfig.json",// TODO: 文件默认配置"[css]&quo…