docker中oracle数据库创建用户及数据泵操作


前言

oracle数据库对权限的管理是非常严格的,因此对于oracle来说创建新的用户以及导入导出都是相对繁琐些。本文主要介绍通过docker安装oracle容器的基本操作。


一、进入oracle容器并登录

1. 查看oracle容器id或容器名称

docker ps //查看所有启动的容器,查找所要操作的容器

2. docker命令进入容器

命令: docker exec -it [容器名称或容器id] /bin/bash

docker exec -it oracle11g /bin/bash

3.通过sqlplus进入Oracle:

oracle数据库提供默认系统用户
用户:SYS 密码: oracle
用户: system 密码: oracle

sqlplus sys as sysdba //以管理员权限登录
sqlplus system/oracle  //已普通用户登录

二. 创建表空间,创建用户,并授权

1. 查询表空间的路径

select name from v$tempfile;

2. 创建表空间

命令: create tablespace [表空间名称] datafile [表空间路径] size 9G;
表空间路径复制上面查出来的路径并修改最后的dbf文件名称即可,注意文件名不要有数字

create tablespace test datafile '/u01/app/oracle/oradata/XE/test.dbf' size 9G;

3. 查看所有表空间,及表空间扩容

新建表空间后可以通过命令查看,还可以针对已有表空间继续挂载dbf文件实现空间扩容

select tablespace_name from dba_tablespaces; //查看表空间名称
alter tablespace test add datafile '/u01/app/oracle/oradata/XE/testadd.dbf' size 5G; //给表空间test扩容

查询表空间容量指标

select b.file_id  文件ID,
  b.tablespace_name  表空间,
  b.file_name     物理文件名,
  b.bytes       总字节数,
  (b.bytes-sum(nvl(a.bytes,0)))   已使用,
  sum(nvl(a.bytes,0))        剩余,
  sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
  from dba_free_space a,dba_data_files b
  where a.file_id=b.file_id
  group by b.tablespace_name,b.file_name,b.file_id,b.bytes
  order by b.tablespace_name;

4. 创建用户

创建用户 临时表空间设为默认的 TEMP

create user root identified by 123456 default tablespace test temporary tablespace TEMP; //创建root用户,设置默认表空间为test

5. 查看用户名

select username from dba_users; //查看用户名

6. 用户授权

给指定用户连接,管理员,导出权限,导入权限,并可以传递权限。(根据需求自己定义权限)

grant connect,dba,exp_full_database,imp_full_database to root with admin option; //给root用户授权

三. 数据泵导入导出

1. Docker数据库文件移动

docker容器与容器、容器与系统之间是互相隔离的,容器内是不能访问系统目录的,因此做数据库导入导出之前需要上传文件到容器内部,docker容器数据移动命令如下:

(1)移动宿主机文件到容器内部
	docker cp <宿主机文件路径名> <容器名称>: <容器路径>
(2)移动容器内部文件到宿主机
	docker cp <容器名称>: <容器路径> <宿主机文件路径名>

2. 数据泵导入导出

本文介绍impdp expdp命令导入导出功能,其中涉及逻辑目录的使用。

  1. 查询逻辑目录名称 及 对应的内存地址
select * from dba_directories;
  1. 创建逻辑目录
    该命令不会在操作系统创建真正的目录,最好以system等管理员创建。复制上面查到的逻辑目录地址,修改成一个新的地址用以创建逻辑目录。
create directory test as 'd:\test\dump'; //创建逻辑目录test 
  1. 导入
    移动dmp文件到选用的逻辑目录下,本文选用默认逻辑目录 DATA_PUMP_DIR
    参数说明:
    directory: 选用的逻辑目录名称
    dumpfile:要导入的dmp文件名称
//directory: 选用的逻辑目录名称 dumpfile:移动到逻辑目录下的具体dmp文件名,
impdp test/123456@127.0.0.1:1521/xe directory="DATA_PUMP_DIR" dumpfile="test.DMP" full=y;
  1. 导出
    本文选用默认逻辑目录 DATA_PUMP_DIR
    参数说明:
    schemas: 选择导出的哪个用户的数据
    dumpfile: 具体导出的dmp文件名
    DIRECTORY: 导出的逻辑目录
expdp test/123456@127.0.0.1:1521/xe schemas=test dumpfile=test.dmp DIRECTORY=DATA_PUMP_DIR;
  1. 导出后利用docker cp 到导出的逻辑目录的路径下复制

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值