exp和imp导入导出时表空间问题【未完】
准备工作
第一步: 创建教师和学生用户
- 教师用户/密码 TEACHER/t123456
- 学生用户/密码 STUDENT/s123456
参考链接 http://www.cnblogs.com/whatlonelytear/articles/5009464.html#createUser
第二步: 创建教师表空间和学生表空间
http://www.cnblogs.com/whatlonelytear/articles/5009464.html#createTablespace
- 参考以上链接,创建教师表空间TBS_TEACHER和学生表空间TBS_STUDENT ,
第三步: 以指定用户创建教师表和学生表
- 以学生用户登录创建学生表(不用)
- 以老师用户登录创建老师表1(teacher1)和教师表2(teacher2)
学生表样例sql
--建学生表
create table STUDENT
(
id INTEGER not null,
name VARCHAR2(100),
age INTEGER
); CREATE INDEX IDX_STU_NAME ON STUDENT(NAME);--添加索引
ALTER TABLE STUDENT ADD CONSTRAINT CST_ID PRIMARY KEY(ID);--添加主键
COMMENT ON COLUMN STUDENT.NAME IS '姓名';--添加注释 INSERT INTO STUDENT (ID, NAME, AGE) VALUES (1, 'aaa', 10);
INSERT INTO STUDENT (ID, NAME, AGE) VALUES (2, 'bbb', 12);
INSERT INTO STUDENT (ID, NAME, AGE) VALUES (3, 'ccc', 11);
COMMIT;
第三步: 给学生和教师指定默认表空间
-- 修改用户表空间
ALTER USER student DEFAULT TABLESPACE TBS_STUDENT;
ALTER USER teacher DEFAULT TABLESPACE TBS_TEACHER;
-- 回收unlimited tablespace无限表空间权限,不让student使用之前的user表空间其它空间
revoke unlimited tablespace from student;
-- 将student用户在 TBS_TEACHER 表空间的配额置为 0
alter user student quota 0 on TBS_TEACHER;
-- 设置student用户在 TBS_STUDENT 表空间配额不受限
alter user student quota unlimited on TBS_STUDENT;
-- 查看用户表空间配额,MAX_BYTES为0代表用户对表空间无使用权,为-1代表可以无限使用
SELECT * FROM USER_TS_QUOTAS;
我的导出导入语句
我的目标 : 把TEACHER用户下的teacher1表导从TBS_TEACHER表空间导入到STUDENT用户下的TBS_STUDENT表空间下.
参数说明如下:
- ROWS=N 表示只导表结构,不导表数据 (导出数据行数,N代表0行)
- TABLES=表示导哪些表,和FULL不可共存
- IGNORE=y 表示忽略创建错误,继续后面的操作
- FILE=xxx.dmp 表示要导入导出的dmp文件位置
- LOG=xxx.log 表示导入导出时的日志
- BUFFER=1024000 表示数据行的缓冲区大小,单位Byte默认值根据系统而定,1024000是一个比较好的值,这也是别人的经验。回滚端的问题主要出现在commit选项,大数据量的exp和 imp中commit=y可以避免回滚段益出。
- FULL=y 表示全库导出: 导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 这些系统用户之外的所有用户的数据.
-------导出,导出teacher1,teacher2表----------
exp "TEACHER/t123456@1.2.3.4:1521/orcl" ROWS=N BUFFER=1024000 tables=teacher1,teacher2 file=/data/oradata/dmp/backup.dmp LOG=/DATA/logs/exp.log
-------导入,只导入teacher1表----------
imp "STUDENT/s123456@1.2.3.4:1521/orcl" ROWS=N tables=teacher1 BUFFER=1024000 IGNORE=y file=/data/oradata/dmp/backup.dmp log=/data/logs/imp.log IGNORE=y fromuser=TEACHER touser=STUDENT
然而导入到student用户下的teacher1表的表空间还是TBS_TEACHER, 上面的语句是不可能实现表空间的TEACHER表迁移的,原因参考下一小节.
- 使用UltraEdit CTRL+H来批量修改表空间------what a ball shit
- 指定fromuser touser shit 方法: 不启作用------what a ball shit
如果我们有dba权限,那这个时候最好使用expdp和impdp服务端程序,它可以满足要求.
imp和dmp导入导出用户表空间touser问题 #重点#
同一个dmp文件在导入生产库的时候导入的表空间是 a_tbs (目标a用户的默认表空间),在导入测试环境的时候导入的表空间是 users .
使用的导入脚本也是完全相同的,所以这里就涉及了imp的导入机制
经过测试发现:
imp在使用touser进行制定用户导入的时候,导入哪个表空间不是由目标用户决定,
而是由导出用户fromuser决定的。
比如:
文件是由 s 用户导出,对应的表空间是 users , 导入到用户 a, 对应的表空间是 a_tbs
导入的时候如果目标环境有users表空间,就算使用了touser参数,也会导入到users表空间下,而如果目标环境没有users表空间,就会导入touser用户的默认表空间了。
主要参考链接: imp使用touser导入表空间问题
表空间其它相关辅助语句
-- 查看表空间的名称及大小
SELECT T.TABLESPACE_NAME, ROUND(SUM(BYTES / (1024 * 1024)), 0) TS_SIZE
FROM DBA_TABLESPACES T, DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
GROUP BY T.TABLESPACE_NAME;
-- 查看表空间物理文件的名称及大小
SELECT TABLESPACE_NAME,
FILE_ID,
FILE_NAME,
ROUND(BYTES / (1024 * 1024), 0) TOTAL_SPACE
FROM DBA_DATA_FILES
ORDER BY TABLESPACE_NAME; -- 查看有哪些用户
SELECT USERNAME FROM DBA_USERS;
-- 查看用户有哪些角色权限
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE = 'student';
-- 查看用户有哪些系统权限
SELECT * FROM DBA_SYS_PRIVS WHERE grantee = 'student' ;
-- 查看当前用户下的表
SELECT * FROM USER_TABLES;
查看当前表空间
SELECT TBS 表空间名,
SUM(TOTALM) 总共大小M,
SUM(USEDM) 已使用空间M,
SUM(REMAINEDM) 剩余空间M,
SUM(USEDM) / SUM(TOTALM) * 100 已使用百分比,
SUM(REMAINEDM) / SUM(TOTALM) * 100 剩余百分比
FROM (SELECT B.FILE_ID ID,
B.TABLESPACE_NAME TBS,
B.FILE_NAME NAME,
B.BYTES / 1024 / 1024 TOTALM,
(B.BYTES - SUM(NVL(A.BYTES, 0))) / 1024 / 1024 USEDM,
SUM(NVL(A.BYTES, 0) / 1024 / 1024) REMAINEDM,
SUM(NVL(A.BYTES, 0) / (B.BYTES) * 100),
(100 - (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)
GROUP BY TBS;
参考链接
Oracle创建表空间、创建用户,给用户分配表空间以及可操作权限
exp和imp导入导出时表空间问题【未完】的更多相关文章
- (转)oracle使用expdp、impdp和exp、imp导入导出表及表结构
使用expdp.impdp和exp.imp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 2.expdp和impdp是服务端的工具程序,他们只能在 ...
- Oracle 查询用户表信息,导入导出处理表空间不一致
select table_name,tablespace_name from user_tables t; //查询用户默认表空间信息 SELECT t.* FROM USER_USERS t; 导入 ...
- PLSQL 导入表到Oracle------》从一个表空间导入到其它表空间
在用PLSQL导入.dmp文件到Oracle时出现的问题如下: Import started on 2015/11/18 10:42:44E:\oracle\product\10.2.0\db ...
- thinkphp导入导出excel表单数据
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
- ORACLE数据库在导入导出时序列不一致的问题
ORACLE数据库在导入导出时序列不一致的问题 在使用ORACLE数据库时,当给一个表设置自增字段时,我们经常会使用到序列+触发器来完成.但当你需要对数据库进行导入导出时,序列很容易出问题. 当你 ...
- Oracle DMP 操作笔记之根据DMP逆向推导出导出的表空间名称
最近在带着一群.NET新兵们在开发和升级一套系统,本人虽然工作好几年,但是也是属于啥都懂一点,啥都不会的队伍,碰到新兵更是蛋都碎了,还特别拘谨,为啥新兵们都是基础知识很不错的,看来要好好练习内功了,好 ...
- linux mysql 数据库操作导入导出 数据表导出导入
linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...
- 优化exp/imp导入导出速度大全
.exp 个相关的参数:DIRECT和RECORDLENGTH参数. DIRECT参数定义了导出是使用直接路径方式(DIRECT=Y),还是常规路径方式(DIRECT=N).常规路径导出使用SQL ...
- Oracle 数据备份、恢复以及导入时表空间不存在的解决方案
一.数据备份(导出) 1.exp命令导出dmp文件(exp -help查看帮助信息) 命令:exp username/userpasswd@192.168.99.199/orcl file=C:\jd ...
随机推荐
- CH0805 防线(算竞进阶习题)
二分 一道藏的很深的二分题... 题目保证只有一个点有奇数个防具,这个是突破口. 因为 奇数+偶数=偶数,我们假设某个点x,如果有奇数点的防具在x的左边,那么x的左边的防具总数一定是奇数,右边就是偶数 ...
- try-with-resource机制的一个编译陷阱
为了解决问题,偶然发现一个奇怪的地方:就是使用try-with-resource机制的代码编译后,使用jd-gui反编译文件出现// ERROR //,但是程序运行却是正常的. 进一步确认后发现:如果 ...
- wstngfw中使用Viscosity连接OpenV-P-N服务器
wstngfw中使用Viscosity连接OpenV-P-N服务器 在本例中,将假设以下设置: 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Offi ...
- HDOJ5551 Huatuo's Medicine
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5551 题目大意:... 题目思路:乱搞?模拟? #include <stdio.h> vo ...
- HNOI2019
省选总结 day0 写了下平时不经常写的模板,像什么\(LCT\),圆方树,\(exlucas\)之类的,但是一个都没考. day1 提前十几分钟进了考场,可以提前动电脑,赶紧把\(vimrc\)打了 ...
- day20
20.01 IO流(IO流概述及分类) 1.IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 字节流:字节流可以操作任何数据,计算机中任何数据都 ...
- QBXT Day2主要是数据结构(没写完先占坑)
简单数据结构 本节课可能用到的一些复杂度: O(log n). 1/1+1/1/.....1/N+O(n log n) 在我们初学OI的时候,总会遇到这么一道题. 给出N次操作,每次加入一个数,或者询 ...
- Libre OJ 144、145 (DFS序)
部分参考自博客:https://blog.csdn.net/hpu2022/article/details/81910490 在许多问题中,由于树结构复杂通常会导致问题很棘手,因为其实非线性结构,操作 ...
- Linux包系列的知识(附:Ubuntu16.04升级到18.04的案例)
Linux基础:https://www.cnblogs.com/dunitian/p/4822808.html#linux 之前看到朋友还动不动 apt-get update upgrade,就很纳闷 ...
- c语言笔记: 对 void *lpObj 进行类型转换时,一不留神,后果很严重
问题描述: 一个项目之前测试的时候一点问题没有,今天早上软件在一个特定的条件下出现崩溃情况,但并不是每次都会崩溃情,崩溃概率达到80%. 经过上午3个小时的排查,终于找到原因. 在项目中,我使用了一个 ...