Oracle创建表空间;Oracle数据库表数据迁移总结;

Oracle创建表空间

场景描述:

       为了更好的管理数据库中的表空间以及表,所以给项目创建了对应的表空间以及用户

查询其他表空间信息:

--查看表空间及datafile文件名
SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space 
FROM dba_data_files 
ORDER BY tablespace_name; 

       需要注意的是,windows服务器和linux服务器上的oracle路径是不一样的,后面的sql语句是windows下的,如果是oracle只需要换一下dbf路径。 

 创建表空间:

-- windows 创建表空间
create tablespace test
datafile 'D:\APPHIS\ADMINISTRATOR\ORADATA\JDYY\test.DBF' 
size 1024m 
autoextend on;

-- linux 创建表空间
create tablespace xxx
datafile '/data/oracle/app/oracle/JDYY/test.dbf' 
size 1024m 
autoextend on;

       其中,“xxx.bdf”要与tablespace对应,表空间1024m大小差不多了,设置“autoextend on”自动扩展

创建用户、授权:

--创建用户
create user test identified by test
default tablespace test
temporary tablespace TEMP;
--授权
grant create session,connect,resource,dba to test;

       “default tablespace”为默认表空间,用户建表默认放到该表空间下

数据库表迁移

--查看表空间下的表
select OWNER,TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='表空间名';

 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

方式一:(从同个服务器的一个表空间转移到另一个表空间下)

       因为其他同事没有按照上述流程创建表空间,只是创建了一个用户,用户的表只是放到了USERS表空间下,这样就很混乱,所以要将USERS下的表转移到新建的表空间下,执行如下命令,生成表有某一表空间转移到其他表空间下的sql语句并执行。

--拼出转移sql
select 'alter table ' ||table_name || ' move tablespace 目标表空间名;' 
from user_all_tables where tablespace_name='待转移表空间名';
--生成语句如下
alter table 表名 move tablespace 目标表空间名;

 

--修改用户默认表空间
alter user 用户 default tablespace 表空间名;

 

方式二:(导出dmp文件,并重新导入其他表空间,该方式也适合导入到其他服务器的oracle)

注意点:

  •   dmp方式导入,导入的时候使用什么用户,则OWNER是当前用户;
  • 导出的时候表空间的信息已写入文件中,导入的时候,会自动将表导入到对应的表空间下,如果没有这个表空间则会报错。

       有两种方式修改指定表空间,一种是通过命令行(没有尝试,觉得不是很方便),一种是使用文本编辑器修改里面的tablespace信息。使用记事本(未尝试)、sublime text(一大串数字,无法修改)、ultraEdit(使用十六进制编辑,可以修改,但是导入报错,如下)、notepad++(直接可以打开,直接修改,运行正确),将tablespace信息修改为需要的信息,如图

       补充一点:如果是使用dmp方式导入到其他服务器的oracle,序列、存储过程、方法则需要单独从源数据库导出并导入目标数据库  

IMP-00069: 无法转换为环境国家字符集句柄

 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

方式三:(使用kettle工具将数据导入到目标表空间下,该方式也适合导入到其他服务器Oracle下)

       在目标表空间创建好表,然后进行抽取数据过去(配置kettle过程应该可以设置生成表,还未尝试) 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值