Oracle数据库搬家牵扯出的一些知识点记录

工作原因,对开发服务器的数据库进行了迁移,实际执行操作之前查了一下迁移oracle数据库的可行方案,最后用了 exp/imp
进行导出导入(这个比较简单),以及附带看了一些表空间相关的知识点(重点哟),下面是一些记录。

一、exp导出整个实例数据

exp ****/****@**** full=y compress=n file=G:\Share\compress_N\****.dmp log=G:\Share\compress_N\exp.log

上述命令是我导出时采用的命令,其中用户名,密码及实例名应根据需求自己修改。

full 参数代表导出的是整个实例的数据,若只想导出特定用户的相关数据,可通过owner参数指定。

compress参数默认为Y, 这里并不是压缩dmp文件的意思,而是代表对该表空间下的文件碎片进行整理(数据存放的时候可能会在磁盘产生的碎片文件),同时很重要的一点是指定为Y时,表的尺寸会定义为该表当前实际占用的空间尺寸。

即:或许你曾经在某个表空间内存放了一千万的数据,使得文件占用了10G或者更大的空间。后来因为某些原因删除了数据,而且也没有对表空间进行压缩整理,此时使用exp导出并指定compress为y,在使用imp导入至新的实例后,你会发现,即使表空间内并未存储任何大数据,但是新生成的表空间文件仍然占用了10个G或者更大的空间。

grant参数是导出授权相关的信息,默认为Y,此处便省略了,但是这一点还是要知道的。

关于exp的其他参数,可以使用 exp -help 自行查阅,也可阅读 ColinJames–Oracle数据库exp和imp方式导数据 进行查看。

二、imp导入的相关操作

1、创建一个数据库实例,根据情况选择数据库存放位置,为了方便管理,建议不要使用默认的存放位置。

2、如果导出时使用了dba权限的用户,那么在导出时也应该使用具有dba权限的用户。所以,根据导出时的用户是否为数据库自带用户,是否具有dba权限判断是否需要创建用户并赋予DBA权限。如果导出时使用的是数据库自建用户,例如system,sys,而且也不想修改数据库文件所在的位置,请跳过步骤3、步骤4、步骤5创建表空间和用户的操作。

3、在新数据库下创建与原实例相同的表空间。(导入后补充:根据导入时的日志看,直接使用imp应该也可以导入,但是生成的表空间文件应该是与原来的存放位置相同,笔者未进行直接导入的测试,请自行测试。如果不想将表空间文件与原数据库的目录一致,还是需要创建好以后再导入)

​ 创建时可使用下面的命令在原数据库下执行,批量生成sql语句。

推荐使用本条语句
创建所有已存在的表空间
tsds 意指 tablespace definition statement
v$tablespace是一个内置视图,可以查询本实例下的所有表空间,其余与上方类似。

select 'create tablespace ' || space ||
       ' Datafile "数据文件存放路径' || space ||
       '.dbf" size 20M autoextend on next 20M maxsize unlimited extent management local;' as tsds
  from (select name as space from v$tablespace where name not in('USERS','SYSTEM','SYSAUX','TEMP'));

–创建所有用户的默认表空间

–dba_users 内存放着用户及表空间的对应关系,产生的语句会创建所有用户的默认表空间,数据文件的初始大小及扩展容量可自行修改,另外生成的sql语句内需要自行指定文件存放位置并将 “ 替换为 ‘ 才可正常运行。(一般文本处理软件都可以批量替换)

elect 'create tablespace ' || space ||
       ' Datafile "数据文件存放路径' || space ||
       '.dbf" size 20M autoextend on next 20M maxsize unlimited extent management local;' as tsds
  from (select distinct default_tablespace as space from dba_users u where u.default_tablespace not in('USERS','SYSTEM','SYSAUX','TEMP') );

–鉴于有些人建用户时忘记调整默认表空间,建表时却指定了某个表空间,所以最好使用第一条语句

4、创建用户并指定默认表空间。

​ 同样提供了如下生成sql的语句,需要在原数据库下执行

– 此处需要自行指定用户密码

select 'create user ' || username 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值