oracle数据库迁移步骤思路

简介:

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

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

 

步骤思路 

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

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

 

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

1
2
3
4
5
SQL> select username,default_tablespace  from  dba_users where username  = 'IRP' ;       
        
USERNAME                       DEFAULT_TABLESPACE       
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -       
IRP                                     IRP


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

1
2
3
4
5
SQL> select DISTINCT owner ,tablespace_name  from  dba_extents where owner like  'IRP' ;       
        
OWNER                          TABLESPACE_NAME       
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -       
IRP                                  IRP


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

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


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

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

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
创建大文件表空间
CREATE BIGFILE TABLESPACE  "IRP"  DATAFILE  'D:\app\oracle\oradata\orcl\irp.dbf'  SIZE  100M  AUTOEXTEND ON  NEXT  100M  MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
  
创建默认表空间
或者 CREATE TABLESPACE  "IRP"  DATAFILE  'D:\app\oracle\oradata\orcl\irp.dbf'  SIZE  100M  AUTOEXTEND ON  NEXT  100M  MAXSIZE  10000M  LOGGING EXTENT MANAGEMENT LOCAL;
  
创建用户      
CREATE USER  "IRP"  PROFILE  "DEFAULT"  IDENTIFIED BY  "IRP"  DEFAULT TABLESPACE  "IRP"  TEMPORARY TABLESPACE  "TEMP"  ACCOUNT UNLOCK;
  
授权      
GRANT  "CONNECT"  TO  "IRP" ;       
GRANT  "RESOURCE"  TO   "IRP" ;       
GRANT unlimited tablespace TO  "IRP" ;

 

注: BigFile表空间只能创建一个datafile数据文件,SmallFile表空间最多可以创建1024个数据文件

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
查看是否存在该用户SQL> select username  from  dba_users where username = 'IRP' ;      
删除用户及其拥有的所有对象
drop user IRP cascade;
  
查看这个用户下面是否有对象;
select object_type,count( * from  all_objects where owner = 'IRP'  group by object_type
  
        OBJECT_TYPE           COUNT( * )
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - - - - - - -
1     SEQUENCE     3      
2     PROCEDURE     5       
3     LOB     139       
4     PACKAGE     3       
5     PACKAGE BODY     2       
6     TRIGGER     1       
7     TABLE     384       
8     INDEX     426       
9     FUNCTION     6

此时如果这个用户在连接,drop会出错,必须先杀掉用户的session,然后再drop user

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
构建杀掉IRP用户session的语句并执行,
SELECT  'alter system kill session ' ' '||SID||' , '||SERIAL#||' ' ' immediate;'  FROM V$SESSION WHERE USERNAME = 'IRP' ;
 
上面的语句是构建出杀掉IRP用户session的语句,再复制这些语句,粘贴到sqlplus中执行,来杀掉IRP的session。
'ALTERSYSTEMKILLSESSION' ' '||SID||' , '||SERIAL#||' ' 'IMMEDIATE;'      
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
alter system kill session  '9,42043'  immediate;      
alter system kill session  '10,9137'  immediate;       
alter system kill session  '72,17487'  immediate;       
alter system kill session  '84,3280'  immediate;       
alter system kill session  '91,976'  immediate;       
alter system kill session  '100,13516'  immediate;       
alter system kill session  '111,5973'  immediate;       
alter system kill session  '115,4751'  immediate;       
alter system kill session  '120,10356'  immediate;       
alter system kill session  '211,4075'  immediate;       
alter system kill session  '216,48068'  immediate;


8.最后在B上导入数据

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

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


本文转自pizibaidu 51CTO博客,原文链接:http://blog.51cto.com/pizibaidu/1854468,如需转载请自行联系原作者
相关文章
|
12天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
52 7
|
30天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2
|
12天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
40 5
|
30天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(2)
Oracle数据库基本概念理解(2)
13 1
|
4天前
|
存储 Oracle 关系型数据库
Oracle的模式与模式对象:数据库的“城市规划师”
【4月更文挑战第19天】在Oracle数据库中,模式是用户对象的集合,相当于数据库的城市规划,包含表、视图、索引等模式对象。模式对象是数据存储结构,如表用于存储数据,视图提供不同查看角度,索引加速数据定位。良好的模式与模式对象设计关乎数据效率、安全和稳定性。规划时需考虑业务需求、性能、安全和可扩展性,以构建高效数据库环境,支持企业业务发展。
|
12天前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
35 7
|
30天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(1)
Oracle数据库基本概念理解(1)
13 1
|
Oracle 关系型数据库 数据库
oracle数据库控制文件的备份和恢复之三RMAN自动备份和恢复
使用RMAN自动备份的控制文件向数据库中恢复控制文件
310 0
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库
oracle数据库控制文件的备份和恢复之一手动备份和恢复
实验步骤:手动备份和恢复oracle控制文件
517 0

推荐镜像

更多