Centos安装Oracle(通过Docker远程拉取)
1、安装Docker
- 首先以root身份登录Centos
- 把yum包更新到最新
yum update
- 安装所需要的包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源(系统会提供两个,自己选一个即可)
yum-config-manager --add-repo
- 查看所有仓库中的docker版本,并选择特定的版本安装
yum list docker-ce --showduplicates | sort -r
已加载插件:fastestmirror
可安装的软件包
- updates: mirrors.cn99.com
Loading mirror speeds from cached hostfile- extras: mirrors.aliyun.com
docker-ce.x86_64 3:19.03.2-3.el7 docker-ce->stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
- 安装Docker
yum install docker-ce-docker版本号
- 启动Docker
systemctl start docker //启动
systemctl enable docker //开机启动
docker version //docker版本信息
拉取Oracle
- 拉取docker镜像:
[root@node01 ~]# 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
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest
下载时间可能较长,需要耐心等待
- 用docker images命令查看镜像
[root@node01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 6 years ago 6.85GB
REPOSITORY下面出现的就是镜像
- 创建容器
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
若出现以下错误,是因为该容器已经被创建了,要想重新创建,删除即可
docker: Error response from daemon: Conflict. The container name "/oracle" is already in use by container "6b5ba1873211ddb75b6d1181f0768045cc61b5c4d613c9b0c797357176966739". You have to remove (or rename) that container to be able to reuse that name.
使用docker ps -a查看存在的容器
[root@node01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf27a3c2ac7d registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" 44 minutes ago Created oraclellg
6b5ba1873211 registry.aliyuncs.com/helowin/oracle_11g "/bin/sh -c '/home/o…" 46 minutes ago Created oracle
移除全部(根据自己的选择)
[root@node01 ~]# docker rm $(docker ps -a -q)
cf27a3c2ac7d
6b5ba1873211
重新创建容器
[root@node01 ~]# docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
-
进入容器修改账号和密码
- 1、进入容器
[root@node01 ~]# docker exec -it oracle11g bash
[oracle@6be7e7905d72 /]$
- 2、进行软连接
sqlplus /nolog
发现没有该命令,切换回root
su - root
密码为:helowin
编辑环境变量 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
- 3、修改生效
[root@node01 ~]# source /etc/profile
- 4、创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
切换到oracle用户 su - oracle
- 5、设置用户名和密码
[oracle@6be7e7905d72 ~]$ sqlplus /nolog //登录数据库
SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 4 12:40:02 2022
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba ## 使用sysdba 连接oracle,最大权限,os认证,只能在本机上登陆使用。
Connected.
SQL> alter user system identified by system; ## 修改用户 system 的密码为 system
User altered.
SQL> alter user sys identified by system; ## 修改用户sys的密码为system
User altered.
create user test identified by test; -- 创建内部管理员账号密码;
grant connect,resource,dba to test; --将dba权限授权给内部管理员账号和密码;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; --修改密码规则策略为密码永不过期;(会出现坑,后面讲解)
alter system set processes=1000 scope=spfile; --修改数据库最大连接数据;
SQL> exit; ## 推出SQL
连接成功:
易错点:
1、拉取时报空间不够
failed to register layer: Error processing tar file(exit status 1): write /home/oracle/app/oracle/product/11.2.0/dbhome_2/oc4j/ant/lib/ant.jar: no space left on devic
排错步骤
- 先查看docker的根目录安装位置
[root@node01 ~]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.8.1-docker)
scan: Docker Scan (Docker Inc., v0.17.0)
Server:
Containers: 2
Running: 0
Paused: 0
Stopped: 2
Images: 1
Server Version: 20.10.14
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 3df54a852345ae127d1fa3092b95168e4a88e2f8
runc version: v1.0.3-0-gf46b6ba
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 972.3MiB
Name: node01
ID: PDYZ:IHH4:ZVZZ:ZEYF:C2T3:ZQR3:CDEQ:KYZP:TGYN:5PFF:242A:IBCL
Docker Root Dir: /var/lib/docker //docker根目录
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
- 查看根目录所剩空间
[root@node01 docker.service.d]# df -hl /var/lib/docker/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 10G 7.1G 59% /
发现内存不是很充裕 先改变docker的根目录试试看
- 创建目录
[root@localhost ~]# mkdir -p /etc/systemd/system/docker.service.d/
- 创建配置文件并录入配置信息
[root@localhost ~]# vim /etc/systemd/system/docker.service.d/devicemapper.conf
录入以下配置文件信息
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --graph=/home/docker/lib/docker
这样/home/docker/lib/docker就是现在docker的根目录。可通过docker info查看
- 重启docker
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# systemctl enable docker
-
重新拉取
如果成功即可,如果失败,这时候我们就需要去进行扩容。 -
获取docker根目录,方便之后对其进行扩容
[root@node01 ~]# docker info
Docker Root Dir: /home/docker/lib/docker //根目录
- 查看根目录使用情况
[root@node01 ~]# df -hl /home/docker/lib/docker
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 10G 7.1G 59% /
-
先在虚拟机上扩展分区(此处我电脑上已经扩展了,请自行查阅)
-
先把虚拟机关机
-
点击设置,点击添加,选择硬盘,点击下一步
- -
下一步
-
还是下一步
-
输入分配内存大小
-
点击下一步
-
完成
-
启动虚拟机进行配置
-
1、查看磁盘信息
-
2、新增分区
fdisk /dev/sdb
-
创建要挂载的目录data
-
3、格式化,挂载磁盘
格式化磁盘mkfs.ext4 /dev/sdb3 sdb3是我们刚才创建的磁盘名称。
挂载磁盘
修改配置文件/etc/fstab
最后保存重启即可
-
-
查看每个磁盘的容量,以便使用其进行扩容
[root@node01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 470M 0 470M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 8.2M 478M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 10G 7.1G 59% /
/dev/sdb3 40G 49M 38G 1% /data
/dev/sda1 1014M 185M 830M 19% /boot
tmpfs 98M 0 98M 0% /run/user/0
tmpfs 98M 12K 98M 1% /run/user/42
可见sdb3有40G的空间可用,可以把它分给我们的/dev/mapper/centos-root。
- 创建pv
[root@node01 ~]# pvcreate /dev/sdb3
Can't open /dev/sda3 exclusively. Mounted filesystem?
Can't open /dev/sda3 exclusively. Mounted filesystem?
若出现上述错误,证明正在使用,先关闭。
[root@node01 ~]# umount /dev/sdb3
然后再次创建pv
[root@node01 ~]# pvcreate /dev/sdb3
WARNING: ext4 signature detected on /dev/sda3 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sda3.
Physical volume "/dev/sda3" successfully created.
- 把pv加入vg中,相当于扩容vg的大小
先查看vg组
[root@node01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
再扩展vg
[root@node01 ~]# vgextend centos /dev/sdb3
Volume group "centos" successfully extended
扩容完成,用vgs查看
[root@node01 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 2 0 wz--n- 58.99g <40.00g
[root@node01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g //虽然把vg扩展了,但lv还没有扩展
- 扩展lv
[root@node01 ~]# lvextend -L +30G /dev/mapper/centos-root
Size of logical volume centos/root changed from <17.00 GiB (4351 extents) to <47.00 GiB (12031 extents).
Logical volume centos/root successfully resized.
+30G 这块根据自己实际情况写
- 查看lv大小
[root@node01 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <47.00g
swap centos -wi-ao---- 2.00g
- 用df -h查看磁盘容量有无变化
[root@node01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 470M 0 470M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 8.2M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 10G 7.1G 59% /
/dev/sda1 1014M 185M 830M 19% /boot
tmpfs 98M 0 98M 0% /run/user/0
tmpfs 98M 12K 98M 1% /run/user/42
发现没有变化
- 使用xfs_growfs /dev/mapper/centos-root让系统重新读取大小
[root@node01 ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1113856 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4455424, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4455424 to 12319744
再次使用df -h查看
[root@node01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 470M 0 470M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 8.2M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 47G 10G 38G 22% /
/dev/sda1 1014M 185M 830M 19% /boot
tmpfs 98M 0 98M 0% /run/user/0
tmpfs 98M 12K 98M 1% /run/user/42
容量发生改变。继续进行Oracle的拉取。
2、登录SQL时sqlplus报错
错误:
[oracle@6be7e7905d72 /]$ sqlplus /nolog
bash: sqlplus: command not found
排错步骤:
- 查看环境
[oracle@6be7e7905d72 ~]$ vi .bash_profile
加上(有的话就不用加了)
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
- 使环境变量生效
[oracle@6be7e7905d72 ~]$ source /etc/profile
- 发现还是报错
[oracle@6be7e7905d72 ~]$ sqlplus /nolog
bash: sqlplus: command not found
- 创建软连接
[oracle@6be7e7905d72 ~]$ ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
ln: creating symbolic link `/usr/bin/sqlplus': Permission denied
- 切换到根目录(密码是:helowin)
[oracle@6be7e7905d72 ~]$ su - root
Password:
- 继续执行创建软连接
[root@6be7e7905d72 ~]# ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
- 切换到oracle
[root@6be7e7905d72 ~]# su - oracle
[oracle@6be7e7905d72 ~]$
- 再次进入sql
[oracle@6be7e7905d72 ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Nov 4 12:40:02 2022
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL>
- 成功!