分享

Docker-Oracle数据泵

 HUC王子 2020-11-24

Oracle总结

1.概念,用户,表空间,表,用户拥有表空间,表空间可以有多个用户,表存在与表空间中

2.给用户指定表空间

--修改用户的表空间
alter user username  default tablespace userspace;
--创建用户时给用户创建表空间
create user username   identified by userpassword default tablespace userspace;

3.查看用户拥有的表空间

select default_tablespace from dba_users where username='用户名'

4.表空间拥有大小 可以用以下命令查看表还有多少空间

SELECT a.tablespace_name "表空间名", 
total "表空间大小", 
free "表空间剩余大小", 
(total - free) "表空间使用大小", 
total / (1024 * 1024 * 1024) "表空间大小(G)", 
free / (1024 * 1024 * 1024) "表空间剩余大小(G)", 
(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", 
round((total - free) / total, 4) * 100 "使用率 %" 
FROM (SELECT tablespace_name, SUM(bytes) free 
FROM dba_free_space 
GROUP BY tablespace_name) a, 
(SELECT tablespace_name, SUM(bytes) total 
FROM dba_data_files 
GROUP BY tablespace_name) b 

5.表空间可以扩容(对已有的表进行扩容)


sqlplus / as sysdba
--执行
alter tablespace 表名 add datafile '/data/oradbs/表名.dbf' size 4000m; 

6.Oracle导入导出数据如果数据量大,要使用数据泵,不然导入导出数据很花时间,按照以下命令进行数据的数据泵导出(服务端操作)

数据泵文件导出

创建数据泵导出数据路径

进入数据库

sqlplus /nolog

以sysdba连接数据库

connect /as sysdba

创建数据泵文件的导出目录

data_dir 可以自己命令,只要和下面的命令中directory保持一直即可

create directory data_dir as 'E:\ora\data' ;

执行该命令时需要退出数据库

directory=【data_dir】要和上面创建目录时directory后面的名称一致

expdp 用户名/密码@服务名 schemas=用户名 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log

expdp [为用户名]/[密码]@[服务名]
schemas=[为用户名]
dumpfile=[导出数据库文件(可自命名)]
directory=[目录名]
logfile=[日志文件文件名(可自命名)]

命令结束不需要加“;”

数据泵文件导入

数据导入准备工作:
在本地创建一个存放数据泵文件的路径

linux系统为例:/usr/oracle

同时将该文件的所属组和用户修改

chown oracle:oinstall /usr/oracle 

如果进入容器后的默认用户没有修改文件的权限,切换到root用户修改

su root

管理员密码根据自己情况而定,我的容器的密码是helowin

进入Docker的Oracle容器

docker exec -it  容器名  /bin/bash

进入容器后连接oracle

sqlplus /nolog
connect /as sysdba

然后在oracle服务端中创建读取数据泵文件的路径,这些路径都要保持一致

data_dirs(这个是创建的列明),【data_dirs】 这个可以随意命名,比如【data_dirssss】,只要和接下来的sql语句中的相关字段保持一致即可,即括号前面标注的地方

create directory data_dir as '/usr/oracle' ;

data_dirs(跟上面名字保持一致),例子【data_dirssss】

//给用户读写目录的权限

Grant read,write on directory data_dir to 数据库用户名;

data_dirs同理上面,例子【data_dirssss】

创建数据泵文件所在文件,之后需要将数据泵文件放在该目录下

create directory data_dirs as '\usr\oracle' ;

数据泵文件导入

directory 后面的【data_dirs】跟上面命名的要一致,例子【data_dirssss】

impdp OASS1/OASS1@HELOWIN REMAP_SCHEMA = oass1:OASS1 table_exists_action = replace directory=data_dir dumpfile=EXPDP.DMP logfile=expdp.log

impdp [用户名]/[密码]@[服务名]
REMAP_SCHEMA=[源用户名1]:[目标用户名2]
table_exists_action=replace /存在的表动作(覆盖)/
directory=[目录名]
dumpfile=[.dmp文件名]
logfile=[.log文件名]

7.导入过程中可能存在字符集不同的异常,下面的命令可以将字符集统一
oracle_11g编码修改

SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK ;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多