背景

在Linux中安装oracle非常麻烦,相信每个人也会遇到各种坑。为了一次装好,也方便将来直接可以导出镜像在各平台移植使用,所以选择用docker安装 Oracle。

使用官方镜像下载速度非常慢,因此,我们可以使用阿里镜像。

拉取镜像

  1. 拉取oracle_11g镜像

拉取oracle镜像(oracle 11.0.2 64bit 企业版 实例名: helowin)

Oracle主要在Docker基础上安装,安装环境注意空间和内存,Oracle是一个非常庞大的一个软件,

最低配置要2G以上,硬盘要30G以上更好,由于镜像都有好6.8个G。

登录阿里容器镜像服务平台,找到镜像中心-->镜像搜索,输入相应的镜像名称找到合适的镜像。

建议使用网易镜像或阿里镜像网站这里以oracle 11.0.2 64bit 企业版

实例名: helowin为例子进行安装详解。

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

  1. 运行容器

2.1 默认启动容器方式

docker run -d --name oracle11g -p 1521:1521 --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 

或
docker run -d -it -p 1521:1521 \
--name oracle11g \
--restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 

2.2 持久化启动的方式

docker run -d -it -p 1521:1521 --name oracle11g --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

或
docker run -d -it -p 1521:1521 \
--name oracle11g \
--restart=always \
--mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

一般用默认启动方式就可以了,若是需要将数据保存到本地的采用持久化方式。

--mount表示要将Host上的路径挂载到容器中。

source=oracle_vol为Host的持久化卷,若未提前创建会自动创建,可通过

target=/home/oracle/app/oracle/oradata :自己Linux的家目录

docker volume inspect oracle_vol

查看volume的具体位置,target为容器中的路径

  1. 查看容器启动状态

docker ps | grep oracle11g  
  1. 进入oracle11g容器进行配置

docker exec -it oracle11g /bin/bash 
  1. 切换到root用户下进行配置:

切换root用户:su root

输入密码: helowin ##可以使用passwd命令更改自己的密码

  1. 编辑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  
  1. 保存后加载环境变量,立即生效:

source /etc/profile  
  1. 创建软连接:

作用:可以直接用oracle命令,而不需要进入bin目录中执行相应的命令。

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin  
  1. 切换到oracle 用户:

su - oracle  
登录sqlplus并修改sys、system用户密码:
sqlplus /nolog                                      # 登录oracle
conn /as sysdba                                     # 连接,需要进行操作系统验证,才可进行连接登录
alter user system identified by system;                        # 修改system用户账号密码system
alter user sys identified by sys;                              # 修改sys用户账号密码sys
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;      # 修改密码规则策略为密码永不过期
exit;                                                          # 退出
  1. 补充命令

补充命令
登录sqlplus并修改sys、system用户密码: 需要注意的是再oracle用户下操作
sqlplus /nolog                                      # 登录
conn /as sysdba                                     # 连接
create user test identified by test;                #创建内部管理员账号密码;
grant connect,resource,dba to yan_test;             #将dba权限授权给内部管理员账号和密码;
alter system set processes=1000 scope=spfile;       #修改数据库最大连接数据;
修改以上信息后,需要重新启动数据库
shutdown immediate;                                 #关闭数据库
startup;                                            #启动数据库
SQL> select instance from v$thread;                 #查看数据库sid(实例名)
clear SCR  或clear screen或clea scre                 #sqlplus清屏命令
创建表空间
create tablespace pts datafile '/home/oracle/app/oracle/oradata/helowin/pts.dbf' size 100m autoextend on next 10m

删除表空间
drop tablespace PTS;

查看所有表空间
select tablespace_name from dba_tablespaces;

创建用户
create user PTS identified by PTS default tablespace PTS;

删除用户
drop user pts cascade;

为sys用户添加sysdba权限
SQL> grant sysdba to sys;

查看哪些用户被授予DBA权限
select * from dba_role_privs where granted_role='DBA';

查看数据库编码
SQL> select userenv('language') from dual;

查看数据库权限和用户

SQL> show parameter password         #查看数据库权限
SQL> select * from v$pwfile_users;   #查看用户

  1. 查看一下oracle实例状态:

lsnrctl status             -查看一下oracle实例状态:

监听命令

$ lsnrctl stop listener    -停止名为listener的监听服务
$ lsnrctl start listener   -启动名为listener的监听服务
$ lsnrctl reload listener  -重新加载名为listener的监听服务

查看环境变量

cat /home/oracle/.bash_profile

看到此ORACLE_SID=helowin表示数据库的实例名称

  1. navicate连接

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐