docker安装oracle11g

拉取镜像

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

容器操作
创建容器

docker run --detach --publish=1521:1521 --name=helowin_oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g /bin/sh -c '/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart /home/oracle/app/oracle/product/11.2.0/dbhome_2 && tail -f /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log'

启动容器

docker start helowin_oracle11g

进入容器
此镜像oracle 用户无密码, su root 密码是 helowin

$ docker exec -it oracle11g /bin/bash

切换到root 用户

 $ su root

编辑profile配置oracle环境变量

$ vi /etc/profile

在文件最后添加

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
 
export ORACLE_SID=helowin
 
export PATH=$ORACLE_HOME/bin:$PATH

保存后刷新下环境

source /etc/profile

创建软连接,然后重复上一步在刷新下(可能不需要)

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

切换到oracle用户 su - oracle,需要注意的是中间需要加这个-否则软连接无效。

su - oracle

– 没有密码

sqlplus /nolog
conn /as sysdba

#修改数据库最大连接数据;

alter system set processes=1000 scope=spfile;

#修改密码规则策略为密码永不过期;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

导入dmp文件
创建临时表空间

 create temporary tablespace user_temp tempfile
 '\usr\oracle\oracledata\user_temp.dbf' size 50m 
 autoextend on next 50m maxsize 2048m extent management local; 

创建表空间

SQL> create tablespace user_data logging datafile 
'\usr\oracle\oracledata\user_data.dbf' size 50m
 autoextend on next 50m maxsize 2048m extent management local;

创建DIRECTORY

 create or replace directory dump_dir as '/usr/oracle/dump/dir'

创建用户 并分配表空间

– 创建用户前,建议先删除用户

drop user userA cascade;
create user userA identified by userA123 default tablespace user_data temporary tablespace other_temp;

– 授权连接

grant connect,resource to videa;

– 授权可以是dumpData

grant read,write on directory dump_dir  to videa;
grant create job to videa;
grant manage scheduler to videa;
grant create view to videa;

tips: 非必要操作

– 修改用户表空间

 alter user user default tablespace other_data temporary tablespace other_temp;

– 重命名表空间

 alter tablespace user_data rename to new_user_data; 

退出sqlplus,创建directory的目录

sql> exit;
$ su root

// 密码 helowin
$ mkdir /usr/oracle/dump/dir // 可能需要一步步创建
– 授权

$ chown -R oracle:oinstall /usr/oracle/dump/dir

导入dump文件
先检查dump文件oracel server端的编码
目前我docker 安装的oracle 所使用得编码为AL32UTF8, 客户的环境是ZHS16GBK;, 建议保持一致,可以通过select userenv(‘language’) from dual 进行查询

sqlplus / as sysdba
SQL>shutdown immediate
SQL>STARTUP MOUNT
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN

– 修改编码

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP

退出容器bash --------exit
复制dmp文件到容器中

拷出容器

docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径

拷入容器

docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

$ `docker cp you_dmp_file.dmp helowin_oracle11g: /usr/oracle/dump/dir`

拷贝完毕后,就可以进行导入了,首先进入容器shelldocker exec -it helo_oracle11g bash,然后切换oracle用户su - oracle切记别忘了这个-然后执行impdp命令

impdp videa/videasoft remap_schema=pmcp:videa  remap_tablespace=byis2:user_data EXCLUDE=TABLE_STATISTICS directory=dump_dir  dumpfile=你的文件

常见问题:
1、当执行修改密码的时候出现 : database not open

提示数据库没有打开,不急按如下操作

输入:alter database open;

注意了:这里也许还会提示 : ORA-01507: database not mounted

不急!继续!

=========== 解决方法===========

输入:alter database mount;

输入:alter database open;

2、使用pl/sql 进行连接 第7步是navicat连接的在最后

之前我们把端口映射到了1521上,所以我们需要进行配置 tnsnames.ora

几个朋友不知道ora文件在哪,所以添加了这一步

docker_oracle11 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.211.135)(PORT =1521))

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)

打开pl/sql 进行登录 :提示监听程序当前无法识别连接描述符中请求的服务

这时我们需要去看一下oracle 的 lsnrctl 服务
看到这两个了么,任选其一,修改 tnsnames.ora的 service_name=helowinXDB

docker_oracle11 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.211.135)(PORT =1521))

)

(CONNECT_DATA =

(SERVICE_NAME = helowinXDB)

)

)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值