我们在数据库导入数据时,常规步骤如下:
登录用户system管理员
–【必须步骤:创建表空间】
create tablespace test datafile 'G:\app\zky\oradata\hsp\test01.DBF' size 1024M autoextend on;
create tablespace ESB datafile 'G:\app\zky\oradata\hsp\ESB.DBF' size 1024M autoextend on;
create tablespace LIS datafile 'G:\app\zky\oradata\hsp\LIS.DBF' size 1024M autoextend on;
create tablespace EMR datafile 'G:\app\zky\oradata\hsp\EMR.DBF' size 1024M autoextend on;
注:G:\app\zky\oradata\hsp\ESB.DBF
路径为自己数据库存放表空间的路径,以上是个人路径,autoextend on
为表空间大小自增。
–【非必须步骤:创建用户】
create user ESB_USER identified by ESB_USER default tablespace test;
–【非必须步骤:创建角色】
create role ESB_ROLE;
–【非必须步骤:给角色授权】
grant ESB_ROLE to ESB_USER;
–【必须步骤:创建导入目录,创建之后需要把DMP的备份文件放到该目录下】
create directory dump_file_dir as 'd:\expdp1';
–【必须步骤:cmd运行】
–impdp 用户名/密码@数据库 schemas=要导入的a,要导入的用户b,要导入的用户c directory=dump_file_dir dumpfile=备份文件.DMP logfile=导入日志_in.log;
impdp system/hissystem@hsp schemas=hsp,lis,esb_user directory=dump_file_dir dumpfile=2020031901.DMP logfile=2020031901_in.log;
—给用户名授dba的权限
–grant connect,resource,dba to 用户名;
grant connect,resource,dba to hsp_cp;
—授权(登录sys用户授权)
grant select on sys.v_$session to hsp_cp;
方法描述
授予SELECT ANY DICTIONARY权限(对所有字典表和视图);
授予该用户select on sys.v_
s
e
s
s
i
o
n
权
限
,
并
使
用
有
权
限
用
户
对
v
session权限,并使用有权限用户对v
session权限,并使用有权限用户对vsession创建公共同义词(如授予public select on sys.v_KaTeX parse error: Expected group after '_' at position 38: …select on sys.v_̲session权限,并在该用户下创建对sys.v_
s
e
s
s
i
o
n
的
私
有
同
义
词
(
对
该
用
户
,
也
对
该
视
图
)
。
v
session的私有同义词(对该用户,也对该视图)。v
session的私有同义词(对该用户,也对该视图)。vsession 是v_$session 的别名
–【必须步骤】
–数据库导入完之后需要在PL/SQL中编译无效对象
impdp hsp/test directory=lis_file_dir dumpfile=LIS20200526.dmp logfile=LIS20200526.DMP_in.log full=y table_exists_action=replace
好啦,以上所诉为常规导数据的操作,一般没问题的,下面说说特殊情况!
1,当我们不需要某个库的所以数据,只需要某个模块的数据时,这种我们需要导入到自己的本地库里。就有点小坑!
2,首先安装常规操作,创建表空间,用户,然后执行imp命令。
impdp system/123456@orcl schemas=hsp directory = dump_file_dir dumpfile =TEST.DMP logfile=export.log
cmd窗口报错:SYS_IMPORT_FULL_01作业方案无效,对象表无效之类的。
原因:大概就是用户冲突或者权限问题吧,情景不好还原了,使用了语句
impdp system/123456@orcl directory=DUMP_DIR dumpfile=TEST.DMP logfile=export.log remap_schema=hsp:HSP table_exists_action=replace transform=segment_attributes:n
报错如下:
原因是没给用户表空间权限和dba权限
—给用户名授dba的权限
--grant connect,resource,dba to 用户名;
最后优化一下imp命令:
impdp HSP/HSP@orcl directory=DUMP_DIR dumpfile=TEST.DMP logfile=export.log remap_schema=hsp:HSP
成功如图:
最后贴上几个常用的语句:
–以system用户登录,查找需要删除的用户:
–查找用户
select * from dba_users;
–查找工作空间的路径
select * from dba_data_files;
–删除用户
drop user hsp cascade;
–删除表空间
drop tablespace HSP_BLOB including contents and datafiles cascade constraint;
–修改用户密码
alter user HSP identified by HSP;
–查询目录位置
SELECT * FROM dba_data_files ;
–查询dba目录
select * from dba_directories;
–删除目录
DROP DIRECTORY 目录名称;
例如:删除用户名成为LYK,表空间名称为LYK
–删除用户,及级联关系也删除掉
drop user LYK cascade;
–删除表空间,及对应的表空间文件也删除掉
drop tablespace HSP_CLS including contents and datafiles cascade constraint;
–查询表空间
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;