docker 安装oracle_记录Win10下使用Docker安装使用Oracle 12c 数据库

为什么使用了Docker而不直接安装Oracle数据库: 为了学习完卸载方便. 同时也为了转换数据库版本或者同时安装多个数据库方便,并且最后卸载的时候方便.(Oracle在Win10上卸载的时候,需要手动删除修改注册表和服务项,非常费事)

全文步骤:

  1. 安装Docker
  2. 拉取Oracle 官方提供的Oracle Database Server 12c R2 镜像.
  3. 在Powershell或者cmd中连接镜像登陆数据库
  4. 创建表空间并添加数据

拉取Oracle 官方提供的镜像.

首先前往DockerHub上该镜像的地址: 链接 , 然后注册并登陆自己的DockerHub账号以及Oracle账号,并点击同意镜像的使用协议.

然后在Docker桌面端启动并登陆的条件下, 选择下面两个版本中的一个:

  • Oracle Database Server 12.2.0.1 Enterprise Edition (完整版)
  • Oracle Database Server 12.2.0.1 Enterprise Edition Slim Variant (精簡版)
如果你只想測試簡單的資料庫功能,建議安裝 Slim Variant 版本即可,不但 image 體積小,啟動速度也較快。

然后在powershell或者cmd中执行下面的两个命令中的对应一个(第二个是精简版):

docker pull store/oracle/database-enterprise:12.2.0.1
docker pull store/oracle/database-enterprise:12.2.0.1-slim

最后输入下面的命令启动镜像:

docker run -d -it --name oracle -p 1521:1521 -p 5500:5500 store/oracle/database-enterprise:12.2.0.1-slim

另外如果你想保留本次容器執行所建立的資料庫,可以透過 docker volume mapping 做到:

docker volume create OracleDBData

docker run -d -it --name oracle -p 1521:1521 -p 5500:5500 -v OracleDBData:/ORCL store/oracle/database-enterprise:12.2.0.1-slim

在Powershell或者其他工具连接镜像登陆数据库

官方容器的預設帳號密碼如下:

  • SID:ORCLCDB
  • 帳號:SYS
  • 密碼:Oradoc_db1

如果不從外部連線的話(不从其他电脑连接,只在本电脑使用),可以直接在powershell中通过 docker exec 命令從 Oracle 容器中執行 sqlplus 工具:

docker exec -it oracle bash -c "source /home/oracle/.bashrc; sqlplus /nolog"

接著可以透過以下 SQL 命令登入 SYSSYSDBA 角色:

CONNECT SYS/Oradoc_db1 AS SYSDBA;

或是直接在執行 sqlplus 時就直接登入(将上面两条命令合并为一条):

docker exec -it oracle bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba"
建議第一次登入就先修改 SYS 預設密碼,請參考以下命令進行修改: ALTER USER SYS IDENTIFIED BY <new-password>;

如果要透過Oracle SQL Developer登入,可以參考以下截圖進行設定(如果使用其他数据库管理IDE,如DBviewer等,配置都类似):(如果不选SID而是选服务名的话,应该填ORCLCDB.localdomain)

6f30a4b5f075fb40f628924506e85732.png

建立用户

當 Oracle 容器完全啟動之後,悲劇也就開始發生了,因為我連一個使用者都無法建立!

因為 Oracle 資料庫跑在容器中,有著不同的安全性架構,從 Oracle 12cR1 開始,因為新增了多租戶架構(multitenant architecture),可以讓你在一個資料庫容器中執行多個租戶資料庫(tenant databases),所以建立使用者的 SQL 命令稍微有點不一樣,而這個問題對一個不常使用 Oracle 的開發者來說也太困難了。

如果你用傳統的 SQL 命令建立一個新用戶,就會得到這個錯誤:ORA-65096: invalid common user or role name:

SQL> CREATE USER WILL IDENTIFIED BY yourpassword;
CREATE USER WILL IDENTIFIED BY yourpassword
            *
ERROR at line 1:
ORA-65096: invalid common user or role name

而正確建立使用者的方法,應該用以下 SQL 命令:

ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
CREATE USER will IDENTIFIED BY yourpassword;
GRANT CONNECT, RESOURCE, DBA TO WILL;
ALTER SESSION SET "_ORACLE_SCRIPT"=FALSE;

接著就可以用新帳號登入連線:

CONNECT WILL/yourpassword AS SYSDBA; 

刪除用户

基本上,只要跟「使用者」相關的操作,在 Oracle 容器中都會遇到問題,所以若要刪除上一節所建立的 WILL 帳號的話,必須使用以下 SQL 命令:

ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;
DROP USER WILL CASCADE;
ALTER SESSION SET "_ORACLE_SCRIPT"=FALSE;

建立用户并建立数据库

首先打开Dockers中该镜像的CLI:

33e129667867f9857ab5adf5a0305f89.png

然后运行下面的命令建立一个:

mkdir /home/oracle/table

然后回到刚刚的powershell 建立表空间Test:

CREATE TEMPORARY TABLESPACE Test_TEMP  -- 建立临时表空间
         TEMPFILE '/home/oracle/table.DBF'
         SIZE 32M
         AUTOEXTEND ON
         EXTENT MANAGEMENT LOCAL;
     

CREATE TABLESPACE Test  -- 建立表空间
         LOGGING
         DATAFILE '/home/oracle/Test.DBF'
         SIZE 32M
         AUTOEXTEND ON
         EXTENT MANAGEMENT LOCAL;

然后注册用户(用户test,密码123456)并配置Test表空间的权限:

ALTER SESSION SET "_ORACLE_SCRIPT"=TRUE;  -- 注意这里
	 
CREATE USER test IDENTIFIED BY 123456 ACCOUNT UNLOCK DEFAULT TABLESPACE Test TEMPORARY TABLESPACE Test_TEMP;
GRANT CONNECT,RESOURCE TO test; 
GRANT DBA TO test;
ALTER USER test QUOTA UNLIMITED ON test;

然后登陆该用户并向表空间中填入数据:

connect test/123456;

create  table test.student(
	id int not null primary key,
	name varchar(20)
);
insert into student values(123,'张三');
commit;

验证数据是否写入:

SELECT * FROM student;

参考:

  • The Will Will Web
  • Oracle表和表空间查询 - Chsoul - 博客园
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值