Docker安装oralce

Docker安装oralce

1.部署Oracle 11G企业版环境(11.2.0.4)

# 1.前提是安装好docker# 2.拉取镜像(该镜像是我修改过的,可以直接使用)
[root@api-new local]# docker pull xingyuyu123/oracle:oracle11204
oracle11204: Pulling from xingyuyu123/oracle
5dd797628260: Pull complete 
ea1a739ab78d: Pull complete 
593d06e585fc: Pull complete 
12ad75124c46: Pull complete 
edfb37612170: Pull complete 
ad7a03f14bef: Pull complete 
Digest: sha256:a597bdb0523ffb4cf3cee677269f8dba5555d38441f1e819fed06a1c845c0c7e
Status: Downloaded newer image for xingyuyu123/oracle:oracle11204
docker.io/xingyuyu123/oracle:oracle11204
[root@api-new local]#[root@api-new local]# docker images
REPOSITORY           TAG           IMAGE ID       CREATED          SIZE
xingyuyu123/oracle   oracle11204   1a15bc19ad81   42 minutes ago   13.5GB
[root@api-new local]# [root@api-new local]# docker run -itd --name oracle11204 -h oracle11204 --privileged=true -p 1521:1521 -p 222:22 -p 21158:1158 xingyuyu123/oracle:oracle11204 init
697f19ec9a768211a85afd958ab0a8b3fd7ea8c6aef860979f555c7e2f3ebbdc
[root@api-new local]#[root@api-new local]# docker ps
CONTAINER ID   IMAGE                            COMMAND   CREATED          STATUS          PORTS                                                                                                                         NAMES
697f19ec9a76   xingyuyu123/oracle:oracle11204   "init"    34 seconds ago   Up 31 seconds   0.0.0.0:1521->1521/tcp, :::1521->1521/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp, 0.0.0.0:21158->1158/tcp, :::21158->1158/tcp   oracle11204
[root@api-new local]##服务名:orcl或者JEM11GR2
#sys密码:sys/system
#root用户密码:root
#oracle用户密码:oracle

1.1 拉取镜像

# 1.下面是拉取一个镜像该如何配置成上面那样的
docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora11g11204
# 2.重新打tag
docker tag registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora11g11204 jemora11g:11204

1.2 创建容器

#创建容器
docker run -itd --name jemora11204 -h jemora11204 \
--privileged=true -p 21521:1521 -p 222:22  -p 21158:1158 \
jemora11g:11204 init
#这里要说明的是:这里给容器起的名字就是jemora11204,容器里面listener.ora和tnsnames.ora文件里面的host也是这个,如果不一致的话将报错,无法启动listener

1.3 进入容器

#进入容器
docker exec -it jemora11204 bash

1.4 启动数据库和监听

[root@jemora11204 /]# su - oracle
[oracle@jemora11204 ~]$ lsnrctl start
[oracle@jemora11204 ~]$ sqlplus / as sysdba
SYS@JEM11G2> startup
SYS@JEM11G2> select * from v$version;

1.5 外部连接容器内的数据库

sqlplus sys/jem@192.168.1.54:21521/JEM11GR2 AS SYSDBA
注意:此处访问宿主机端口为21521,容器内部是1521,端口映射,系统管理员密码为jem

1.6 修改配置


docker run -itd --name oracle11204 -h oracle11204 --privileged=true -p 1521:1521 -p 222:22 -p 21158:1158 xingyuyu123/oracle:oracle11204 init
#那么现在的容器名称就是oracle11204,但是配置文件不是需要修改[root@api-new local]# docker ps
CONTAINER ID   IMAGE                            COMMAND   CREATED          STATUS          PORTS                                                                                                                         NAMES
697f19ec9a76   xingyuyu123/oracle:oracle11204   "init"    21 minutes ago   Up 21 minutes   0.0.0.0:1521->1521/tcp, :::1521->1521/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp, 0.0.0.0:21158->1158/tcp, :::21158->1158/tcp   oracle11204
[root@api-new local]# #进入容器
docker exec -it oracle11204 bash# 修改root以及oralce口令
echo root | passwd root --stdin
echo oracle | passwd oracle --stdin# 修改主机名
su - oracle#修改listener.ora(将HOST后面修改为容器名称)
vim /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/listener.ora
LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11204)(PORT = 1521))))ADR_BASE_LISTENER = /u01/app/oracle#修改tnsnames.ora(将HOST后面修改为容器名称),这里的orcl是已经修改过的服务名
vim /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/tnsnames.ora
orcl =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11204)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)#(SERVICE_NAME = JEM11GR2)(SERVICE_NAME = orcl)))#修改服务名
sqlplus / as sysdba或者sqlplus sys/jem as sysdba
#查看当前服务名
show parameter service_name
#修改服务名
alter system set service_names='orcl' scope=both;
#修改tnsnames.ora(将HOST后面修改为容器名称),这里的orcl是已经修改过的服务名
vim /u01/app/oracle/product/11.2.0.4/dbhome_1/network/admin/tnsnames.ora
orcl =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11204)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)#(SERVICE_NAME = JEM11GR2)(SERVICE_NAME = orcl)))
#修改两处#修改sys密码
ALTER USER sys IDENTIFIED BY system;
#验证密码是否修改成功
exit
sqlplus sys/new_password as sysdba

1.7 数据库密码过期的方法

select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
#显示结果是密码的生命周期是180天。
若要将其设置为生命周期无限制可以执行下面语句:
alter profile default  limit password_life_time unlimited;
commit;
#进行以上步骤之后需要改变密码,否则还会出现password has expired异常
#改变密码的命令
alter user XXXUSER identified by yourPassword;  
#如果账号被锁住,则需要解锁命令
alter user XXXUSER identified by oracle account unlock;  

2.部署Oracle 12CR2环境(12.2.0.1)

docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201#docker tag  registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201 oracle:oracle12201docker tag registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201 jemora12c:12201#docker run -itd --name oracle12201 -h oracle12201 --privileged=true -p 1521:1521 -p 422:22 -p 15500:5500 -p 15501:5501 oracle:oracle12201 initdocker run -itd --name jemora1221 -h jemora1221 --privileged=true -p 41521:1521 -p 422:22 -p 15500:5500 -p 15501:5501 jemora12c:12201 initdocker exec -it jemora1221 bashsu - oraclelsnrctl startsqlplus / as sysdbastartupselect * from v$version;默认服务名:jem sys/jem	
# 1.前提是安装好docker# 2.拉取镜像(该镜像是我修改过的,可以直接使用)
[root@api-new local]# docker pull xingyuyu123/oracle:oracle12201
oracle11204: Pulling from xingyuyu123/oracle
5dd797628260: Pull complete 
ea1a739ab78d: Pull complete 
593d06e585fc: Pull complete 
12ad75124c46: Pull complete 
edfb37612170: Pull complete 
ad7a03f14bef: Pull complete 
Digest: sha256:a597bdb0523ffb4cf3cee677269f8dba5555d38441f1e819fed06a1c845c0c7e
Status: Downloaded newer image for xingyuyu123/oracle:oracle12201
docker.io/xingyuyu123/oracle:oracle12201
[root@api-new local]#[root@api-new local]# docker images[root@api-new local]# docker run -itd --name oracle12201 -h oracle12201 --privileged=true -p 1522:1521 -p 222:22 -p 21158:1158 xingyuyu123/oracle:oracle12201 init
697f19ec9a768211a85afd958ab0a8b3fd7ea8c6aef860979f555c7e2f3ebbdc
[root@api-new local]#[root@api-new local]# docker ps#服务名:orcl或者jem
#sys密码:sys/system
#root用户密码:root
#oracle用户密码:oracle# Tomcat配置连接
-- Multitenant Environment:多租户环境
-- CDB(Container Database):数据库容器
-- PDB(Pluggable Database):可插拔数据库
-- COMMON USERS(普通用户):经常建立在CDB层,用户名以C##或c##开头;
--  LOCAL USERS(本地用户):仅建立在PDB层,建立的时候得指定CONTAINER。
SELECT * FROM v$version;
select sys_context ('USERENV', 'CON_NAME') from dual;
-- Oracle 12当中指定容器才能创建用户;查看容器
select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
-- 打开pdb
alter pluggable database JEMPDB open;
-- 查看容器
select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
-- 切换容器
alter session set container=JEMPDB;
-- 查看当前使用容器
select sys_context ('USERENV', 'CON_NAME') from dual; 
-- 创建用户
create user jkzl IDENTIFIED BY 123456;
SELECT username FROM dba_users;ALTER SESSION SET container=JEMPDB;
SELECT username FROM dba_users;select INSTANCE_NAME from v$instance;#Oracle12连接方式<dataSource><property name="driverClassName" value="oracle.jdbc.OracleDriver"></property><property name="url" value="jdbc:oracle:thin:@192.168.124.224:1522/JEMPDB"></property><property name="username" value="JKZL"></property><property name="password" value="123456"></property><property name="initSize" value="50"></property> <!--初始化连接池个数--><property name="maxIdle" value="50"></property> <!--最大个数--><property name="minIdle" value="20"></property> <!--最小个数--><property name="maxWait" value="6000"></property> <!--连接超时时间--></dataSource>#Oracle11连接方式<dataSource><property name="driverClassName" value="oracle.jdbc.OracleDriver"></property><property name="url" value="jdbc:oracle:thin:@192.168.124.224:1521:JEM11GR2"></property><property name="username" value="JKZL"></property><property name="password" value="123456"></property><property name="initSize" value="50"></property> <!--初始化连接池个数--><property name="maxIdle" value="50"></property> <!--最大个数--><property name="minIdle" value="20"></property> <!--最小个数--><property name="maxWait" value="6000"></property> <!--连接超时时间--></dataSource>#oracle11的服务名或者sid是JEM11GR2#oracle12的服务名或者sid是jem,容器的名是JEMPDB,必须先在容器当中创建本地用户才行,否则使用普通用户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/10489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux软件基础知识】- 文件的概念:Linux 中的文件

Linux 中的文件 在 Linux 中,文件是存储在存储设备(例如硬盘驱动器或固态驱动器)上的数据项的集合。 文件被组织为字节序列,并由文件系统中的唯一名称来标识。 以下是 Linux 中文件的一些关键特征: 字节序列:Linux 中的文件被视为字节序列。 每个字节可以表示一个字符…

付费文章合集第二期

☞☞付费文章合集第一期 感谢大家一年来的陪伴与支持&#xff01; 对于感兴趣的文章点标题能跳转原文阅读啦~~ 21、Matlab信号处理——基于LSB和DCB音频水印嵌入提取算法 22、CV小目标识别——AITOD数据集&#xff08;已处理&#xff09; 23、Matlab信号发生器——三角波、…

【Redis】Redis 事务

Redis 的事务的本质是一组命令的批处理。这组命令在执行过程中会被顺序地、一次性 全部执行完毕&#xff0c;只要没有出现语法错误&#xff0c;这组命令在执行期间不会被中断 1.事务特性 仅保证了数据的一致性 这组命令中的某些命令的执行失败不会影响其它命令的执行&#xff…

【JVM】ASM开发

认识ASM ASM是一个Java字节码操纵框架&#xff0c;它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件&#xff0c;也可以在类被加载入虚拟机之前动态改变类行为&#xff0c;ASM从类文件中读入信息后能够改变类行为&#xff0c;分析类信息&#xff…

高斯数据库创建函数的语法

CREATE FUNCTION 语法格式 •兼容PostgreSQL风格的创建自定义函数语法。 CREATE [ OR REPLACE ] FUNCTION function_name ( [ { argname [ argmode ] argtype [ { DEFAULT | : | } expression ]} [, …] ] ) [ RETURNS rettype [ DETERMINISTIC ] | RETURNS TABLE ( { column_…

课程设计 大学生竞赛系统

课程设计 大学生竞赛系统 wx:help-assignment 学生用户&#xff1a; wx:help-assignment 首页&#xff1a;推荐一些竞赛&#xff0c;热门活动等&#xff1b; 广场&#xff1a;用户可以通过广场来发表动态&#xff0c;同时也可以查看别人发布的动态&#xff0c;并且可以 关注…

再升一位!中国平安位列Brand Finance中国品牌500强第八位

近日&#xff0c;国际知名品牌价值评级机构Brand Finance发布“2024年中国品牌价值500强”榜单&#xff0c;中国平安位列国内品牌第八位&#xff0c;较2023年上升一位。长期以来&#xff0c;平安致力于成为客户身边专业的金融顾问、家庭医生和养老管家&#xff0c;为客户提供省…

解决常见的Android问题

常见问题&#xff1a; 1、查杀&#xff1a; 查杀一般分为两个方向一种是内存不足的查杀&#xff0c;一种的是因为温度限频查杀&#xff0c;统称为内存查杀&#xff0c;两个问题的分析思路不同 1、内存不足查杀&#xff1a; 主要是因为当用户出现后台运行多个APP或者是相机等…

VO,PO,DTO

DTO&#xff08;Data Transfer Object&#xff09;数据传输对象 前后端之间的传输时使用 比如前端登录请求的请求参数有username&#xff0c;password&#xff0c;但后端pojo类user有username&#xff0c;password&#xff0c;birthday&#xff0c;gender时&#xff0c;可以创…

汇昌联信科技:拼多多可以做无货源吗?

在探讨电商平台的经营模式时&#xff0c;"无货源"这一概念经常被提及。它指的是卖家在不需要事先囤积大量商品的情况下&#xff0c;通过与供应商的合作&#xff0c;直接将订单信息传递给他们&#xff0c;由供应商完成发货的过程。针对“拼多多可以做无货源吗?”这一…

从零开始学习MySQL

# 第一步&#xff1a;下载MySQL安装包 访问MySQL官方网站的[下载页面](https://dev.mysql.com/downloads/mysql/)&#xff0c;根据你的操作系统&#xff08;Windows、macOS、Linux等&#xff09;选择合适的MySQL Community Server版本进行下载。对于Windows用户&#xff0c;可以…

内网渗透之如何批量PTH获取主机权限?

—— 利用CrakMapExec工具进行全网段批量PTH CrackMapExec&#xff08;CME&#xff09;是一款后渗透利用工具&#xff0c;可帮助自动化大型活动目录(AD)网络安全评估任务。其缔造者byt3bl33d3r称&#xff0c;该工具的生存概念是&#xff0c;“利用AD内置功能/协议达成其功能&…

【练习2】

1.汽水瓶 ps:注意涉及多个输入&#xff0c;我就说怎么老不对&#xff0c;无语~ #include <cmath> #include <iostream> using namespace std;int main() {int n;int num,flag,kp,temp;while (cin>>n) {flag1;num0;temp0;kpn;while (flag1) {if(kp<2){if(…

2024-AIDD-人工智能药物设计设计思路-Artificial Intelligence for Drug Design

2024-AIDD-人工智能药物设计设计思路-Artificial Intelligence for Drug Design 在药物设计中&#xff0c;特别是针对特定靶点的药物设计&#xff08;AIDD&#xff0c;Artificial Intelligence for Drug Design&#xff09;&#xff0c;您可以遵循以下步骤&#xff1a; 靶点选…

什么股指期货滚IC的意思?

股指期货滚IC是一种投资策略&#xff0c;主要是指投资者在操作中证500股指期货&#xff08;IC&#xff09;时&#xff0c;利用股指期货相对于现货价格的贴水&#xff08;即期货价格低于现货价格&#xff09;来进行套利。 下面股指君将通过几个关键点来详细解释这个概念&#x…

算法学习笔记(博弈论中的SG函数)

定义 S G SG SG函数: 对于状态 x x x和它的所有 k k k个后继状态 y 1 , y 2 , . . . , y k y_1, y_2,...,y_k y1​,y2​,...,yk​&#xff1a; S G ( x ) m e x { S G ( y 1 ) , S G ( y 2 ) , . . . , S G ( y k ) } SG(x) mex\{SG(y_1), SG(y_2), ..., SG(y_k)\} SG(x)mex…

Android中gradle.properties 和 gradle-wrapper.properties 作用

我们更深入地了解这两个文件的作用和它们可以包含的一些常见配置。 gradle.properties gradle.properties文件是一个标准的Java属性文件&#xff0c;它允许你为Gradle构建配置全局属性。这些属性可以在项目的任何地方使用&#xff0c;包括项目的子项目。以下是一些常见的配置…

2024数维杯B题详细思路代码数学建模高质量保姆级

2024年第九届数维杯大学生数学建模挑战赛题目 B 题 生物质和煤共热解问题的研究 &#xff08;1&#xff09;基于附件一&#xff0c;请分析正己烷不溶物(INS)对热解产率&#xff08;主要 考虑焦油产率、水产率、焦渣产率&#xff09;是否产生显著影响&#xff1f;并利用图像 加…

工业机器人应用实践之玻璃涂胶(篇二)

工业机器人 接上篇文章&#xff0c;浅谈一下实践应用&#xff0c;具体以玻璃涂胶为例&#xff1a; 了解工业机器人在玻璃涂胶领域的应用认识工具坐标系的标定方法掌握计时指令的应用掌握人机交互指令的应用掌握等待类指令用法&#xff08;WaitDI、WaitUnitl 等&#xff09;认…

02 Linux编程-文件

1、文件描述符 对于内核而言&#xff0c;所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或者创建一个新文件时&#xff0c;内核向进程返回一个文件描述符。当读写一个文件时&#xff0c;用open和creat返回的文件描述符标识该文件&#xff0c;将…