雪月书韵茶香 雪月书韵茶香

专心做可以提升自己的事情
学习并拥有更好的技能
成为一个值得交往的人


目录
deepin使用docker安装oracle并解锁scott用户
/  

deepin使用docker安装oracle并解锁scott用户

docker 安装 oracle

使用 docker 拉取 oracle11g 的镜像

sudo docker pull  docker.io/arahman/docker-oracle-xe-11g

查看镜像

sudo docker images

创建容器并启动

docker run -d -v /home/xysycx/Software/docker/oracle11g:/data/oracle_data -p 49160:22 -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true docker.io/arahman/docker-oracle-xe-11g

参数解释

 -d 后台运行
 -v 将本地目录/home/xysycx/Software/docker/oracle11g挂载到docker的/data/oracle_data目录下
 -p 将本地端口映射到容器的虚拟端口 :前为本地端口,:后为需要映射的虚拟端口。
 -e ORACLE_ALLOW_REMOTE表示是否允许远程连接

此处我特意设置两个地址不一样,方便你理解 docker 如何将本地文件夹映射到 docker 容器内部的
/home/xysycx/Software/docker/oracle11g 是我本机 linux 系统的文件路径
如果我要在 docker oracle 内部访问这个路径就需要 指定的路径是/data/oracle_data

截图录屏_deepin-terminal_20201123003419

到此 oracle 安装启动完成

那么问题来了,我挂在一个本地文件夹到到 docker oracle 中有何贵干呢?
因为 docker 下的 oracle 没有 Scott 用户,也就无法使用 scott 用户下的默认的几张练习用的表
BONUS
DEPT
EMP
SALGRADE

接下来我们来解决这个问题

生成 scott 用户和相关练习用的表

进入 docker 容器目录

sudo docker exec -it 524852505bf7 /bin/bash

记得将 524852505bf7 替换为你的容器 id

找到一个文件叫 utlsampl.sql

cat utlsampl.sql

然后控制台会给你打印出如下内容

Rem Copyright (c) 1990, 2006, Oracle. All rights reserved.  
Rem NAME
REM    UTLSAMPL.SQL
Rem  FUNCTION
Rem  NOTES
Rem  MODIFIED
Rem     lburgess   04/02/06  - lowercase passwords 
Rem     menash     02/21/01 -  remove unnecessary users for security reasons
Rem     gwood      03/23/99 -  make all dates Y2K compliant
Rem     jbellemo   02/27/97 -  dont connect as system
Rem     akolk      08/06/96 -  bug 368261: Adding date formats
Rem     glumpkin   10/21/92 -  Renamed from SQLBLD.SQL 
Rem     blinden   07/27/92 -  Added primary and foreign keys to EMP and DEPT
Rem     rlim       04/29/91 -         change char to varchar2 
Rem     mmoore     04/08/91 -         use unlimited tablespace priv 
Rem     pritto     04/04/91 -         change SYSDATE to 13-JUL-87 
Rem   Mendels    12/07/90 - bug 30123;add to_date calls so language independent
Rem
rem 
rem $Header: utlsampl.sql 02-apr-2006.21:13:01 lburgess Exp $ sqlbld.sql 
rem 
SET TERMOUT OFF
SET ECHO OFF

rem CONGDON    Invoked in RDBMS at build time.   29-DEC-1988
rem OATES:     Created: 16-Feb-83
 
DROP USER SCOTT CASCADE;
DROP USER ADAMS CASCADE;
DROP USER JONES CASCADE;
DROP USER CLARK CASCADE;
DROP USER BLAKE CASCADE;
GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO SCOTT IDENTIFIED BY tiger;
DROP PUBLIC SYNONYM PARTS;

CONNECT SCOTT/tiger
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
        DNAME VARCHAR2(14) ,
        LOC VARCHAR2(13) ) ;
CREATE TABLE EMP
       (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
        ENAME VARCHAR2(10),
        JOB VARCHAR2(9),
        MGR NUMBER(4),
        HIREDATE DATE,
        SAL NUMBER(7,2),
        COMM NUMBER(7,2),
        DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
INSERT INTO DEPT VALUES
        (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
        (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
        (40,'OPERATIONS','BOSTON');
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87','dd-mm-rr')-85,3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87', 'dd-mm-rr')-51,1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
CREATE TABLE BONUS
        (
        ENAME VARCHAR2(10)      ,
        JOB VARCHAR2(9)  ,
        SAL NUMBER,
        COMM NUMBER
        ) ;
CREATE TABLE SALGRADE
      ( GRADE NUMBER,
        LOSAL NUMBER,
        HISAL NUMBER );
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
COMMIT;
EXIT

然后将文本最后一行的 exit 删除后再复制到因另外一部分文件,命名为 scott.sql
存放到你挂载的本地文件夹
截图录屏_选择区域_20201123004901

就是这样。

以 sysdba 身份登录 sqlplus

sqlplus sys/oracle as sysdba

执行 sql 文件

@ /data/oracle_data/scott.sql

显示用户

show user

查看用户 SCOTT 的表

select * from tab;

截图录屏_选择区域_20201123005135

nice!!!

登录 scott 用户

conn scott/tiger;

显示结果如下

SQL> conn scott/tiger;
Connected.                                                                                                                                                     
SQL>

哦对了,这里 tiger 就是 scott 的密码

接下来我们尝试使用专业的连接工具来连接 oracle
比如 DataGrip

enter description here
DataGrip 连接成功,没得问题!

DataGrip 连接成功后会耐心等待一下,才能看到 scott 用户下的表。

截图录屏_jetbrains-datagrip_20201123010827

完事大吉,收工睡觉。


标题:deepin使用docker安装oracle并解锁scott用户
作者:shuaibing90
版权声明:本站所有文章除特别声明外,均采用 CC BY-SA 4.0转载请于文章明显位置附上原文出处链接和本声明
地址:https://xysycx.cn/articles/2020/11/23/1606065229665.html
欢迎加入博主QQ群点击加入群聊:验证www.xysycx.cn