天天看点

oracle数据库迁移步骤思路

背景:做为一名DBA,oracle数据库迁移是经常要遇到的事情,正好最近我也在迁移一个业务系统,数据库就是oracle,顺便记录一下。

说明:为了方便说明,旧的数据库称为A,新的为B。用户和密码是IRP/IRP ,  B是全新的环境。

步骤思路: 

1.从 A 上导出数据文件。

1 2 3 <code>sqlplus </code><code>/</code><code>nolog</code> <code>conn </code><code>/</code> <code>as sysdba</code> <code>EXP IRP</code><code>/</code><code>IRP </code><code>BUFFER</code><code>=</code><code>64000</code> <code>FILE</code><code>=</code><code>D:\test.DMP log</code><code>=</code><code>D:\test.log OWNER</code><code>=</code><code>IRP</code>

2.在A机器上查看用户默认表空间,以便导入时创建一样的表空间

oracle数据库迁移步骤思路
4 5 <code>SQL&gt; select username,default_tablespace </code><code>from</code> <code>dba_users where username </code><code>=</code><code>'IRP'</code><code>;       </code> <code>       </code>  <code>USERNAME                       DEFAULT_TABLESPACE       </code> <code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code> <code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>        <code>IRP                                     IRP</code>

3.查看用户使用的表空间

<code>SQL&gt; select DISTINCT owner ,tablespace_name </code><code>from</code> <code>dba_extents where owner like </code><code>'IRP'</code><code>;       </code> <code>OWNER                          TABLESPACE_NAME       </code> <code>IRP                                  IRP</code>

4.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件。

6 7 <code>SQL&gt; select file_name,tablespace_name </code><code>from</code> <code>dba_data_files where tablespace_name  </code><code>in</code> <code>'IRP'</code><code>;                   </code> <code>FILE_NAME                                          TABLESPACE_NAME       </code> <code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code> <code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>        <code>D:\APP\ADMINISTRATOR\ORADATA\ORCL\IRP.DBF      IRP</code> <code> </code>  <code>如果用户使用多个表空间,查询语句如下</code> <code>select file_name,tablespace_name </code><code>from</code> <code>dba_data_files where tablespace_name  </code><code>in</code> <code>(</code><code>'IRP1'</code><code>,</code><code>'IRP2'</code><code>);</code>

5.检查B机器的表空间,看是否存在IRP(如果是新的服务器,不需要这一步)

<code>select name </code><code>from</code> <code>v$tablespace where name </code><code>in</code> <code>'IRP'</code>       <code>查找不到,说明没有这个两个表空间,需要创建。</code>

6.在B上创建表空间、用户并授权

8 9 10 11 12 13 <code>创建大文件表空间</code> <code>CREATE BIGFILE TABLESPACE </code><code>"IRP"</code> <code>DATAFILE </code><code>'D:\app\oracle\oradata\orcl\irp.dbf'</code> <code>SIZE </code><code>100M</code> <code>AUTOEXTEND ON </code><code>NEXT</code> <code>100M</code> <code>MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;</code> <code>创建默认表空间</code> <code>或者 CREATE TABLESPACE </code><code>"IRP"</code> <code>DATAFILE </code><code>'D:\app\oracle\oradata\orcl\irp.dbf'</code> <code>SIZE </code><code>100M</code> <code>AUTOEXTEND ON </code><code>NEXT</code> <code>100M</code> <code>MAXSIZE </code><code>10000M</code> <code>LOGGING EXTENT MANAGEMENT LOCAL;</code> <code>创建用户      </code> <code>CREATE USER </code><code>"IRP"</code> <code>PROFILE </code><code>"DEFAULT"</code> <code>IDENTIFIED BY </code><code>"IRP"</code> <code>DEFAULT TABLESPACE </code><code>"IRP"</code> <code>TEMPORARY TABLESPACE </code><code>"TEMP"</code> <code>ACCOUNT UNLOCK;</code> <code>授权      </code> <code>GRANT </code><code>"CONNECT"</code> <code>TO </code><code>"IRP"</code><code>;       </code> <code>GRANT </code><code>"RESOURCE"</code> <code>TO  </code><code>"IRP"</code><code>;       </code> <code>GRANT unlimited tablespace TO </code><code>"IRP"</code><code>;</code> 注: BigFile表空间只能创建一个datafile数据文件,SmallFile表空间最多可以创建1024个数据文件

7.如果在服务器B上已经存在该用户,怎么样删除该用户.

14

15

16

17

18

<code>查看是否存在该用户SQL&gt; select username </code><code>from</code> <code>dba_users where username</code><code>=</code><code>'IRP'</code><code>;      </code>

<code>删除用户及其拥有的所有对象</code>

<code>drop user IRP cascade;</code>

<code>查看这个用户下面是否有对象;</code>

<code>select object_type,count(</code><code>*</code><code>) </code><code>from</code> <code>all_objects where owner</code><code>=</code><code>'IRP'</code> <code>group by object_type</code>

<code>       </code><code>OBJECT_TYPE           COUNT(</code><code>*</code><code>)</code>

<code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code> <code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>

<code>1</code>    <code>SEQUENCE    </code><code>3</code>      

<code>2</code>    <code>PROCEDURE    </code><code>5</code>       

<code>3</code>    <code>LOB    </code><code>139</code>       

<code>4</code>    <code>PACKAGE    </code><code>3</code>       

<code>5</code>    <code>PACKAGE BODY    </code><code>2</code>       

<code>6</code>    <code>TRIGGER    </code><code>1</code>       

<code>7</code>    <code>TABLE    </code><code>384</code>       

<code>8</code>    <code>INDEX    </code><code>426</code>       

<code>9</code>    <code>FUNCTION    </code><code>6</code>

此时如果这个用户在连接,drop会出错,必须先杀掉用户的session,然后再drop user <code>构建杀掉IRP用户session的语句并执行,</code> <code>SELECT </code><code>'alter system kill session '</code><code>'</code><code>'||SID||'</code><code>,</code><code>'||SERIAL#||'</code><code>'</code><code>' immediate;'</code> <code>FROM V$SESSION WHERE USERNAME</code><code>=</code><code>'IRP'</code><code>;</code> <code>上面的语句是构建出杀掉IRP用户session的语句,再复制这些语句,粘贴到sqlplus中执行,来杀掉IRP的session。</code> <code>'ALTERSYSTEMKILLSESSION'</code><code>'</code><code>'||SID||'</code><code>,</code><code>'||SERIAL#||'</code><code>'</code><code>'IMMEDIATE;'</code>       <code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code> <code>alter system kill session </code><code>'9,42043'</code> <code>immediate;      </code> <code>alter system kill session </code><code>'10,9137'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'72,17487'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'84,3280'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'91,976'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'100,13516'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'111,5973'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'115,4751'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'120,10356'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'211,4075'</code> <code>immediate;       </code> <code>alter system kill session </code><code>'216,48068'</code> <code>immediate;</code>

8.最后在B上导入数据

一定注意执行imp时要退出sqlplus,直接在命令行执行。

<code>IMP test</code><code>/</code><code>test </code><code>BUFFER</code><code>=</code><code>64000</code> <code>FILE</code><code>=</code><code>D:\test.DMP log</code><code>=</code><code>D:\imptest.log FROMUSER</code><code>=</code><code>IRP TOUSER</code><code>=</code><code>IRP</code>

<code></code>

本文转自pizibaidu 51CTO博客,原文链接:http://blog.51cto.com/pizibaidu/1854468,如需转载请自行联系原作者