跨数据库导数据时,一定要注意两个数据库的字符集是否一致。具体怎么设置,看下面的过程。
在源库导出
1.首先配置终端的字符集
- select * from nls_database_parameters where parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
- PARAMETER VALUE
- ------------------------------ ----------------------------------------
- NLS_CHARACTERSET AL32UTF8
- NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET 表示数据库字符集;
NLS_NCHAR_CHARACTERSET 表示国家字符集
操作系统终端的字符集和数据库字符集设置的一样
- $ set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
- $ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
2.导出fee 和download 的schema(download用户拥有dba权限)
- exp download/xxx file=/var/db_file/lqx/fee.dmp owner=fee
- exp download/xxx file=/var/db_file/lqx/download.dmp owner=download
3.传到目的数据库上
在目地数据库
1.设置操作系统终端的字符集
- select * from nls_database_parameters where parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
- PARAMETER VALUE
- ------------------------------ ----------------------------------------
- NLS_CHARACTERSET ZHS16GBK
- NLS_NCHAR_CHARACTERSET AL16UTF16
操作系统终端的字符集和数据库字符集设置的一样
- $ set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
- $ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
2.导入到fee和down下,注意这里的用户名有改变(down用户拥有dba权限)
- imp down/xx file=/home/oracle/db_backup_sh/fee.dmp fromuser=fee touser=fee
- imp down/xx file=/home/oracle/db_backup_sh/download.dmp fromuser=download touser=down
成功导入
===========更新=============
关于exp导出没有dba权限用户中的表
exp sys/xx file=/home/oracle/dump/xx.dmp tables=username.table_name consistent=y direct=y
导入时的问题:如果导入语句中有fromuser 和touser ,那么就不能用full=y
阅读(2023) | 评论(0) | 转发(0) |