当前位置: 代码网 > 服务器>服务器>云虚拟主机 > Docker安装配置Oracle详细步骤记录(以作持久化处理)

Docker安装配置Oracle详细步骤记录(以作持久化处理)

2024年05月14日 云虚拟主机 我要评论
docker安装oracle1,拉取oracle镜像,拉取成功后查看 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

docker安装oracle

1,拉取oracle镜像,拉取成功后查看

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

2,创建容器,实现数据持久化

#启动临时容器获取初始化数据
docker run -d --name test --restart unless-stopped \
-p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
mkdir -p /home/data/oracle/
docker cp test:/home/oracle/app/oracle/oradata/ /home/data/oracle/
cd /home/data/oracle/oradata/
#把文件赋权给容器内oracle用户
chown -r 500.500 helowin 
#启动容器
docker rm -f test
docker run -d --name oracle11g --restart unless-stopped \
-v /home/data/oracle/oradata/helowin:/home/oracle/app/oracle/oradata/helowin \
-p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

3,进入镜像进行配置

#以root用户进入容器
docker exec -it -u root 《自己的容器id或者名称》 bash

4,切换root用户后修改配置文件,root密码为helowin

vi /etc/profile

内部新增如下配置信息:

# oracle home目录
export oracle_home=/home/oracle/app/oracle/prouct/11.2.0/dbhome_2   
# oracle 服务名或者 sid名,要记住这个名字helowin,它是naivcat或者dbeaver登录的重要选项
export oracle_sid=helowin     
# oracle环境变量
export path=$oracle_home/bin:$path
# 字符集和中文乱码问题
export nls_lang="simplified chinese_china.zhs16gbk"

刷新环境变量

source /etc/profile

5,创建软连接

ln -s $oracle_home/bin/sqlplus /usr/bin

6,切换oracle用户后,登录sqlplus并修改sys、system用户密码

su - oracle
sqlplus /nolog  
conn /as sysdba  
alter user system identified by system;--修改system用户账号密码;
alter user sys identified by system;--修改sys用户账号密码;
create user test identified by test; -- 创建内部管理员账号密码;
grant connect,resource,dba to test; --将dba权限授权给内部管理员账号和密码;
alter profile default limit password_life_time unlimited; --修改密码规则策略为密码永不过期;
alter system set processes=1000 scope=spfile; --修改数据库最大连接数据;

如果报错:

删除新生成的版本控制文件,将数据卷中的版本控制文件复制为新生成的版本控制文件,操作时要保证容器内用户是oracle用户而非root,否则报控制文件出错。

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
sqlplus / as sysdba          # 以 dba 身份连接 oracle 数据库
shutdown immediate           # 关闭数据库实例(这里会报错,不用管)
startup    

7,修改以上信息后重启数据库

sqlplus / as sysdba
shutdown immediate; --关闭数据库

# 调整字符集
# 启动数据库mount,
startup mount 
alter system enable restricted session;
alter system set job_queue_processes=0; 
alter system set aq_tm_processes=0; 
# 启动数据库
alter database open;
# 修改数据库
alter database character set zhs16gbk; 
alter database character set internal_use zhs16gbk; 

# 重新启动数据库
shutdown immediate; 
startup; --启动数据库

# 查询字符集
select userenv ('language')  from dual;
exit:退出软链接

8,测试链接

如果此时监听报错,则进行第九步

9,设置oracle支持外部连接访问

1),一共需要配置两个文件,一个是监听器listener.ora一个是tnsnames.ora

find / | grep /network/admin #查找属于自己的oracle监听配置文件目录
vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora  #此处应是上一步查询出来的地址
vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora  #同上

再修改文件之前,输入hostname,回车后会显示当前的主机名

listener.ora:

# listener.ora network configuration file: /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora
# generated by oracle configuration tools.

listener =
  (description_list =
    (description =
      (address = (protocol = ipc)(key = extproc1521))
      (address = (protocol = tcp)(host = localhost)(port = 1521))  # localhost:1521
    )
  )
adr_base_listener = /home/oracle/app/oracle

注意此处的localhost要用之前查询的hostname替换

tnsnames.ora同理:

# tnsnames.ora network configuration file: /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora
# generated by oracle configuration tools.

listener_helowin =
  (address = (protocol = tcp)(host = loaclhost)(port = 1521))

helowin =
  (description =
    (address = (protocol = tcp)(host = localhost)(port = 1521))
    (connect_data =
      (server = dedicated)
      (service_name = helowin)  
    )
  )

2),每次更改oracle的监听配置文件后都需要重新刷新配置90%的连接异常都是来源于监听配置问题

exit#退出容器
systemctl restart docker.service#重启服务
docker start 《自己的容器id/名》#重启容器
docker exec -it -u root 《自己的容器id/名称》 bash#重新进入容器
su - oracle#切换oracle账户
sqlplus / as sysdba #登入数据库
sql>alter system register;#强制重新注册实例
sql>quit#退出数据库
lsnrctl reload#在容器内重启监听
lsnrctl status#查看监听服务状态

总结 

到此这篇关于docker安装配置oracle的文章就介绍到这了,更多相关docker安装配置oracle内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com