前两天客户要求换数据库,有原来的oracle9i换成11G,整个过程也比较简单,但是也碰到一些小问题,记录下来便于以后参考:
整个的思路如下,首先在本地服务器的数据库中test用户的数据导出到本地,然后再把导出的bmp文件在导入到新服务器的11G中,因为高版本是可以兼容低版本的,所以9I导出的数据是可以导进11G中的,
方法一:用dos命令
1 首先安装oracle客户端(如果不装客户端,dos中输入exp会提示“exp 不是内部命令这样的错误”),这里要注意的是
安装的oracle客户端版本必须要于你所要导出的oracle版本一直,不然会报这样的错误
EXP-00056: 遇到 ORACLE 错误 6550
ORA-06550: 第 1 行, 第 41 列:
PLS-00302: 必须说明 'SET_NO_OUTLINES' 组件
ORA-06550: 第 1 行, 第 15 列:
PL/SQL: Statement ignored
EXP-00000: 导出终止失败
因为我刚开始装的是10G的客户端,所以报了这个错误,后来嫌重装麻烦,就直接跑到服务器上导出了,
2 配置客户端的tnsnames.ora
如果没有这个文件就新建一个,里面加上如下内容
数据库1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip地址)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = 数据库名)
)
)
3 用exp进行导出
dos中执行命令: exp 用户名/密码@数据库1 file=e:\文件名.dmp log=e:\log文件名.log owner=(用户名)
注意: @后面的数据库1是和第2步中的数据库1是对应的 file 是导出的数据库文件,路径可以自己改,
这样应该就可以导出来了
4 用imp导入
导入的时候就简单了,注意:低版本的客户端是可以导入到高版本的。
DOS命令: imp system/manager@新数据库 file=e:\文件名.dmp
方法二:用pl/sql工具导出
这个比较简单,内容是转载来的:
1.导出步骤:
1.1. tools ->export user object 选择选项,导出.sql文件
说明:导出的是建表语句(包括存储结构)。
1.2. tools ->export tables-> Oracle Export 选择选项导出.dmp文件
说明:包含三种导出方式,三种方式都能导出表结构以及数据,如下:
Oracle Export
Sql Insert
PL/SQL Developer
第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最为广泛 。
第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下: table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead),如果数据库里面有这些字段的表很少,也是可以的,你可以查出哪些表有这些字段,语句如下
| select table_name,column_name,data_type from user_tab_columns where data_type='CLOB'; |
第三种是导出为.pde格式的,.pde为Pl/sql developer自有的文件格式,只能用Pl/sql developer自己导入导出,不能用编辑器查看。
这里需要说明的是: 我安装的oracle客户端版本高于服务端的版本,这个时候导出dmp是无法成功的,原因不太清楚,没办法我就选择了第三种方法,导出.pde,因为我的表里有clob字段。
2.导入步骤:
a.tools->import tables->SQL Inserts 导入.sql文件。
b. tools->import talbes->Oracle Import然后再导入dmp文件。
这一步操作要和你导出数据的一致,假如export tables 生成的是pde,那么这里导入时也选择第三种Pl/sql developer进行导入,其他同样
说明:和导出类似,具体参考PL/SQL Developer操作手册,另外,导入之前最好把以前的表删除,当然导入另外数据库除外。
我在实施的过程中,也遇到一些问题,因为新的数据库上用户不一样了,而且表空间也不一样了,所以要做如下的修改,有三种方法。
|
1
2
3
|
alter
tablespace CICHR rename
to
CICHR_BAK;
alter
tablespace USERS rename
to
CICHR;
|
|
1
2
3
4
|
alter
tablespace CICHR rename
to
USERS;
alter
tablespace CICHR_BAK rename
to
CICHR;
|
|
1
2
3
|
alter
tablespace CICHR rename
to
CICHR_BAK;
alter
tablespace USERS rename
to
CICHR;
|
|
1
2
3
|
alter
tablespace CICHR rename
to
USERS;
alter
tablespace CICHR_BAK rename
to
CICHR;
|
1323

被折叠的 条评论
为什么被折叠?



