oracle数据库迁移步骤思路

前端之家收集整理的这篇文章主要介绍了oracle数据库迁移步骤思路前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

步骤思路

1.从 A 上导出数据文件

sqlplus/nolog
conn/assysdba
EXPIRP/IRPBUFFER=64000FILE=D:\test.DMPlog=D:\test.logoWNER=IRP

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

Syntaxhighlighting/OutliningIndicators/None.gif">

sql>selectusername,default_tablespacefromdba_userswhereusername='IRP';

USERNAMEDEFAULT_TABLESPACE
------------------------------------------------------------
IRPIRP


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

sql>selectDISTINCTowner,tablespace_namefromdba_extentswhereownerlike'IRP';

OWNERTABLESPACE_NAME
------------------------------------------------------------
IRPIRP


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

sql>selectfile_name,tablespace_namefromdba_data_fileswheretablespace_namein'IRP';
FILE_NAMetaBLESPACE_NAME
----------------------------------------------------------------------
D:\APP\ADMINISTRATOR\ORADATA\ORCL\IRP.DBFIRP

如果用户使用多个表空间,查询语句如下
selectfile_name,tablespace_namefromdba_data_fileswheretablespace_namein('IRP1','IRP2');


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

selectnamefromv$tablespacewherenamein'IRP'
查找不到,说明没有这个两个表空间,需要创建。

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

创建大文件表空间
CREATEBIGFILETABLESPACE"IRP"DATAFILE'D:\app\oracle\oradata\orcl\irp.dbf'SIZE100MAUTOEXTENDONNEXT100MMAXSIZEUNLIMITEDLOGGINGEXTENTMANAGEMENTLOCALSEGMENTSPACEMANAGEMENTAUTO;

创建默认表空间
或者CREATETABLESPACE"IRP"DATAFILE'D:\app\oracle\oradata\orcl\irp.dbf'SIZE100MAUTOEXTENDONNEXT100MMAXSIZE10000MLOGGINGEXTENTMANAGEMENTLOCAL;

创建用户
CREATEUSER"IRP"PROFILE"DEFAULT"IDENTIFIEDBY"IRP"DEFAULTTABLESPACE"IRP"TEMPORARYTABLESPACE"TEMP"ACCOUNTUNLOCK;

授权
GRANT"CONNECT"TO"IRP";
GRANT"RESOURCE"TO"IRP";
GRANTunlimitedtablespaceTO"IRP";

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

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

查看是否存在该用户sql>selectusernamefromdba_userswhereusername='IRP';
删除用户及其拥有的所有对象
dropuserIRPcascade;

查看这个用户下面是否有对象;
selectobject_type,count(*)fromall_objectswhereowner='IRP'groupbyobject_type

OBJECT_TYPECOUNT(*)
----------------------------------------------------------------------
1SEQUENCE3
2PROCEDURE5
3LOB139
4PACKAGE3
5PACKAGEBODY2
6TRIGGER1
7TABLE384
8INDEX426
9FUNCTION6

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

构建杀掉IRP用户session的语句并执行,SELECT'altersystemkillsession'''||SID||','||SERIAL#||'''immediate;'FROMV$SESSIONWHEREUSERNAME='IRP';

上面的语句是构建出杀掉IRP用户session的语句,再复制这些语句,粘贴到sqlplus中执行,来杀掉IRP的session。
'ALTERSYSTEMKILLSESSION'''||SID||','||SERIAL#||'''IMMEDIATE;'
--------------------------------------------------------------
altersystemkillsession'9,42043'immediate;
altersystemkillsession'10,9137'immediate;
altersystemkillsession'72,17487'immediate;
altersystemkillsession'84,3280'immediate;
altersystemkillsession'91,976'immediate;
altersystemkillsession'100,13516'immediate;
altersystemkillsession'111,5973'immediate;
altersystemkillsession'115,4751'immediate;
altersystemkillsession'120,10356'immediate;
altersystemkillsession'211,4075'immediate;
altersystemkillsession'216,48068'immediate;


8.最后在B上导入数据

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

IMPtest/testBUFFER=64000FILE=D:\test.DMPlog=D:\imptest.logFROMUSER=IRPTOUSER=IRP
原文链接:https://www.f2er.com/oracle/212543.html

猜你在找的Oracle相关文章