Oracle扩展表空间以及数据迁移

扩展表空间
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库,所有的数据库对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。一旦表空间占满了,再往里面插数据,就会有提示。

具体表空间步骤如下所示:
① 查看表空间的名字及文件所在位置。

select tablespace_name,file_id,file_name,round(bytes / (1024 * 1024), 0) total_space
from sys.dba_data_files order by tablespace_name;


② 查询表空间信息。

select username,default_tablespace,t.* from dba_users t


③ 查询当前表空间下使用情况。(从下面查询结果看出,这个表空间已经满了,存不下任何东西,需要进行扩展表空间)

select a.tablespace_name,
       a.bytes / 1024 / 1024 "sum MB",
       (a.bytes - b.bytes) / 1024 / 1024 "used MB",
       b.bytes / 1024 / 1024 "free MB",
       round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "used%"
  from (select tablespace_name, sum(bytes) bytes
          from dba_data_files
         group by tablespace_name) a,
       (select tablespace_name, sum(bytes) bytes, max(bytes) largest
          from dba_free_space
         group by tablespace_name) b
 where a.tablespace_name = b.tablespace_name
 order by ((a.bytes - b.bytes) / a.bytes) desc;


④ 扩展表空间到2G(执行扩展语句后即可操作数据库,无需重启)。

alter database datafile '/u01/app/oracle/oracledata/ebidding_ztb_data.dbf' resize 2048M;

数据迁移
Oracle数据迁移在日常的开发工作中是必须掌握的一个操作,如今有很多工具可以做数据迁移的,如:navicat等。本文中数据迁移不借助工具,仅使用Oracle原始的命令数据迁移。数据迁移的情景目前我总结一下两种情况:

一、同一个用户/表空间中的数据迁移步骤如下:
① 登陆oracle
     命令:su - oracle
     
② 创建备份文件夹并授权(本文中文件夹路径为:/u01/dbbak
     命令:mkdir dbbak
                sudo chmod 777 dbbak
③ 建立导出文件所在目录(该命令需要登陆数据库才可以执行,即输入命令:sqlplus / as sysdba
     命令:create or replace directory DBBAK as  '/u01/dbbak';
                select * from dba_directories;(查看命令)
④ 备份dmp文件(用户/密码是数据库登陆用户和密码,dbbak.dmp和dbbak.log中dbbak为自定义名称
     命令:expdp 用户/密码 schemas=用户 directory=DBBAK dumpfile=dbbak.dmp logfile=dbbak.log
     
⑤ 还原dmp文件
     命令:impdp 用户/密码 schemas=用户 directory=DBBAK dumpfile=dbbak.dmp logfile=dbbak.log
注意:有一些情况下,执行备份或者还原命令会报错:directory name DBBAK is invalid,其主要的原因是权限问题,请更换拥有权限的账号密码即可。

二、不同用户/表空间中的数据迁移步骤如下:
备份数据如上述第一种情况中,①~④的步骤不变,其变化的是创建用户及还原dmp文件不同。
① 创建用户/表空间
     创建用户命令:create user 用户名  profile default  identified by 密码 default tablespace 表空间名称 temporary tablespace 临时表空间名称 account unlock;
     创建表空间命令:create tablespace 表间名 datafile '数据文件名(自己安装oracle时的路径,如:/u01/app/oracle/oradata/bpas/XXXX.dbf)' size 表空间大小,如:create tablespace data_name datafile 'E:\oracle\oradata\data_name.dbf' size 2000M;
② 授权
     命令:grant dba to 创建的用户名;
                grant connect to 创建的用户名;
                grant resource to  创建的用户名;
                grant create sequence to  创建的用户名;
                grant create session to  创建的用户名;
                grant create any view to  创建的用户名;
                grant create any table to  创建的用户名;
                grant delete any table to  创建的用户名;
                grant insert any table to  创建的用户名;
                grant select any table to  创建的用户名;
                grant update any table to  创建的用户名;
                grant create any index to 创建的用户名;
                grant unlimited tablespace to 创建的用户名;
                grant create any index to 创建的用户名;
③ 还原
     命令:impdp 用户名/密码 directory=DBBAK dumpfile=dbbak.dmp logfile=dbbak.log REMAP_SCHEMA=数据所在用户名:创建的用户名;(用户名称不相同,表空间名称相同)
     命令:impdp 用户名/密码 directory=DBBAK dumpfile=dbbak.dmp logfile=dbbak.log REMAP_SCHEMA=数据所在用户名:创建的用户名 remap_tablespace=数据库所在表空间:创建的表空间;(用户名称不相同,表空间名称也不相同)
注意:如果在还原的过程中,报文件的权限不足的时候,需要退出oracle到linux下,执行相关的授权命令。
     命令:chown -R oracle:oinstall dbbak;(dbbak为备份文件夹,自定义即可)。

、注意不同的命令有不同的还原
     Oracle数据库中,有不同的备份和还原命令,上述中使用的是expdp和impdp命令,除此以外,还有exp和imp命令,切记不能混淆着用。exp和imp的命令如下(以下内容来源于百度):
     基本语法和实例: 
     ①EXP:有三种主要的方式(完全、用户、表) 
     1、完全:EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y 
           如果要执行完全导出,必须具有特殊的权限 
     2、用户模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC 
           这样用户SONIC的所有对象被输出到文件中。 
     3、表模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC) 
           这样用户SONIC的表SONIC就被导出 
     ②IMP:具有三种模式(完全、用户、表) 
     1、完全: IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y 
     2、用户模式: IMP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC 
           这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。 
     3、表模式: EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC) 
           这样用户SONIC的表SONIC就被导入。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值