本帖最后由 zjjxyh 于 2013-10-27 22:53 编辑
利用exp备份全库备份,备份一个用户,备份一张表格;
利用这个备份恢复一个用户到另一个数据库;
create directory 命令
利用expdp备份全库备份,备份一个用户,备份一张表格;
利用这个备份恢复一个用户到另一个数据库;
/创建临时表空间
create temporary tablespace user_tempspace
tempfile 'F:\datatest\user_tempdata01.dbf'
size 15m
autoextend on
next 500k maxsize 512m;
//创建数据表空间
create tablespace test_tablespace
datafile 'F:\datatest\USER_DATA01.DBF'
size 15m
autoextend on
next 15m maxsize 512m;
//创建用户并指定表空间
create user root identified by rootroot
default tablespace user_tablespace
temporary tablespace user_tempspace;
//给用户授予权限
grant connect,resource to root;
export 四种模式1.整个数据库模式(FULL) 2.传输表空间模式(Transport_tablespace) 3.用户模式(owner) 4.表模式(tables)
参数
1.buffer(对常规的路径有用:SELECT语句从表中抽取数据,对直接路径得用recordlength参数:直接路径导出则是将数据直接从磁盘读到PGA再原样写入导出文件)直接路径比常规路径避免了SQL命令处理层的数据转换过程,大大提高了导出效率buffer_size = rows_in_array * maximum_row_size(每一行各字段的长度相加+字段个数*2)65535
直接路径导出在transport_tablespace,query和buffer中不能使用
2.导出之前做的准备工作:1.表空间和数据文件列表 2.回滚段列表 3.用户,表,索引等一些数量
3.对完全新装数据库备份时首先在system表空间创建额外的回滚段
CREATE ROLLBACK SEGMENT rbs_one TABLESPACE rbs_ts STORAGE ( INITIAL 10K NEXT 10K MAXEXTENTS UNLIMITED );
EXP的所有参数(括号中为参数的默认值)Exp parameter_name=value or Exp parameter_name=(value1,value2……)
USERID 用户名/口令 如: USERID=duanl/duanl FULL 导出整个数据库 (N)不导出sys的触发器,不导出profile
BUFFER 数据缓冲区的大小 OWNER 所有者用户名列表,你希望导出哪个用户的对象,就用owner=username
FILE 输出文件 (EXPDAT.DMP) TABLES 表名列表 ,指定导出的table名称,如:TABLES=table1,table2(分区表table:分区名)(复合分区表tablename:m,tablename:sp4)
COMPRESS 导入一个extent (Y) RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y) INCTYPE 增量导出类型
INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)(N仅导出结构) PARFILE 参数文件名,如果exp的参数很多,可以存成参数文件.
CONSTRAINTS 导出约束 (Y) CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件 STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y)
FEEDBACK(0) 显示每 x 行 (0) 的进度 FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句不能和direct参数共用 eg:exp scott TABLES=emp,bonus QUERY=\"WHERE job=\'SALESMAN\' and sal \<1600\"
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表
RESUMABLE 遇到与空格相关的错误时挂起 (N) RESUMABLE_NAME 用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
EXP-00091: Exporting questionable statistics.原因:oracle用户的环境变量语句集和oracle数据库中的环境变量语句集不相同所致 解决方法:查看数据库服务器select * from nls_database_parameters 查看客户端:select * from nls_instance_parameters 修改oracle用户的环境变量语句集和数据库服务器一样
我这里测试就修改为export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
数据库字符集: nls_database_parameters、props$、v$nls_parameters
四个字符集:1.源数据库字符集 2.export过程中用户会话字符集 3.import过程中用户会话字符集 4.目标数据库字符集
To minimize data loss due to character set conversions, ensure that the export
database, the export user session, the importuser session, and the import database all
use the same character set.
在做数据导入,需要oracle server端的字符集、oracle client端字符集、dmp文件的字符集一致才能正确导入
1.查看oracle server端字符集:select userenv('language') from dual;
2.查看dmp文件的字符集:1.cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6 2.select nls_charset_name(to_number('345','xxxx')) from dual/select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;
3.查看oracle clent端的字符集 1.unix就环境变量$echo $NLS_LANG 2.windows注册表oraclehome的nls_lang可以在doc端口 set nls_lang=AMERICAN_AMERICA.ZHS16GBK设置当前窗口
如果检查结果发现server端和client端字符集不一样,统一修改为server端相同的字符集
补充:1.数据库服务器字符集 select * from nls_database_parameters