附錄 docker容器自啓:
docker已啓動的情況下:docker update --restart=always oracle
第一步 拉取和下載docker鏡像
[root@localhost ~]# docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
Using default tag: latest
latest: Pulling from helowin/oracle_11g
ed5542b8e0e1: Pull complete
a3ed95caeb02: Pull complete
1e8f80d0799e: Pull complete
Digest: sha256:4c12b98372dfcbaafcd9564a37c8d91456090a5c6fb07a4ec18270c9d9ef9726
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest
第二步 查看docker中的鏡像文件
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZEregistry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 3 years ago 6.85GB
然後運行鏡像
docker run -d -p 1521:1521 --name oracle registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
第三步 檢查容器是否運行成功
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a151f9478f94 registry.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" About a minute ago Up 30 seconds 0.0.0.0:1521->1521/tcp oracle
啓動oracle
[root@localhost ~]# docker start oracle
第四步 進入並設置oracle
4.1 [root@localhost ~]# docker exec -it oracle bash
4.2
[oracle@a151f9478f94 /]$ exit
exit
[root@localhost ~]#
4.3切換回root用戶
編輯環境變量 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
4.4 使這個配置修改生效
[root@localhost ~]# source /etc/profile
4.5進入容器(此處的id就是第一個命令下的id),加載一下用戶環境變量,進入容器後,自動是oracle用戶
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a151f9478f94 registry.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" 3 hours ago Up 3 hours 0.0.0.0:1521->1521/tcp oracle
[root@localhost ~]# docker exec -it a151f9478f94 /bin/bash
[oracle@a151f9478f94 /]$ source ~/.bash_profile
[oracle@a151f9478f94 /]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 4 14:44:44 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba ## 使用sysdba 連接oracle,最大權限,os認證,只能在本機上登陸使用。
Connected.
SQL> alter user system identified by system; ## 修改用戶 system 的密碼爲 oracle ,可以自定義
User altered.
SQL> alter user sys identified by sys;
User altered.
SQL> create user ETS identified by ETS;
User created.
SQL> grant connect,resource,dba to ETS ;
Grant succeeded.
SQL> exit ##退出編輯SQL
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@a151f9478f94 /]$ exit ##回到root用戶
exit
[root@localhost ~]#
上面的步驟都完成後,嘗試用plSql連接
ORACLE_DOCKER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.103)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = helowin)
)
)
連接完成後,會報錯,client編碼和數據庫編碼格式不一致?
把oracle數據編碼格式
1.cmd
2.輸入set ORACLE_SID=你想進入的數據庫的那個sid
3.輸入 sqlplus /nolog
4.將數據庫啓動到RESTRICTED模式下做字符集更改:
SQL> conn /as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> alter database open;
Database altered.
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
提示我們的字符集:新字符集必須爲舊字符集的超集,這時我們可以跳過超集的檢查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered.
SQL> select * from v$nls_parameters;
略
19 rows selected.
重啓檢查是否更改完成:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> select * from v$nls_parameters;