重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,使用下面的命令移动:
创新互联专注于惠济企业网站建设,响应式网站,商城网站建设。惠济网站建设公司,为惠济等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
alter table table_name move tablespace tablespace_name;
然后,如果有索引的话必须重建索引:
alter index index_name rebuild tablespace tablespace_name;
当然,可以使用spool来帮助实现多个表的操作.
set header off;
spool /export/home/oracle/alter_tables.sql;
select 'alter table ' || object_name || ' move tablespace users'
from dba_object
where owner = 'XXX' and object_type = 'TABLE';
spool off;
之后执行此sql脚本即可.
同样对于index也做同样的操作.
如果你熟悉Oracle的架构,那么答案是在A SHutDown Instance COPY所有的密码文件,pfile。spfile,建立一样的instanse用的目录, 所有数据文件,redo文件,控制文件到B机器上,用ORADIM建立服务(假设是Windows) 启动 完成如果你不熟悉ORACLE的架构1 在B机器上按你A机器上一样的名字,地方 方法 建立一个instance 2 AB两台机器的instance全部关闭3 A机器上的所有数据文件,redo文件,控制文件COPY到B机器 覆盖4 启动B数据库 OK 完成
使用DMP是比较全面的做法。
这个还是要看你具体需求。
如果只是单纯的需要数据和表的简单结构。
在新用户里面执行:
CREATE TABLE TABLE_NAME AS select * FROM OLD.TABLE_NAME就可以了。
这样的话,数据和表的简单结构就到新用户里面。但是,索引什么之类的没有全部过去。需要自己另外手动创建。既然刚开始学习这个。建议你就用这个方法吧。
表空间是数据库里一个逻辑存储结构,其对应物理结构是数据文件,一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。
您所问的表空间在D盘、E盘的 实际上是数据文件所在的位置。
-- 以上是对于 表空间和数据文件的一个简单的感念,希望lz能先弄明白这个。
-- 移动表空间总的来说有两种办法。一种联机,一种脱机。分别介绍如下:
脱机(可以移动任何表空间中的数据文件,命令为alter database rename file)
SQLshutdown
2:用系统命令移动数据文件,这里lz是win操作系统,可直接复制粘贴
3:sqlplus / as sysdbsa
SQLstartup mount
alter database rename file 'D:/xxxxx' to 'E:/xxxxx'
(注意在alter open之前不要退出)
SQLalter database open;
二:联机(不可移动system表空间,回滚段和临时表空间中的数据文件,命令为alter tablespace )
SQL conn / as sysdba
SQL alter tablespace xxxx offline;
2:在操作系统层面上移动数据文件
3:alter tablespace xxxx rename datafile 'D:/xxxx' to 'E:/xxxxx';
4:alter tablespace xxxx online;
额,这个可以的吧。毕竟他看的不是表结构,只是时间而已
如果开启闪回可以使用闪回表。
select log_mode,flashback_on from v$database;
如果是下面结果则开了闪回
LOG_MODE FLASHBACK_ON
------------ ------------------
ARCHIVELOG YES
可以执行以下命令
alter table 表名 enable row movement; --开启表行移动
flashback table 表名 to timestamp to_timestamp('20130813 14:00:00','yyyymmdd hh24:mi:ss');
--闪回到2013年8月13日14点
你要是没开启,有逻辑备份可以使用imp命令导入数据。
如果没用逻辑备份,开启归档模式,有物理备份,能够停机、数据丢失的话,可以采用不完全恢复
用rman登陆
rman target /
执行以下命令
run{shutdown immediate;
startup mount;
set until time = "to_date('20130813 14:00:00','yyyymmdd hh24:mi:ss')";
restore database;
recover database;
alter database open resetlogs;}