docker安装oracle

docker 安装syslog Docker 安装oracle11g_oracle

1、使用xhsell安装docker

官网:https://docs.docker.com/engine/install/centos/

docker 安装syslog Docker 安装oracle11g_oracle_02

docker 安装syslog Docker 安装oracle11g_oracle_03

1、帮助文档:

#1、卸载旧的版本
#2、需要的安装包
yum install -y yum-utils
#3、设置镜像仓库
yum-config-manager \
   --add-repo \
   https://download.docker.com/linux/centos/docker-ce.repo #默认国外镜像
yum-config-manager \
   --add-repo \
   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #推荐阿里云的镜像
   
#更新yum软件包索引
yum makecache fast
   
#4、安装docker相关的源 docker-ce 社区 docker-ee 企业版
yum install docker-ce docker-ce-cli containerd.io

#5、启动docker
systemctl start docker

#6、查看是否安装成功
docker version

docker 安装syslog Docker 安装oracle11g_数据库_04

2、了解:卸载docker

docker 安装syslog Docker 安装oracle11g_数据库_05

#1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
#2、删除资源
 sudo rm -rf /var/lib/docker

#  /var/lib/docker docker的默认工作路径

3、配置阿里云镜像加速器

docker 安装syslog Docker 安装oracle11g_数据库_06

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://iw4qnxsa.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

2、搭建oracle服务

1、拉取oracle镜像

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

#检查是否拉取成功:
dokcer images

2、运行镜像

docker run -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oralce_11g

3、启动容器,进入镜像进行配置

#启动容器
docker start oracle11g

docker exec -it oracle11g bash

4、进行软连接

sqlplus /nolog
#发现没有该命令,所以切换root用户

5、切换root用户

su root
#输入密码:helowin

6、编辑profile文件,配置oracle环境变量

#打开profile
vi /etc/profile
# 使用 a 进入编辑模式
# 在文件最后写上下面三行语句
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
#按 Esc进行保存
# 按下(shift+;)即==>冒号:  
# 输入 wq 强制保存退出

7、刷新配置

source /etc/profile

8、创建sqlplus软连接

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

9、切换到oracle用户,登录sqlplus

#切换到oracle用户
su - oracle

#连接数据库
sqlplus /nolog
#进入sql>
conn / as sysdba

10、修改sys和system用户密码

alter user system identified by 123456;
alter user sys identified by 123456;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

11、验证

#先退出
exit;
#退出重连
sqlplus
system
#输入密码:123456 连接成功即没有问题

12、查看服务名、实例名

#查看数据库名
select name from v$database;
#查看数据库实例名
select instance_name from v$instance;
#查看当前登录数据库的参数配置
show parameter name
#查看数据库服务名
show parameter service_name

13、切换数据库实例

#执行命令:其中ORACLE_SID为具体的实例名称,
sqlplus /@ORACLE_SID as sysdba;  
#比如连接到orcl实例就执行命令:
sqlplus /@orcl as sysdba;

14、创建用户并授权

#创建用户并设置密码
create user xxx identified by password;
#例:
create user tutu identified by 123456;

#创建后你会发现你不能登陆,是因为没有授权,所以需要授权登陆权限
grant create session to xxx;

#例
grant create session to tutu;

#登陆后你发现你没法建表、也没有表目录(使用管理工具的看不到你建的表的列表)等,还是权限不够,所以继续授权:
grant create table,unlimited tablespace to xxx;
grant select any table to xxx;
GRANT UPDATE ANY TABLE,DROP ANY TABLE,INSERT ANY TABLE TO xxx;

#例
grant create table,unlimited tablespace to tutu;
grant select any table to tutu;
GRANT UPDATE ANY TABLE,DROP ANY TABLE,INSERT ANY TABLE TO tutu;

#给角色授予了select any table 权限后发现还是不能查询系统表,原因:与oracle 的参数O7_DICTIONARY_ACCESSIBILITY有关;该参数默认是false,这种情况下,select any table是不包含sys用户下的表的权限的。如果要select any table 包含sys下的表,则需将该参数改为true后将数据库重启才生效。
#即执行一下语句:
alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;
#再重启数据库就ok啦。

使用tutu用户连接成功;

docker 安装syslog Docker 安装oracle11g_数据库_07

15、SQLplus下命令输入错误如何删掉重新输入

如下当我们输入命令出错时想删掉重新输入,按delete或者backspace键无法删除且出现如下情况:

SQL> show urerej ^H^H^H^H^H

可以是使用ctrl+backspace删除,很实用。

3、使用Navicat远程、本地连接oracle数据库

1、oracle 11g 配置navicate lite Instance Client下载

版本要对上。。不然连接可能会有很多问题

2、连接方式云端oracle

踩坑:我之前选了ssh通道然后一直报错。。之前也搞不清楚,忘了关闭,就一直连不上,关闭之后使用SID连上的,至于为啥服务名连不上又不知道了。

docker 安装syslog Docker 安装oracle11g_oracle_08

3、连接本地oracle

之前本地oracle连不上也是因为开启使用SSH通道…怪我太憨了,这次关了,然后用服务名登录的,连接上了。

docker 安装syslog Docker 安装oracle11g_docker_09

4、解决oracle数据库TNSLSNR.exe进程占用8080端口

Oracle 10g服务一启动 TNSLSNR.exe 会占用8080端口,导致tomcat无法正常启动,这时,需要改一下端口:

用oracle提供的包:

– 把HTTP/WEBDAV端口从8080改到8081

SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), 
 '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081)) 
 /

– 把FTP端口从2100改到2111

SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), 
 '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()',2111)) 
 / 
 SQL> commit; 
 SQL> exec dbms_xdb.cfg_refresh;

– 检查修改是否已经成功

SQL> select dbms_xdb.cfg_get from dual;

也可以在cmd中输入命令:netstat -ano|findstr 8081,找到8081端口号对应的进程

netstat -ano|findstr 8081

docker 安装syslog Docker 安装oracle11g_docker_10

oracle本地连接

连接数据库,使用sys连接时,应加 as sysdba 或者 sysoper

docker 安装syslog Docker 安装oracle11g_docker 安装syslog_11

oracle云端连接

使用xshell启动docker

docker start oracle11g
docker exec -it oracle11g /bin/bash #emmmmmmmmm这条语句一定不要忘了、、不然连不上

#此时不能直接进行软连接 环境变量配置在了/etc/profile文件中,切换oracle用户后可以执行sqlplus /nolog,但是exit后再执行sqlplus /nolog命令不管用,原因是容器环境变量默认走的是/home/oracle/.bashrc文件
su - oracle  # su - 与su的区别:su - USERNAME切换用户后,同时切换到新用户的工作环境中;su USERNAME切换用户后,不改变原用户的工作目录,及其他环境变量目录
sqlplus /nolog

在切换到oracle用户时,我输入的口令即密码为oracle,这与sys、system密码不一样

docker 安装syslog Docker 安装oracle11g_docker 安装syslog_12

进入sql后:

使用 conn / as sysdba 进行登陆, 这样就进入oracle了。

这儿没有使用用户名、密码是因为默认操作系统验证已经通过,所以不用输入, 也可以自己输入,不影响。
一般使用登陆方式:

sqlplus /nolog
conn user/pswd

查看服务名:show parameter service_name

docker 安装syslog Docker 安装oracle11g_docker 安装syslog_13

Oracle 服务名Service_name/实例名Sid的区别

这种方式是Oracle推荐的,对于集群来说,每个节点的SID可能不一致,但ServiceName是一致的,包含所有节点。

ServiceName是由oracle8i引进的。在Oracle 8i以前,使用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。
SID是数据库实例的名字,每个实例各不相同。

SID:一个数据库可以有多个实例(如RAC),SID是用来标识这个数据库内部每个实例的名字,就好像一个部门里,每个人都有一个自己的名字。

SERVICE_NAME:是这个数据库对外宣称的名字,外面的人要想连接我这个数据库,你就在客户端的连接串里写上service_name。它就像一个部门的名字,这个部门的名称在看门大爷(listener)那里有登记,

一句话来说就是:SID是对内的,是实例级别的一个名字,用来内部之间称呼用。SERVICE_name是对外的,是数据库级别的一个名字,用来告诉外面的人,我数据库叫"SERVICE_NAME"。