--创建表空间“HSJ_IV”
create tablespace HSJ_IV
logging
datafile 'D:\HSJ_IV_DB\HSJ_IV_data.dbf' --数据库文件位置
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
--删除表空间
--前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除
drop tablespace zfmi including contents and datafiles cascade onstraints;
--including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数
--including datafiles 删除表空间中的数据文件
--cascade constraints 同时删除tablespace中表的外键参照
--创建用户“HSJ_IV69”,并指定默认表空间和零时表空间TEMP
CREATE USER HSJ_IV69 IDENTIFIED BY m123
DEFAULT TABLESPACE HSJ_IV
TEMPORARY TABLESPACE TEMP;
--删除用户以及用户所有的对象
--cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数
drop user zfmi cascade;
--给用户分配角色
GRANT "RESOURCE" TO HSJ_IV69 WITH ADMIN OPTION;
GRANT "DBA" TO HSJ_IV69 WITH ADMIN OPTION;
GRANT "CONNECT" TO HSJ_IV69 WITH ADMIN OPTION;
ALTER USER HSJ_IV69 DEFAULT ROLE "RESOURCE","DBA","CONNECT";
--给用户赋予权限
GRANT CREATE TYPE TO HSJ_IV69 WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO HSJ_IV69 WITH ADMIN OPTION;
GRANT ALTER ANY TYPE TO HSJ_IV69 WITH ADMIN OPTION;
commit;
--备份数据库
exp HSJ_IV69/m123@orcl file=c:/HSJ_IV.dmp owner=HSJ_IV69
--还原数据库
--还原数据库前要先创建目标表空间和用户(HSJ_IV_New)
imp HSJ_IV_New/m123@orcl file=c:/HSJ_IV.dmp fromuser=HSJ_IV69 touser=HSJ_IV_New
--备份部分表
exp HSJ_IV69/m123@orcl file=c:/HSJ_IV.dmp tables=(MESBAOMAPPING,MESBFEDERAL,MESBFN,MESBLOG,MESBLOGIN,MFRAME)
--还原部分表
imp HSJ_IV_New/m123@orcl file=c:/HSJ_IV.dmp tables=(MP_MLAW_ARTICLETABLE,MP_MLAW_BRHISTORY,MP_MLAW_GATEGORY,MP_MLAW_SOURCE) ignore=y
blob、clob类型的导入
问题:
迁移数据库时,如果表中存在LOB类型字段(BLOB、CLOB等),IMP时失败,提示表空间不存在。
原因:
是LOB类型的数据全部存储在表空间中,表中只存放指针,即使在建表时没指定表空间,数据也全部存入该数据库默认表空间中。
解决方法:
1、导入时凡是碰到blob字段类型都出错,提示表空间不存在
IMP-00017: 由于 ORACLE 的 959 错误,以下的语句失败
对于正在运作的应用数据库,肯定不能临时创建一个表空间。
对于大型的DMP导出文件,也不能直接编辑,修改表空间。
这种情况:只能事先创建好目标表,在建表的时候用LOB子句指定表空间,在导入的时候加上 ignore=y 即可
2、在被导入数据库中创建与原数据库名称相同表空间,修改默认表空间为此表空间。若在建表时指定了LOB字段表空间,则在被导入数据库中创建存放此LOB字段表空间。
3、若被导入数据库中强制指定其他表空间存储LOB字段,可在第一步导入数据后,执行空间迁移命令一定LOB数据到指定的表空间。
命令:
alter table tb_name move tablespace tbs_name lob (col_lob1,col_lob2) store as(tablesapce tbs_name);
tb_name :表名
tbs_name:表空间名
col_lob1,col_lob2:LOB字段名