本文共 2632 字,大约阅读时间需要 8 分钟。
本文详细阐述了将一台运行Oracle 10.2.0.5 Unix系统的数据库迁移到Windows环境的完整迁移方案。以下是迁移的关键步骤和注意事项。
在开始迁移之前,我们需要了解数据库的具体情况,包括数据库大小、字符集设置以及当前的版本信息。
数据库大小:使用以下SQL语句计算数据库总大小。
SQL> select round(sum(bytes)/1024/1024/1024,2) from dba_segments;
字符集设置:
SQL> select * from nls_database_parameters;
根据结果,确认数据库字符集为US7ASCII,国家字符集为AL16UTF16,数据库版本为10.2.0.4.0。
用户数量:使用以下SQL语句统计需要迁移的用户数量。
SQL> select 'create user '||a.username||' identified by values '''||b.password||''';' from dba_users a,user$ b whereb.name=a.username and a.username not like '%SYS%' and a.account_status='OPEN';
使用EXP/IMP工具进行数据导出。EXP是Oracle的数据导出工具,IMP是数据导入工具。
$imp system/oracle file=/u01/dump/exp_full_20190325.dmp log=/u01/dump/exp_full_20190325.log full=y
请注意,文件传输时务必选择二进制传输方式,以避免数据损坏。
在目标环境中,确保数据库参数与源环境一致。主要参数包括:
在目标环境中创建用户并授予必要权限。以下是具体操作步骤:
SQL> select username from dba_users;
SQL> select 'create user '||a.username||' identified by values '''||b.password||''';' from dba_users a,user$ b whereb.name=a.username and a.username not like '%SYS%' and a.account_status='OPEN';
SQL> select 'grant '||GRANTED_ROLE||' TO '||GRANTEE||';' FROM DBA_ROLE_PRIVS;
SQL> select 'grant '||PRIVILEGE||' to '||GRANTEE||';' from dba_sys_privs;
SQL> select 'alter user '||username||' default tablespace '||DEFAULT_TABLESPACE||';' from dba_users where ACCOUNT_STATUS='OPEN' and username not like '%SYS%';
使用IMP工具将数据导入目标数据库。
$imp user/pwd file=/u01/dump/exp_full_20190325.dmp log=/u01/dump/imp_full_20190325.log full=y commit=y feedback=10000 buffer=10240000 ignore=y
在迁移完成后,进行数据对比,确保数据完整性。
SQL> select object_type,count(*) from dba_objects group by object_type order by 2;
SQL> select object_type,count(*) from dba_objects where owner='SYS' group by object_type order by 2;
SQL> select round(sum(bytes)/1024/1024/1024,2) from dba_segments;
SQL> select tablespace_name,count(*) from dba_segments group by tablespace_name;
SQL> select SEGMENT_TYPE,count(*) from dba_segments where tablespace_name='USERS' group by SEGMENT_TYPE;
在迁移完成后,恢复默认参数设置:
SQL> alter system set workarea_size_policy =AUTO;SQL> alter system set sort_area_size=65536 scope=spfile;SQL> alter system set db_file_multiblock_read_count= 16;
对失效对象进行重新编译:
@$ORACLE_HOME/rdbms/admin/utlrp.sql
通过以上步骤,可以顺利完成Oracle数据库从Unix环境迁移到Windows环境的迁移工作。
转载地址:http://xilyz.baihongyu.com/