docker安装oracle
1、使用xhsell安装docker
官网:https://docs.docker.com/engine/install/centos/
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
2、了解:卸载docker
#1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
#2、删除资源
sudo rm -rf /var/lib/docker
# /var/lib/docker docker的默认工作路径
3、配置阿里云镜像加速器
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用户连接成功;
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连上的,至于为啥服务名连不上又不知道了。
3、连接本地oracle
之前本地oracle连不上也是因为开启使用SSH通道…怪我太憨了,这次关了,然后用服务名登录的,连接上了。
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
oracle本地连接
连接数据库,使用sys连接时,应加 as sysdba 或者 sysoper
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密码不一样
进入sql后:
使用 conn / as sysdba
进行登陆, 这样就进入oracle了。
这儿没有使用用户名、密码是因为默认操作系统验证已经通过,所以不用输入, 也可以自己输入,不影响。
一般使用登陆方式:
sqlplus /nolog
conn user/pswd
查看服务名:show parameter service_name
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"。