*************虚拟机
用户:FPBJ
密码:fpbj
10.19.22.91
orcl
imp fpbjy/fpbjy@10.19.22.91:1521/orcl file=F:\fpbjy1.dmp full=y
imp csj/csj@139.196.221.111:1521/CSJ fromuser=csj_kf touser=csj file=d:\csj_kf.dmp
impdp fpbjy/fpbjy@10.19.22.91:1521/orcl directory=DATA_PUMP_DIR dumpfile=FPBJY.DMP REMAP_SCHEMA=fpbjy:fpbjy full=y;
impdp smtj2012/密码@localhost/devdb DIRECTORY=dump_dir DUMPFILE=bkmmtdb_smtj20130417120001.dmp remap_schema=smtj:smtj2012 remap_tablespace=smtj:smtj2012
--oracle通过impdp导入不同表用户、不同表空间的数据
impdp fpbjy/fpbjy@10.19.22.91:1521/orcl directory=DATA_PUMP_DIR dumpfile=FPBJY.DMP REMAP_SCHEMA=fpbjy:fpbjy remap_schema=fpbj:fpbjy remap_tablespace=TS_FPBJ:TS_FPBJY full=y version=11.2.0.1.0;
2.REMAP_SCHEMA
该选项用于将源方案的所有对象装载到目标方案中.
REMAP_SCHEMA=source_schema:target_schema
3.REMAP_TABLESPACE
将源表空间的所有对象导入到目标表空间中
REMAP_TABLESPACE=source_tablespace:target:tablespace
只要客户端的nls_lang的设置和数据库服务器的字符集一致就可以避免乱码的问题。
查看数据库字符集:
SELECT PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME = 'NLS_CHARACTERSET';
91环境
--创建表空间
create tablespace TS_FPBJY datafile '/u01/app/oradata/mydb/TS_FPBJY.dbf'size 1024M autoextend on extent management local;
create temporary tablespace TS_DPBJY_TMP tempfile '/u01/app/oradata/mydb/TS_FPBJY_TMP.dbf' size 10m AUTOEXTEND ON
NEXT 10240K MAXSIZE UNLIMITED extent management local uniform size 128k;
--创建用户
create user FPBJY identified by fpbjy
default tablespace TS_FPBJY
temporary tablespace TS_DPBJY_TMP;
grant dba to FPBJY;
grant unlimited tablespace to FPBJY;
91数据库原先字符集
NLS_CHARACTERSET ZHS16GBK
AMERICAN_AMERICA.ZHS16GBK
US7ASCII
--修改字符集
SHUTDOWN IMMEDIATE;
STARTUP MOUNT EXCLUSIVE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE US7ASCII;(如果不行试一下:ALTER DATABASE character set INTERNAL_USE US7ASCII;这种方法绕过字符集检查)
SHUTDOWN immediate;
startup;
--linux环境启动orcale
第一步:登陆
root登陆之后切换到oracle用户上,输入
su oracle
第二步:连接
在oracle用户下,输入
sqlplus /nolog
第三步:使用管理员权限
输入
connect /as sysdba
数据库字符集在创建后原则上不能更改。不过有2种方法可行。 1. 如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。 2. 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。
再sql*plus中使用system身份登陆数据库
然后执行下面语句:
DROP USER user_name CASCADE;
这样你该用户包括该用户下的表,试图,同义词,过程,索引,及相关的一切就都不见了。
然后再新建一个同名用户,赋予相应权限就可以了。
EXP导出的不能跨版本导入,你试试用EXPDP加version参数导出试试
select * from dba_directories;