docker安装Oracle 11g 数据库并创建数据库实例

docker安装Oracle 11g 数据库并创建数据库实例

拉取oracle镜像

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

创建并启动容器

创建临时容器

docker run --name oracle_temp -p 1500:1521 --privileged=true -d registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest

mkdir -p ~/oracle/oradata
docker cp oracle_temp:/home/oracle/app/oracle/oradata/ ~/oracle

chown -R 500:500 ~/oracle/oradata/ #修改挂载目录所属用户和用户组
docker rm -f oracle_temp  #删除临时容器

创建正式容器

docker run -d --name oracle_11g -p 1521:1521 --privileged=true  -v ~/oracle/oradata:/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest

参数说明:

–privileged 开启特权模式,可以设置容器的内核参数

–name 给容器取一个名称

-p 端口

-d 指定守护进程进行运行

–restart=always 总是要重启,跟着docker一起启动并一直会自动运行

进入docker的oracle11g 容器

docker exec -it oracle_11g bash

#删除oracle的机制文件
rm -rf /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
#拷贝
cp /home/oracle/app/oracle/oradata/helowin/control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl
#退出容器
exit
#重启oracle容器
docker restart oracle_11g

进入容器设置

docker exec -it oracle_11g bash
source ~/.bash_profile

#登录oracle并设置

#登录sqlplus
sqlplus / as sysdba
#修改system用户账号密码
alter user system identified by system;
#修改sys用户账号密码
alter user sys identified by system;
#修改密码规则策略为密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
#创建内部管理员账号密码都是test(可选)
create user test identified by test;
#将dba权限授权给内部管理员账号和密码(可选)
grant connect,resource,dba to test;
#修改数据库最大连接数据(可选)
alter system set processes=1000 scope=spfile;
#创建表空间(可选)
create tablespace test datafile '/home/oracle/app/oracle/oradata/helowin/test.dbf 'size 500m autoextend on next 10m maxsize unlimited;

创建数据库实例

  1. 进入oracle容器

docker exec -it oracle_11g bash
  1. 生效环境变量

source ~/.bash_profile
  1. 创建相关目录

#adump目录
mkdir -p /home/oracle/app/oracle/admin/orcl/adump
#数据文件及控制文件的存放目录
mkdir -p /home/oracle/app/oracle/oradata/orcl
  1. 创建参数文件

从init.ora文件中获得示例参数,参考了大侯的cat方法:
[oracle@49ccb67f6764 dbs]$ cd $ORACLE_HOME/dbs
[oracle@49ccb67f6764 dbs]$ cat init.ora |grep -v ^# |grep -v ^$ >initorcl.ora
修改参数文件中的信息

主要修改下列参数

1:db_name

2:memory_target内存区大小

3:替换<ORACLE_BASE>标签为当前的$ORACLE_BASE中的内容

4:快速恢复区路径设置(我在这里不设置所以注释掉了)

5:修改diagnostic_dest

6:修改dispatchers中的SERVICE为PRODXDB

7:添加控制文件的文件名

db_name='orcl'
memory_target=2000M
processes = 150
audit_file_dest='/home/oracle/app/oracle/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
#db_recovery_file_dest='<ORACLE_BASE>/flash_recovery_area'
#db_recovery_file_dest_size=2G
diagnostic_dest='/home/oracle/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = (/home/oracle/app/oracle/oradata/orcl/control01.ctl,/home/oracle/app/oracle/oradata/orcl/control02.ctl)
compatible ='11.2.0'
  1. 使用之前创建的参数文件启动数据库到nomount状态下

export ORACLE_SID=orcl

sqlplus / as sysdba

create spfile from pfile;

startup nomount;

遇到的问题解决办法

ORA-00845: MEMORY_TARGET not supported on this system
切换到root用户 密码是helowin
vi /etc/fstab(如果没有这个文件则新增)
修改或加入下面的内容
tmpfs /dev/shm tmpfs defaults,size=4G 0 0

mount -o remount,size=4G /dev/shm
df -h 查看修改的内容
 

6.创建数据库

将下面的内容写入到 /home/oracle/app/oracle/create_db.sql

create database orcl
USER SYS IDENTIFIED BY change_on_install
USER SYSTEM IDENTIFIED BY manager
LOGFILE
GROUP 1 ('/home/oracle/app/oracle/oradata/orcl/redo01.dbf') SIZE 100M,
GROUP 2 ('/home/oracle/app/oracle/oradata/orcl/redo02.dbf') SIZE 100M,
GROUP 3 ('/home/oracle/app/oracle/oradata/orcl/redo03.dbf') SIZE 100M
maxlogfiles 15
maxlogmembers 5
maxdatafiles 100
maxinstances 1
datafile '/home/oracle/app/oracle/oradata/orcl/system01.dbf' size 100m reuse
sysaux datafile '/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf' size 100m
default tablespace users  datafile '/home/oracle/app/oracle/oradata/orcl/users01.dbf' size 100m
undo tablespace undotbs1  datafile '/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf' size 100m
default temporary tablespace temp  tempfile '/home/oracle/app/oracle/oradata/orcl/temp01.dbf'  size 100m reuse
character set al32utf8
;

手动创建数据库及创建过程遇到的错误(踩到的坑)-腾讯云开发者社区-腾讯云

执行建库脚本,需要在nomount下执行

@/home/oracle/app/oracle/create_db.sql;

修改数据文件自动扩展

alter database datafile 1 autoextend on;

alter database datafile 2 autoextend on;

alter database datafile 3 autoextend on;

alter database datafile 4 autoextend on;

alter database tempfile 1 autoextend on;

查询数据库状态并确认创建成功。

conn / as sysdba

select instance_name,status from v$instance;

select a.name tablespace_name,b.name tablespace_file from v$tablespace a,v$datafile b where a.ts#=b.ts#;

执行建立数据字典脚本

conn / as sysdba

@?/rdbms/admin/catalog.sql

@?/rdbms/admin/catproc.sql

linux 启动 Oracle 实例

参考资料:linux启动指定数据库实例的步骤 - 百度文库

启动数据库实例,分为两步:第一步,启动监听;第二步,启动数据库实例。

一、如何启动数据库实例

1.进入到sqlplus启动实例

--“切换到oracle用户”

su - oracle

--“打开监听”

lsnrctl start

--“进入到sqlplus”

sqlplus /nolog

--“连接到sysdba”

conn /as sysdba

--“启动数据库实例”

startup

--“关闭数据库实例”

shutdown immediate

--“关闭监听”

lsnrctl stop

2.用dbstart和dbshut启动和关闭数据库实例

先启动监听

lsnrctl start

启动实例

dbstart

使用dbstart命令启动数据库比较方便,但是在linux上安装好oracle之后,第一次使用dbstart命令可能会报如下错误:

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener

Usage: /u01/app/oracle/oracle/product/10.2.0/db_1/bin/dbstart ORACLE_HOME

原因:

dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题,分别打开两个文件找到:用vi编辑dbstart,ORACLE_HOME_LISTNER=$1,修改为

ORACLE_HOME_LISTNER=$ORACLE_HOME

然后保存退出,此时再运行dbstart,已经不报错了,但是没有任何反应,ps一下进程,没有oracle的进程,说明oracle实例没有正常启动。

此时的原因是在/etc/oratab的设置问题,我们vi一下,发现

zgz:/home/oracle/product/10g:N

最后设置的是"N"(我的环境中只有一个实例,因此只有一行配置语句),我们需要把“N”修改为“Y”。

以上的工作做好之后,dbstart就可以正常使用了:

--“启动监听”

lsnrctl start

--“启动数据库实例”

dbstart

--“关闭数据库实例”

dbshut

--“关闭监听”

lsnrctl stop

二、如何使数据库实例和linux系统一起启动

在/etc/rc.d/rc.local中加入如下语句即可实现同系统启动实例:

su - oracle -c "lsnrctl start"

su - oracle -c "dbstar

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用Docker来部署Oracle数据库。以下是步骤和方法: 1. 首先,您需要下载Oracle数据库Docker镜像。根据引用中提到的命令,您可以使用以下命令从阿里云的镜像仓库中获取Oracle XE 11g镜像: ``` docker pull registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g ``` 2. 下载镜像后,您可以使用以下命令在Docker中运行Oracle数据库容器: ``` docker run -d -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true --name oracle -v /dockerOracleData:/dockerOracleData registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g ``` 这个命令将在后台运行一个名为"oracle"的容器,并将Oracle数据库的SSH端口映射到主机的49160端口,将Oracle数据库的监听端口映射到主机的49161端口。同时,它还设置了允许远程连接的环境变量。 3. 在容器运行后,您可以使用SSH连接到容器并访问Oracle数据库的命令行。您可以使用如下命令连接到容器: ``` ssh -p 49160 root@localhost ``` 登录密码默认为"root"。 4. 连接到容器后,您可以使用Oracle数据库的命令行工具(如SQL*Plus)来管理和查询数据库。您可以使用如下命令连接到数据库: ``` sqlplus sys/oracle as sysdba ``` 这将使用sys用户登录到数据库,并要求您输入sys用户的密码。 5. 如果您需要在外部连接到Oracle数据库,您可以使用主机的IP地址和映射的端口来连接。默认情况下,容器的1521端口映射到主机的49161端口。您可以使用以下连接字符串来连接数据库: ``` hostname:port:SID ``` 其中,hostname是主机的IP地址,port是映射的端口,SID是数据库的系统标识符。默认情况下,Oracle XE 11g的SID是XE。 请注意,以上步骤和方法仅适用于Docker部署Oracle数据库。更多详细信息和其他配置选项,请参考引用中提供的链接和引用中提供的默认用户名和密码。 参考资料: xe 版Oracle默认的数据库实例是xe(数据库名),用户,密码-------sys/oracle system/oracle 下载慢的话:docker pull registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g docker run -d -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true --name oracle -v /dockerOracleData:/dockerOracleData registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g https://blog.csdn.net/edutech_wang/article/details/120176447 https://www.cnblogs.com/MrXiaoAndDong/p/docker_oracle.html

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值