oracle9i中test下所有数据迁移到oracle11G中
2014-01-22 17:27
211 查看
前两天客户要求换数据库,有原来的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),如果数据库里面有这些字段的表很少,也是可以的,你可以查出哪些表有这些字段,语句如下
然后导出的时候不要选择这些表,最后手动做下。
第三种是导出为.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、修改表空间名称(账号:sys/oracleas SYSDBA 登录)
?
--2、导出用户
expcichr-20110804/cichr-20110804@db_192.168.196.232 file=cichr-232-20110804.dmplog=cichr-232-20110804-exp.log statistics = none
--此dmp文件表空间现在应该为CICHR
--3、将表空间名称修改回去(账号:sys/oracleas SYSDBA 登录)
?
--4、导入到新创建用户cichr_test(默认表空间为CICHR,临时表空间为TEMP,connect\dba\resource权限,unlimited tablespace)
impcichr_test/cichr_test@db_192.168.196.232 file=c:\cichr-232-20110804.dmp full=ylog=c:\cichr_test-20110804-imp.log
或者:
impcichr_test/cichr_test@db_192.168.196.232 file=c:\cichr-232-20110804.dmpfromuser=cichr-20110804 touser=cichr_test tablespace=CICHRlog=c:\cichr_test-20110804-imp.log
至此所有数据迁移至新的表空间CICHR。
------------------------------------------
方法二:
1、通过PL/SQL,cichr-20110804/cichr-20110804登录,导出数据库表结构(Tools-Export User Object),导出所有用户对象到D:\structs.sql;
2、使用EditPlus打开structs.sql对表空间名称进行整体替换(USERS替换为CICHR),对用户名进行整体替换(cichr-20110804替换为cichr_test);
3、Tools-Export Tables,导出D:/data.pde (PL/SQL Developer)-所有表数据;
4、创建用户cichr_test(默认表空间为CICHR,临时表空间为TEMP,connect\dba\resource权限,unlimited tablespace);
5、Command Window,执行命令:SQL>@D:structs.sql 回车,创建数据库表结构(所属表空间为CICHR);
6、导入数据表数据,Tools-Import Tables,选择刚刚导出的数据文件D:/data.pde。
至此所有数据迁移至新的表空间CICHR。
-------------------------------------------
方法三:
--1、修改表空间名称(账号:sys/oracleas SYSDBA 登录)
?
--2、通过PL/SQL,cichr_test/cichr_test登录,
Tools-Export Tables,导出D:/data.dmp (oracle Export)-所有表结构及表数据,现在表数据所属表空间应该为CICHR。
--3、将表空间名称修改回去(账号:sys/oracleas SYSDBA 登录)
?
--4、通过PL/SQL, cichr_test/cichr_test登录,
1)、删除Drop 所有tables;
2)、Tools-Import Tables,导入D:/data.dmp(oracle Export)-所有表结构及表数据。
至此所有数据迁移至新的表空间CICHR
整个的思路如下,首先在本地服务器的数据库中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、修改表空间名称(账号:sys/oracleas SYSDBA 登录)
?
expcichr-20110804/cichr-20110804@db_192.168.196.232 file=cichr-232-20110804.dmplog=cichr-232-20110804-exp.log statistics = none
--此dmp文件表空间现在应该为CICHR
--3、将表空间名称修改回去(账号:sys/oracleas SYSDBA 登录)
?
impcichr_test/cichr_test@db_192.168.196.232 file=c:\cichr-232-20110804.dmp full=ylog=c:\cichr_test-20110804-imp.log
或者:
impcichr_test/cichr_test@db_192.168.196.232 file=c:\cichr-232-20110804.dmpfromuser=cichr-20110804 touser=cichr_test tablespace=CICHRlog=c:\cichr_test-20110804-imp.log
至此所有数据迁移至新的表空间CICHR。
------------------------------------------
方法二:
1、通过PL/SQL,cichr-20110804/cichr-20110804登录,导出数据库表结构(Tools-Export User Object),导出所有用户对象到D:\structs.sql;
2、使用EditPlus打开structs.sql对表空间名称进行整体替换(USERS替换为CICHR),对用户名进行整体替换(cichr-20110804替换为cichr_test);
3、Tools-Export Tables,导出D:/data.pde (PL/SQL Developer)-所有表数据;
4、创建用户cichr_test(默认表空间为CICHR,临时表空间为TEMP,connect\dba\resource权限,unlimited tablespace);
5、Command Window,执行命令:SQL>@D:structs.sql 回车,创建数据库表结构(所属表空间为CICHR);
6、导入数据表数据,Tools-Import Tables,选择刚刚导出的数据文件D:/data.pde。
至此所有数据迁移至新的表空间CICHR。
-------------------------------------------
方法三:
--1、修改表空间名称(账号:sys/oracleas SYSDBA 登录)
?
Tools-Export Tables,导出D:/data.dmp (oracle Export)-所有表结构及表数据,现在表数据所属表空间应该为CICHR。
--3、将表空间名称修改回去(账号:sys/oracleas SYSDBA 登录)
?
1)、删除Drop 所有tables;
2)、Tools-Import Tables,导入D:/data.dmp(oracle Export)-所有表结构及表数据。
至此所有数据迁移至新的表空间CICHR
相关文章推荐
- 仅通过SQL备份文件将MOSS服务器场及所有网站数据迁移到新的一台服务器上 推荐
- 仅通过SQL备份文件将MOSS服务器场及所有网站数据迁移到新的一台服务器上
- PostgreSQL: 数据迁移之序列问题(也可以使用在所有使用序列数据库上,比如Oracle)
- 仅通过SQL备份文件将MOSS服务器场及所有网站数据迁移到新的一台服务器上
- 迁移数据库——复制所有数据文件,启动数据库
- SQL实现删除所有表数据
- Hbase集群间数据迁移方法总结(包括不通信集群)
- 支持度与置信度(找出所有规则)--《python数据挖掘入门与实践》
- 数据库表初始化,删除所有数据后主键ID从1开始
- 扩展UltraGrid控件实现对所有数据行的全选功能
- SQL Server至DB2的数据迁移(1)
- mongo数据迁移三招
- js设置剪贴板数据 event.clipboardData.setData("text/plain",value);不起作用,并非所有的浏览器都支持,限制了
- HBase集群间不停服迁移数据
- CODIS2.x原理 之 数据迁移流程
- mysql中kill掉所有锁表的进程爬虫抓取数据分析
- Oracle 12C 新特性之在线重命名、迁移活跃的数据文件
- SQL Server Migration Assistant for MySQL(SSMA),数据迁移后的一些善后操作
- 数据库迁移(SQL SERVER导入数据到MySql)
- 读写xml所有节点个人小结 和 读取xml节点的数据总结