导出:exp OSMPPORTAL/PORTAL@10.130.24.133:1521/omsp file=/home/oracle/osmpportal.dmp
参数:owner=(system,sys)两个用户,tables=table1,table2 只要表结构不要数据:rows=n
导入:imp ccod/ccod@192.168.30.20:1521/ccpbs16 file=/home/oracle/osmpportal.dmp fromuser=OSMPPORTAL touser=osmpportal
参数:imp 登陆的(有相应权限的)用户名/密码@oracle的ip:端口/sid file=文件目录 fromuser=导出时的用户 touser=要导入的用户
ignore=y有的表已经存在会报错,忽略
expdp和impdp
一 关于expdp和impdp 使用EXPDP和IMPDP时应该注意的事项:
EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
expdp OSMPPORTAL/PORTAL@ccpbszq DUMPFILE=osmpportaldp.dmp SCHEMAS=OSMPPORTAL
http://www.cnblogs.com/huacw/p/3888807.html
ORA-01031: insufficient privileges
原因:没有赋予相应权限
一:查看数据量
1.查询是否有用户:select * from dba_users where username='OSMPPORTAL'
2.查询当前用户总数据量:select sum(t.num_rows) from user_tables t
3.查询当前用户下各个表的数据量:select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC
4.查询表空间对应的数据文件:select tablespace_name,file_name from dba_data_files
5.查询表空间对应的数据大小:select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;
6.查询数据量:select SEGMENT_NAME,s.BYTES/1024/1024/1024 as Gb from user_segments s where s.BYTES is not null order by s.BYTES desc
二:新建用户
1.新建用户:create user username identified by pwd
注:默认表空间:default tablespace hxzg_data;
2.修改密码:alter user username identified by newpwd
3.新建的用户也没有任何权限,必须授予权限
grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限
grant unlimited tablespace to zhangsan;//授予zhangsan用户使用表空间的权限
grant create table to zhangsan;//授予创建表的权限
grante drop table to zhangsan;//授予删除表的权限
grant insert table to zhangsan;//插入表的权限
grant update table to zhangsan;//修改表的权限
grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)
4.drop user username; //删除用户
5.赋权限:grant resource,connect to db_hxzg;
6.给其他用户访问权限(db_hxzg以DBA权限登录)
grant select any table to sun;
几个问题
1.在机器orcl上查看用户默认表空间,以便导入时创建一样的表空间
select username,default_tablespace from dba_users where username ='CMS';
2.查看用户使用的表空间
select DISTINCT owner ,tablespace_name from dba_extents where owner like 'CMS';
3.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件。
select file_name,tablespace_name from dba_data_files where tablespace_name in ('WORK01');
4.检查B机器的表空间,看是否存在work01表空间
select name from v$tablespace where name = ‘WORK01’;
查找不到,说明没有这个两个表空间,需要创建
5.要导入数据的server没有work01表空间,创建:
create tablespace work01
datafile '/u01/oradata/orac/work01.dbf'
size 200m
autoextend on
next 20m
maxsize unlimited
extent management local;
6. 在要导入的数据库上查找用户是否已经存在
select username from dba_users where username='CMS';
如果存在:
drop user cms cascade; --(删除用户及其拥有的所有对象)
-- 此时如果这个用户在连接,drop会出错,必须先杀掉用户的session,然后再drop
SELECT 'alter system kill session '''||SID||','||SERIAL#||''' immediate;'
FROM V$SESSION
WHERE USERNAME='CMS';
alter system kill session '93,56387' immediate;
alter system kill session '100,18899' immediate;
alter system kill session '135,24910' immediate;
alter system kill session '149,3' immediate;
alter system kill session '152,3' immediate;
alter system kill session '156,7' immediate;
alter system kill session '159,45889' immediate;
alter system kill session '160,1' immediate;
alter system kill session '161,1' immediate;
alter system kill session '162,1' immediate;
alter system kill session '163,1' immediate;
--再复制这些语句,粘贴到sqlplus中执行,来杀掉Test2的session。
如果不存在cms用户:
create user cms identified bycms default tablespace work01 temporary tablespace temp;
不管存不存在都应该给cms授权
grant connect,resource to cms;
7.最后将数据导入
下面在windows的cmd下将用户导进去
imp file=e:\cms.dmp fromuser=cms touser=cms userid=cms/cms@orac
这里要注意的是之前我是用cms用户将数据导出来的,这个cms具有dba权限,那么这里导入的时候用的userid后面的cms也必须具有这个权限不然会报错
这里我们可以临时给cms赋予dba权限,最后回收他,但是回收之后,记得再给cms赋予resource权限NFO,USER_PROJECT_INFO) file=/home/oracle/osmp2.dmp
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!