今天,需要完成一项艰巨的任务,额,就是导入导出,中间加个建库,这么简单的事,我竟然用了将近4个小时,中间各种问题,心塞呀!!!!
1.首先,要去源库上导出文件,很简单呀:
在cmd中执行:exp 用户名/密码@SID file=位置\导出名.dmp owner=用户名 ;
2.在新服务器上安装oracleXEUniv,过程不复杂,一步一步执行就可以,但是有点慢,尤其是他的解压;
并且在安装过程中需要填写system用户的密码,必须要记住;
3.接下来就是导入了,一上来就执行imp,报错 “imp不是内部命令或外部命令”,这个是说明没有给配置变量;
先去安装路径下C:\oracle\app\oracle\product\10.2.0\server\BIN查看有没有sqlplus.exe文件,然后把这个路径放到环境变量path下面;
再测试报的就不是这个错了,
这个时候想到,起码得按照原来的程序建个用户什么的才好用吧;
3.1在cmd下输入sqlplus,然后输入用户名密码,先用system进入到数据库,然后新建了一个用户名create user 用户名 identified by 密码;
并且给用户授权: grant create user,drop user,alter user,create any view,drop any view,exp_fulldatabase,imp_full_database,dba,connect,resource,create session to 用户名;
3.2执行imp 新建的用户名/密码@SID file=导出的文件.dmp full=y;
报错了:遇到oralce错误12154…………无法解析指定的连接标识符…………未成功终止导入
发现在本机导入不需要加@SID,所以改为imp 新建的用户名/密码@SID file=导出的文件.dmp full=y;
3.3又报错了:导入的dmp不是有效的导出文件,头部验证失败,
是因为由高版本导出,导入的数据库版本比较低,在Notepad++中打开dmp文件,将开头的版本号改为新服务器上安装的版本10.2.0;
再次导入就可以进行了;
3.4但是在导入过程中有错,虽然能够执行完成,但是部分表报错:遇到oracle错误959,是因为这些表中含有用blod保存的图片文件,没有对应的表空间,导入之前需要创建表空间和用户,然后我就删除用户名,重新创建的表空间和用户名;
3.5删除用户名:drop user 用户名 cascade;
创建表空间,看到都需要使用dbf文件,后来查到这个dbf文件是需要不存在的,在创建表空间的同时会创建这个文件
create tablespace 表空间名称 datafile '自定义最好和表空间名称相同.dbf' size 2g extent management local autoallocate;
创建了一个大小为2g的扩展大小为自动管理的表空间;这个有允许的最大数据库大小,我的是最大4g;
继续创建用户名 用户名create user 用户名 identified by 密码 default tablespace 表空间名称;
创建完成继续为其授权;然后再执行导入imp就能够正常导入了!
4.打算在本地连接这个数据库,发现不知道SID是多少,在注册表中查找:
regedit , HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\ORACLE下又ORACLE_SID,确定新安装的数据库SID为xe,也可以对其进行修改。
整个过程算是完成了!!