oracle实例迁移导入-redhat环境下

一、数据库实例的导出:
登录到源数据库所在的redhat系统中,执行如下语句:
echo $ORACLE_SID
如果为自己想要的数据库实例,则进入:
用主机自带超级权限登录:
sqlplus /nolog;
conn / as sysdba;
登录后,使用如下语句将oracle数据实例导出,实例名以sqccdb1为例,sqsmk用户为dba权限:
exp sqsmk/sqsmk@sqccdb1 full=y file=/home/oracle/sqccdb1.dmp log=/home/oracle/exp.log
二、数据库实例的导入:
1)新建数据库实例:
在redhat桌面,打开终端,输入dbca,进入数据库配置助手,可视化界面,新建数据库实例,名称为sqccdb1,字符集为:简体中文,即ZHS16GBK,语言选择SIMPLED CHINESE;
2)导入数据库dmp文件:
将dmp文件传输到目标数据库;如放到/home/oracle路径下:
3)登录目标数据库操作系统,执行:echo $ORACLE_SID ,如果不是目标实例,则export ORACLE_SID=sqccdb1 切换为目标实例,登录数据库,并启动数据库:
sqlplus /nolog;
conn  / as sysdba;
查看数据库字符集:select userenv('langauge') from dual;
如果不是:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,则将其更为如下字符集:
操作步骤如下:
shutdown immediate;
startup mount;
alter  system  enable  restricted  session  ;  alter  system  set  JOB_QUEUE_PROCESSES=0; alter  system  set  AQ_TM_PROCESSES=0;alter  database  open  ;   
alter  database  character  set  internal_use  ZHS16GBK  ;
shutdown immediate;
startup;
create user sqsmk identified by sqsmk;
grant dba to sqsmk;
imp sqsmk/sqsmk@sqccdb1 full=y ignore=y file=/home/oracle/sqccdb1.dmp
至此数据库实例导入完毕

说明:导入过程中切记注意导出的dmp编码和新创建的数据库实例编码是否一致,否则中文字段会出现乱码;

使用如下java代码:
package file;
import java.io.FileInputStream;
public class ReadDmpCharsetBytes {
 public static void main(String[] args) throws Exception { 
     byte[] bytes = new byte[3]; 
     new FileInputStream("D:\\oracle\\176db\\desdb1.dmp").read(bytes); 
     String bytestr = String.format("%02x", bytes[1]) + String.format("%02x", bytes[2]); 
     System.out.println(bytestr); 
     System.out.println("select nls_charset_name(to_number('" + bytestr + "','xxxx')) from dual"); 
   } 
}
查出的字符长度为:0354 对应字符格式为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK ; 0369对应的是AL32UTF8
                               

猜你喜欢

转载自blog.csdn.net/qq_31466883/article/details/80547744