Linux服务器上部署Oracle

举报
tea_year 发表于 2025/08/30 15:16:56 2025/08/30
【摘要】 简介Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。借助docker,安装oracle不再困难,只需要几步即可。需要注意,在参考本文章之前,需要具备操作docker的基础,怎么使用docker安装2.1、安装oracle 11g镜像到docker2.1.1、搜索符合条件的镜像docker search oracle NA...

简介

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。

借助docker,安装oracle不再困难,只需要几步即可。

需要注意,在参考本文章之前,需要具备操作docker的基础,怎么使用docker

安装

2.1、安装oracle 11g镜像到docker

2.1.1、搜索符合条件的镜像

docker search oracle 
NAME                                  DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
oraclelinux                           Official Docker builds of Oracle Linux.         573                 [OK]
jaspeen/oracle-11g                    Docker image for Oracle 11g database            99                                      [OK]
oracle/openjdk                        Docker images containing OpenJDK Oracle Linux   55                                      [OK]
……

三、拉取Oracle 10G 镜像


root@gejie-10 ~]# docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora10g_10205
ora10g_10205: Pulling from techerwang/oracle
a7f33acb2692: Pull complete 
1746aa4234db: Pull complete 
502d798e11b1: Pull complete 
Digest: sha256:f1a6a03c8c5bfa729f8d81145240bd27b3f47f9e971cb9f326ff9601fbb7c461
Status: Downloaded newer image for registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora10g_10205
registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora10g_10205

oracle镜像.png


四、重新tag镜像

[root@gejie-10 ~]# docker tag registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora10g_10205 oracle10g:10205


五、启动Oracle容器

[root@gejie-10 ~]# docker run -itd --name oracle10205 -h jemora10g -p 31521:1521 --privileged=true --restart=always oracle10g:10205 init

命令的解释:

  • docker run 启动容器的命令
  • privileged 给这个容器特权,安装oracle可能需要操作需要root权限的文件或目录
  • name 给这个容器名一个名字
  • p 映射端口
  • v 挂在文件到容器指定目录 (d:/oracleinstall/database 对应容器 /install/database)


六、进入容器


1.引入库
代码如下(示例):

[root@gejie-10 ~]# docker exec -it oracle10205 bash


七、oracle相关配置

1.启动oracle数据库


代码如下(示例):

docker exec -it oracle10205 bash
su - oracle
lsnrctl start

root@gejie-10 ~]# docker exec -it oracle10205 bash
[root@jemora10g /]# su - oracle
-bash: iexport: command not found
[oracle@jemora10g ~]$ lsnrctl start

LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 11-SEP-2024 15:11:45

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/10.2.0.1/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Log messages written to /u01/app/oracle/product/10.2.0.1/dbhome_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jemora10g)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Start Date                11-SEP-2024 15:11:45
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/product/10.2.0.1/dbhome_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jemora10g)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@jemora10g ~]$ 


2.连接oracle


代码如下(示例):

[oracle@jemora10g ~]$ sql
SYS@jem10g> startup

The listener supports no services
The command completed successfully
[oracle@jemora10g ~]$ sql

SQL*Plus: Release 10.2.0.5.0 - Production on Wed Sep 11 15:18:07 2024

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Connected to an idle instance.

SYS@jem10g> startup
ORACLE instance started.

Total System Global Area 1157627904 bytes
Fixed Size            2095768 bytes
Variable Size          301991272 bytes
Database Buffers      838860800 bytes
Redo Buffers           14680064 bytes
Database mounted.
Database opened.
SYS@jem10g> 

3.启动 Oracle 实例(分 “nomount→mount→open” 三阶段)

 sysdba 身份登录 SQL*Plus(此时实例为 “idle” 状态):

sqlplus / as sysdba

启动实例到 nomount 状态(加载参数文件,初始化实例):

startup nomount;

若提示 ORA-27101: shared memory realm does not exist:检查 ORACLE_SID 是否正确,或参数文件(initjem10g.ora 或 spfilejem10g.ora)是否存在于 $ORACLE_HOME/dbs 目录。
若提示权限错误(如 “无法创建共享内存”):确认 oracle 用户对 $ORACLE_HOME 及数据文件目录有读写权限。
启动实例到 mount 状态(加载控制文件,关联数据库):

alter database mount;

启动实例到 open 状态(打开数据文件和日志文件,数据库可用):

alter database open;

若提示 ORA-01157: cannot identify/lock data file 或 ORA-01110:数据文件缺失或损坏,需恢复(10g 需结合 RMAN 或备份文件,若为测试环境可忽略,生产环境需谨慎)。
若成功:SQL*Plus 会提示 Database altered.,此时数据库已正常运行。

验证状态并重新执行授权命令,确认数据库状态(OPEN 表示正常):

select status from v$instance; -- 输出“OPEN”即正确

重新执行授权命令(此时不会报错):

ORACLE_HOME:数据库的实例启动所需要的所有的程序和相关的文件位置

ORACLE_SID:用以指定默认的登录数据库。oracle_sid则是操作系统的环境变量,用户和操作系统交互,也就是说要得到实例名,必须使用sid。在数据库安装结束时 ,oracle_sid已经是一个确定的字符串了,其值必须与数据库实例名相同。

八、创建用户并授权

代码如下(示例):

SYS@jem10g> create user test identified by “12345H”;
SYS@jem10g> grant connect,resource,dba to test;

SYS@jem10g> create user test identified by "12345H";

User created.

SYS@jem10g> grant connect,resource,dba to test;

Grant succeeded.


九、连接到ORACLE

连接参数:

IP:112.33.213.30
端口:31512
服务名:jem10g
用户名:test
密码:12345H


OracleDBConsoleorcl,OracleMTSRecoveryService,OracleOraDb11g_home1TNSListener,OracleServiceORCL是默认自动启动的,OracleJobSchedulerORCL是默认自动禁止的,其余的默认为手动操作。假设您的全局数据库名为orcl,则您的Oracle服务应该和上面的一样。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。