docker下使用oracle

docker 下使用oracle

一、下载oracle docker镜像

docker pull wnameless/oracle-xe-11g

二、oracle 镜像配置信息(账号密码等)

本容器提供如下安装信息:
hostname:本虚拟机ip号
端口:1521
SID: XE
username: system/sys
passworld: oracle

管理界面访问:

url: http://localhost:9090/apex

workspace:internal
username:admin
passworld:oracle

三、docker 运行oracle容器

1: 在镜像站搜索 oracle, 第一页有两个(12c 和 11g) ,12c 太大了,要 3 个 G 且下载时间太长,我下载的是 11g
2: 运行镜像文件

docker run -d -p 9090:8080 -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g

镜像网站上说:Run this, if you want the database to be connected remotely:(远程连接)
得加
-e ORACLE_ALLOW_REMOTE=true

此处的9090:8080是将容器中的oracleXE管理界面的8080端口映射位本机的9090端口

四、oracle配置连接测试

使用Navicat for Oracle新建表空间、用户及权限赋予
参考URL: https://blog.csdn.net/linfanhehe/article/details/78769669

说明我们此次试验的Oracle数据库版本是Oracle 11g Express Edition,也即是我们平时所说的Oracle XE版本。此版本对于,我们学习来说已经是足够了。
在连接数据库只需要注意XE版本的实例就是XE,而企业版的默认实例是Orcl。

  1. navicat 选择其他-> 新建表空间
    在弹出的界面中,我们输入表空间的名中输入我们需要在oracle在物理磁盘存储的文件名,以及表空间的初始大小以及单位。在“路径”选项中填写该表空间所在的物理磁盘路径。“自动扩展”选项中选择“on”,即允许自己动扩展表空间。如果选择“off”,那么该表空间是固定大小的,不允许扩展的。
CREATE TABLESPACE "SHEPF"
 DATAFILE  'SHEPF.DBF' SIZE 100 M
  1. 表空间新建完毕后,我们就要来新建用户。点击面板上的“用户”选项,
    新建用户的方法有两种,一种是控制面板上的“新建用户”按钮,另外一种就是在空出右键,如上图。在点击“新建用户”后,弹出的界面,填入相关的信息。

其中我们需要注意的是,在“用户名”处填写的用户名字母一定是大写。请记住一定是要大写,如果是小写的话此用户是无法连接Oracle数据库的。具体为什么是这样,我想这个可能是此软件的BUG。在“默认表空间”处,我们选择理科前面我们新建的表空间。如果我们不选择的话,会使用系统默认的表空间USERS。

在“成员属于”中我们选择了“DBA”权限。其实对于一般的用户,我们只需赋予connect、resource、create view这几个权限即可。但是这里我们为了演示方便就选择“DBA”了。有关connect、resource、create view这几个权限的赋予,
以上操作完毕后,我们可以切换到“SQL预览”选项,查看相关的SQL语句,如下图:

CREATE USER "SHEPF" IDENTIFIED BY "shepf" DEFAULT TABLESPACE "SHEPF";

GRANT "DBA" TO "SHEPF";

ALTER USER "SHEPF" DEFAULT ROLE "DBA"
  1. 使用新账号密码连接测试
    注意 服务名/sid 还是选择 xe

五、参考

Linux 上 docker 安装 oracle-xe-11g 记录
参考URL: https://hacpai.com/article/1492914187689
docker安装wnameless/oracle-xe-11g并运行(手写超详细)
参考URL: https://www.cnblogs.com/Jin520304/p/7884441.html
docker安装oracle
参考URL: https://blog.csdn.net/wyfsxs/article/details/81869266
在docker中安装oracle并实现数据访问
参考URL: https://blog.csdn.net/Master_Shifu_/article/details/80790218
docker安装wnameless/oracle-xe-11g并运行(手写超详细)
参考URL: https://blog.csdn.net/zhichunqi/article/details/80656780

Oracle 数据库

一、常用基本概念

1. Oracle 用户(user)和模式(schema)的区别

Oracle 用户(user)和模式(schema)的区别
参考URL: https://www.cnblogs.com/dunjidan/p/4033573.html

概述:

(一)什么Oracle叫用户(user):
  A user is a name defined in the database that can connect to and access objects.

大意:Oracle用户是用连接数据库和访问数据库对象的。(用户是用来连接数据库访问数据库)。

(二)什么叫模式(schema):

A schema is a collection of database objects (used by a user.). Schema objects are the logical structures that directly refer to the database’s data.
大意:模式是数据库对象的集合。模式对象是数据库数据的逻辑结构。(把数据库对象用模式分开成不同的逻辑结构)。

(三)用户(user)与模式(schema)的区别:
  Schemas and users help database administrators manage database security.
大意:用户是用来连接数据库对象。而模式用是用创建管理对象的。(模式跟用户在oracle 是一对一的关系。)

详解:
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看 到schema名都为数据库用户名的原因。

而Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决 (Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省 shcema。

即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该 表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过 select * from emp; 其实,这sql语句的完整写法为 select * from scott.emp。

在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象 的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创 建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。

总结:原来Oracle是不支持创建自定义模式的,想要创建模式的话只能新建一个用户,每个用户会有一个默认的和用户名相同的模式

2. oracle大小写以及where查询条件

oracle字段不加双引号,则字段按大写查,加双引号,则按照你双引号里面大小写,里面是大写按大写里面是小写按小写。

对比mysql常用细节基础总结

  • 字段名和库名
    myql也可以使用双引号括起来字段名,但是mysql双引号括起来的字段名,依旧不区分大小写。oracle不支持字段和库名使用 `来包含。
    总结:mysql可以不用符号括,默认不区分大小写。oracle不用符号(双引号)括起来,按大写查。
    测试发现,mysql使用双引号括字段名的话,会有问题。如下sql,name字段使用了双引号,结果查出了所有数据,mysql应该是吧 "name"做字符串处理了,而不是当字段。
SELECT * FROM `t_sync_strategy` WHERE  "name" NOT LIKE 'wheretest' 

因此,mysql字段最好不要用双引号括起来。使用反引号 ` 或 不用符号括起来。

  • where的字符串
    oracle使用单引号,mysql单引号和双引号都行。
    总结:where条件字符串单引号两者通用。

二、Oracle 数据库常用操作语句

Oracle 数据库常用操作语句大全
参考URL: https://www.cnblogs.com/1312mn/p/7799732.html

1. Oracle笔记之创建模式及用户和角色

Oracle笔记之创建模式及用户和角色
参考URL: https://blog.csdn.net/q1406689423/article/details/89152587

oracle在创建数据库的时候要对应一个用户,数据库和用户一般一一对应,mysql和sql server 直接通过create databse “数据库名” 就可以直接创建数据库了。Oracle是不支持创建自定义模式的,想要创建模式的话只能新建一个用户,每个用户会有一个默认的和用户名相同的模式

Oracle默认有两个已经建好的用户:system和sys,system有创建其他用户的权限,通过它就可以创建别的用户了。

#创建用户
create user 用户名 identified by 口令[即密码];
#如创建一个用户名和口令均为she的用户
create user she identified by she;
#更改用户
alter user 用户名 identified by 口令[新口令];
#如修改用户口令为
alter user she identified by 123456;
#删除用户
drop user 用户名;
#如删除she
drop user she;

注意:oracle创建完用户后,该用户还不能登录,必须给用户设置权限,才可以登录。

分配权限
GRANT connect,dba to 用户名;

2. Oracle 11g the account is locked问题的解决方法

用户为什么被锁定,可能是下面几个原因
  1. 尝试多次登录未成功(可能密码不正确);
  2. 此用户被管理员手工锁定;
  3. 用户密码到期、未按时修改密码,等等。

Oracle 中给用户加锁与解锁的代码:
  SQL> alter user 用户名 account lock; (加锁)
  SQL> alter user 用户名 account unlock; (解锁)

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值