1.使用管理员账号(sys)登录查询字符集信息
第一步:查询LinuxOracle数据库的字符集
select userenv('language') from dual;
查询结果集可能为:AMERICAN_AMERICA.ZHS16GBK根据查询实际结果填写
第二步:导出数据库前先设置导出字符集
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK --(针对windows)导出设置什么字符集导入有设置同样的字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK --(针对Linux)导出设置什么字符集导入有设置同样的字符集
注意:不管是Linux导出还是windows导出建议均设置导出字符集;并且导出和导入均设置一致的字符集,避免字符错乱,导出数据库前oracel11G可能会有空表导不出的情况;
此时需要进到SQL Developer 执行如下查询:
SELECT 'ALTER TABLE ' || TABLE_NAME || ' ALLOCATE EXTENT;'FROM User_Tab_Comments where table_type='TABLE';
查询出多张空表后,复制出到SQL窗口执行以下即可;
第三步:导出数据库
exp:适用于数据库较少的数据,数据量大时导出数据较久,花费时间较长;
expdp:适用于任何数据库,对于较大数据导出时间短,速度快,该命令只能在服务端使用,用于导出大量数据。
exp 用户名/密码@数据库 file=路径 log=路径
expdp 用户名/密码@数据库 directory=数据库配置的文件夹 dumpfile=数据库导出名 logfile=数据库导出日志名称
PS:需要先建好用户。
PSS:SQL> 表示要先用sys用户登录后创建,其中 '/data3/oracle'可以替换。
SQL> create or replace directory expdir as '/data3/oracle' --配置的路径文件
exp 用户名/密码 file=***.dmp log=***.log fromuser=用户名 touser=用户名
exp qwer/qwer file=wer.dmp log=qwer.log
expdp 用户名/密码 directory=expdir dumpfile=***.dmp logfile=***.log
expdp qwer/qwer directory=expdir dumpfile=qwer.dmp logfile=qwer.log
导入:
impdp qwer/qwer directory=expdir dumpfile=qwer.dmp REMAP_SCHEMA=qwer:qwer EXCLUDE=USER full=y
imp qwer/qwer file=qwer.dmp log=qwer.log fromuser=qwer touser=qwer
第四步:cmd WindowsOracel数据库字符集设置
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK --(针对windows)导出设置什么字符集导入有设置同样的字符集
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK --(针对Linux)导出设置什么字符集导入有设置同样的字符集
第五步:导入数据库
impdp qwer/qwer directory=expdir dumpfile=qwer.dmp REMAP_SCHEMA=qwer:qwer EXCLUDE=USER full=y
imp qwer/qwer file=qwer.dmp log=qwer.log fromuser=qwer touser=qwer