码迷,mamicode.com
首页 > 数据库 > 详细

oracle dmp文件的导入与导出

时间:2015-02-06 16:25:58      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

dmp文件的导入与导出:

 

整库的导入导出

1.从远程机器上导出
expdp npmdb/npmoptr@orcl schemas=NPMDB directory=MY_DIR dumpfile=npmdb_87.dmp

参数说明
schemas:可以看成是数据库名,directory:存放dmp,log文件的目录,dumpfile:导出的dmp文件名
注:directory目录的创建
create directory data_pump_dir as ‘/opt/data/oracle_tmp_data/‘;
directory目录的查看
SELECT privilege,directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
赋权限
grant read,write on directory data_pump_dir to npmdb;

2.导出的dmp文件放到要导入的机器上

3.dmp文件导入
impdp npmdb/npmoptr@oracle remap_schema=npmdb:npmdb directory=my_dir dumpfile=npmdb_87.dmp TRANSFORM=segment_attributes:n remap_tablespace=npmdbs:npmdb
参数说明
remap_schema=npmdb(导出的数据库):npmdb(要导入的数据库),directory:存放要导入的dmp文件的目录,dumpfile:导入的dmp文件名,remap_tablespace=npmdbs(导出的表空间):npmdb(导入的表空间)
注:全库导入时需要是空库
directory的创建参照导出时的目录的创建

 

带query的导入导出


导出特定表的前10000行
expdp nmosdb/nmosoptr@orcl directory=MY_DIR dumpfile=nmosdb_87.dmp Tables=TAI_SCENE_CONTROLORDER query= \"WHERE ROWNUM\<\=10000\";

导入特定表
impdp nmosdb/nmosoptr@oracle Tables=nmosdb.TAI_SCENE_CONTROLORDER directory=my_dir dumpfile=nmosdb_87.dmp TRANSFORM=segment_attributes:n

 

 

排除某一张表导出
expdp nmosdb/nmosoptr@orcl schemas=NMOSDB directory=MY_DIR dumpfile=nmosdb_87.dmp EXCLUDE=TABLE:\"IN \(\‘TPP_EVENT_HIS\‘\)\"

 

导入导出过程中可能会遇到的问题:

导入时要求要导入的库是空库

查看当前用户下的所有表:

select count(*) from user_tables;

或select count(*) from user_tab_comments;

若查询结果不为0,则删除当前用户下的所有对象

删除数据库对象的几种方法:

a.删除用户

drop user NRMDB cascade;
出现如下错误:
ORA-01940: cannot drop a user that is currently connected
通过查看用户的进程,并kill用户进程,然后删除用户
select sid,serial# from v$session where username=‘NRMDB‘;
alter system kill session ‘50,1122‘;
alter system kill session ‘54,3248‘;
drop user NRMDB cascade;
注:这样把对应的用户删除掉了
需要新建用户并指定该新建用户的默认表空间
create user nrmdb identified by nrmoptr;
grant dba to nrmdb;
alter user nrmdb default tablespace NRMDB;

b.使用语句删除

--delete tables
select ‘drop table ‘ || table_name ||‘;‘||chr(13)||chr(10) from user_tables;
--delete views
select ‘drop view ‘ || view_name||‘;‘||chr(13)||chr(10) from user_views;
--delete seqs
select ‘drop sequence ‘ || sequence_name||‘;‘||chr(13)||chr(10) from user_sequences;
--delete functions
select ‘drop function ‘ || object_name||‘;‘||chr(13)||chr(10) from user_objects where object_type=‘FUNCTION‘;
--delete procedure
select ‘drop procedure ‘ || object_name||‘;‘||chr(13)||chr(10) from user_objects where object_type=‘PROCEDURE‘;
--delete package
select ‘drop package ‘ || object_name||‘;‘||chr(13)||chr(10) from user_objects where object_type=‘PACKAGE‘;
--delete trigger
SELECT ‘drop TRIGGER "‘ ||SYS_CONTEXT(‘USERENV‘,‘CURRENT_USER‘)||‘"."‘|| TRIGGER_NAME ||‘";‘ ||CHR(13) ||CHR(10)FROM USER_TRIGGERS;

c.使用存储过程

 

删除某一张表时出错:

drop table TPP_EVENT_HIS;
出现的错误:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。
1、用dba权限的用户查看数据库都有哪些锁

select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;

2、根据sid查看具体的sql语句,如果sql不重要,可以kill

select sql_text from v$session a,v$sqltext_with_newlines b
where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value
and a.sid=&sid order by piece;

3、kill该事务
alter system kill session ‘339,13545‘;

 

导入时出现char类型字符集的问题


出现ORA-02374:等错误时,可能是因为表中有char类型的字段,出现这种情况时需要:
查询oracle server端的字符集
select userenv(‘language‘) from dual;

查询dmp文件的字符集
select nls_charset_name(to_number(‘0354‘,‘xxxx‘)) from dual;

查询oracle client端的字符集
echo $NLS_LANG

如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。

 

其他问题极可能用到的sql

查看表空间
select TABLESPACE_NAME from DBA_TABLESPACES;

查看nrmdb用户的默认表空间、临时表空间
select username,default_tablespace,temporary_tablespace
from dba_users
where username = ‘NPMDB‘;

查看所有的用户
select username from dba_users;

修改oracle用户的密码
ALTER USER nmosdb IDENTIFIED BY nmosoptr;

查看数据文件的路径
select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;

查看所有表空间大小
select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;

已经使用的表空间大小
select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

创建大文件表空间
create bigfile tablespace fmdb logging datafile ‘/opt/data/oracle_data/fmdbs.dbf‘ size 100G autoextend off extent management local segment space management auto ;

linux默认不支持.rar文件,要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux不是免费的;可从http://www.rarsoft.com/download.htm下载RARfor Linux 3.2.

多个文件压缩到一个压缩文件中
tar czvf DB_JS.tar.gz fmdb_87.dmp,kpidb_87.dmp,nmosdb_87.dmp,npmdb_87.dmp,nrmdb_87.dmp
出现以下错误:
tar: Exiting with failure status due to previous errors
解决办法:将多个文件之间的,去掉
tar czvf DB_JS.tar.gz fmdb_87.dmp kpidb_87.dmp nmosdb_87.dmp npmdb_87.dmp nrmdb_87.dmp

 

oracle dmp文件的导入与导出

标签:

原文地址:http://www.cnblogs.com/yangzhuan/p/4277415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!