docker 安装orcale11数据库
初次安装流程
1.拉取 oracle 11g 镜像(有6g,要等较长的时间):
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
2.执行以下命令以创建并运行 Oracle 11g 容器(其中:30026为映射主机端口,8081为管理界面端口,helowin为Oracle数据库唯一实例ID,这些都是可以配置的):
docker run -d -p 30026:1521 -p 8081:8080 \
--name oracle_11g \
-e ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 \
-e ORACLE_SID=helowin \
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
3.查看容器是否启动:
docker ps -a|grep oracle_11g
4.进入容器:
docker exec -it oracle_11g bash
5.依次执行(单步执行):
# 1. 切换至root用户(默认是oracle用户),密码为helowin
su root
# 2. 创建软链接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
# 3.切换回oracle用户
su oracle
# 4. 登录sql plus
sqlplus / as sysdba
## 4.1 修改system用户密码为system
alter user system identified by system;
## 4.2 修改sys用户密码为system
alter user sys identified by system;
## 4.3 新增一个测试用户(用户名:test,密码:test123);
create user test identified by test123;
## 4.4 将dba权限给内部管理员账号和密码
grant connect,resource,dba to test;
## 4.5 修改密码策略规则为:密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
## 4.6 修改数据库最大连接数;
alter system set processes=1000 scope=spfile;
## 4.7 最后重启数据库;
shutdown immediate;
startup;
# 5.退出
exit
6.navicat验证,账号密码有3个:
• system/system
• sys/system
• test/test123
2.导出为镜像
1.docker images 找到oracle_11g的IMAGE ID
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle_11g test bc20dd23fb5a 3 hours ago 6.86GB
flannel/flannel v0.24.1 5309e5fd33b8 5 months ago 76MB
flannel/flannel-cni-plugin v1.2.0 a55d1bad692b 11 months ago 8.04MB
busybox latest beae173ccac6 2 years ago 1.24MB
httpd latest dabbfbe0c57b 2 years ago 144MB
prom/node-exporter latest 1dbe0e931976 2 years ago 20.9MB
fortio/fortio latest_release acf790649534 2 years ago 12.1MB
2.停止镜像
docker stop 7d7e07743b89
3.容器实例创建一个新的Docker镜像
docker commit 7d7e07743b89 oracle_11g:test
4.保存镜像文件为tar包(二选一)
当前目录
docker save -o oracle_11g.tar oracle_11g:test
指定目录(/var/tmp)
docker save -o /var/tmp/orcale_11g.tar oracle_11g:test
5.下载镜像并上传到linux服务器
6.docker load 命令来从tar文件重新加载镜像
docker load -i orcale_11g.tar
此时执行 docker images 命令可以看到被加载的镜像
docker images
使用镜像
1.执行以下命令以创建并运行 Oracle 11g 容器(其中:30026为映射主机端口,8081为管理界面端口,helowin为Oracle数据库唯一实例ID,这些都是可以配置的):
docker run -d -p 30026:1521 -p 8081:8080 \
--name oracle_11g \
-e ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 \
-e ORACLE_SID=helowin \
oracle_11g:test
注意最后一行有变化,使用的是load的镜像
3.查看容器是否启动:
docker ps -a|grep oracle_11g
4.进入容器:
在这里插入代码片
docker exec -it oracle_11g bash
5.依次执行(单步执行):
# 1. 切换至root用户(默认是oracle用户),密码为helowin
su root
# 2. 创建软链接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
# 3.切换回oracle用户
su oracle
# 4. 登录sql plus
sqlplus / as sysdba
## 4.1 修改system用户密码为system
alter user system identified by system;
## 4.2 修改sys用户密码为system
alter user sys identified by system;
## 4.3 新增一个测试用户(用户名:test,密码:test123);
create user test identified by test123;
## 4.4 将dba权限给内部管理员账号和密码
grant connect,resource,dba to test;
## 4.5 修改密码策略规则为:密码永不过期
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
## 4.6 修改数据库最大连接数;
alter system set processes=1000 scope=spfile;
## 4.7 最后重启数据库;
shutdown immediate;
startup;
# 5.退出
exit
6.navicat验证,账号密码有3个:
• system/system
• sys/system
• test/test123
4.1报错解决
SQL> alter user system identified by system;
SP2-0640: Not connected
解决方法: 执行命令 sqlplus / as sysdba
SQL> alter user system identified by system;
alter user system identified by system
*
ERROR at line 1:
ORA-01109: database not open
解决方法: 执行命令 ALTER DATABASE OPEN;
SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-01507: database not mounted
解决方法: 执行命令 ALTER DATABASE MOUNT;
SQL> ALTER DATABASE MOUNT;
ALTER DATABASE MOUNT
*
ERROR at line 1:
ORA-00214: control file
'/home/oracle/app/oracle/flash_recovery_area/helowin/control02.ctl' version 864
inconsistent with file '/home/oracle/app/oracle/oradata/helowin/control01.ctl'
version 841
解决方法:
cd /home/oracle/app/oracle/oradata/helowin
ls 可以看到control01.ctl
复制文件:cp control01.ctl /home/oracle/app/oracle/flash_recovery_area/helowin
进入目录:cd /home/oracle/app/oracle/flash_recovery_area/helowin
重命名control02.ctl:cp control02.ctl control02.ctl.bkk
重命名control01.ctl为control02.ctl:cp control01.ctl control02.ctl
然后登录sql plus
sqlplus / as sysdba
SQL> 后面为要执行的内容,依次执行下面的sql。
SQL> ALTER DATABASE MOUNT;
Database altered.
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> alter user system identified by system;
User altered.
SQL> alter user sys identified by system;
User altered.
SQL> create user test identified by test123;
User created.
SQL> grant connect,resource,dba to test;
Grant succeeded.
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.
SQL> alter system set processes=1000 scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2213776 bytes
Variable Size 402655344 bytes
Database Buffers 1191182336 bytes
Redo Buffers 7360512 bytes
Database mounted.
Database opened.
SQL> exit
可以使用上面的3个账号进行验证了。
原文地址:https://blog.csdn.net/u011067966/article/details/140380434
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!