Oracle10g升级11g
数据迁移
目录
1.调研数据结构
1.1分析
1.1.1 数据库表空间
1.1.2 数据库schema
1.2创建表空间
1.2.1生成创建表空间语句
2.选取方案
2.1.方案筛选
2.1.1.导全库分析
2.1.2导全库结论
2.1.3导表空间分析
2.1.4导表空间结论
2.1.5导方案(schema)分析
2.1.6导方案结论
2.1.7导表方案
2.1.8导方案结论
3.选取工具
3.1工具分析
3.2选取结论
4.数据导出导入
5.补充对象
5.1 导同义词
5.2 导用户
5.3 导角色
1.调研数据结构
1.1分析
1.1.1 数据库表空间
select *
from dba_tablespaces t
where t.tablespace_name not in
('SYSTEM', 'UNDOTBS1', 'SYSAUX', 'TEMP', 'USERS');
1.1.2 数据库schema
select *
from dba_users t
where t.default_tablespace not in ('USERS', 'SYSTEM', 'SYSAUX')
AND T.username not in ('SYS', 'SYSTEM');
1.2创建表空间
1.2.1生成创建表空间语句
--将查询结果中的双引号替换成单引号,即可正常执行!
Select ' Create TABLESPACE ' || tablespace_name || ' DATAFILE ' || '"'||
file_name ||'"' || ' SIZE ' || to_char(ROUND(bytes / 1000000, 0)) ||
'M REUSE AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED ;'
from dba_data_files
where tablespace_name not in ('SYSTEM', 'UNDOTBS1', 'SYSAUX', 'TEMP', 'USERS');
2.选取方案
2.1.方案筛选
2.1.1.导全库分析
10g全库到11g考量因素:数据量(已知oracle10g的dbf是178G)和版本兼容性(查询官方网站得知就expdp工具在Oracle10g全库到11g有未修复的bug,其他途径未知)。
2.1.2导全库结论
数据量大(一次测试周期长),字符集是US7ASCII,版本兼容性有坑,
故:不考虑导全库。
2.1.3导表空间分析
优点:1.导出次数少;
2.全且安全(方法同导schema)
缺点:1.表空间比较大,一个次一个表空间周期长,不太好控制和监测;
2.该库属于OLTP类型库,导表空间存在碎片;
3.没有最佳实践过这种方式。
2.1.4导表空间结论
可以作为第二方案。
2.1.5导方案(schema)分析
优点:1.导出次数少;
2.全且安全(方法同导表空间)。
缺点:1.该库属于OLTP类型库,导schema不存在碎片;
2.有最佳实践过这种方式。
2.1.6导方案结论
可以作为第一方案。
2.1.7导表方案
表比较多,一张一张表导,周期太长,且容易弄混或者漏掉。
2.1.8导方案结论
可以作为补导方案(如果有些表数据不够或新增表等等)。
3.选取工具
3.1工具分析
市面上工具有很多,调研且熟悉的工具是sqldeveloper
优点:1.操作简单(图形化界面操作);
2.oracle官方推出的工具;
3.前期有过调研且写过相关的手册。
3.2选取结论
根据3.1的优点分析选取sqldeveloper作为本次迁移工具。
4.数据导出导入
参见前期写的文档,在明道“oracle数据泵调研之sqldeveloper工具使用”任务下【sqldeveloper数据泵调研说明文档(V329).docx】
5.补充对象
5.1 导同义词
--导出所有同义词
SELECT 'CREATE OR REPLACE PUBLIC SYNONYM ' || '"' || SYNONYM_NAME || '"' ||
' FOR ' || '"' || TABLE_OWNER || '"' || '.' || '"' || TABLE_NAME || '"' || ';'
FROM DBA_SYNONYMS A where A.table_owner not in ('SYS', 'SYSTEM');
5.2 导用户
select ' create user '|| username || ' identified by values ''' ||
password || ''' default tablespace '||
DEFAULT_TABLESPACE || ' TEMPORARY TABLESPACE '
|| TEMPORARY_TABLESPACE ||';'
from dba_users where username not in ('SYS','SYSTEM','DBSNMP');
5.3 导角色
---角色可能有授予表操作权限,还有相互交叉的角色,可能要手工在目标库上运行源库的脚本
select 'create role ' || role || ' ;' from dba_roles where role like 'ROLE%';
dbtiger 2018,3,19
good luck!