背景:做为一名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
总结
以上是编程之家为你收集整理的oracle数据库迁移步骤思路全部内容,希望文章能够帮你解决oracle数据库迁移步骤思路所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。