oracle移动表怎么用 oracle 移动表空间-成都快上网建站

oracle移动表怎么用 oracle 移动表空间

oracle如何移动表空间?

表空间是数据库里一个逻辑存储结构,其对应物理结构是数据文件,一个表空间可以包含多个数据文件,但是一个数据文件只能属于一个表空间。

创新互联公司于2013年创立,是专业互联网技术服务公司,拥有项目成都网站制作、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元蓬安做网站,已为上家服务,为蓬安各地企业和个人服务,联系电话:028-86922220

您所问的表空间在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;

oracle中怎么用存储过程的的方法 把一个用户里的一个表移到另一个用户里

一楼的回答不一定是提问者要的吧. 第一帖试着回答,不知掉百度问答好玩不好玩..

有几种方法可以做,一种是1楼回答的,建user,授权,然后imp/exp

针对于对你的问题的理解这是我的方法:

假设想从user A 移表C到user B.

此处楼主没有说清楚,是同一个instance里的俩个不同user,还是俩个不同instance里的不同user.

如果不同instance里的不同user,以下方法里用了db link的方法

1. 俩个user存在, 并且有相关权限,比如create session etc, 因为你有需要从一个user中去访问另个user,所以Grant select,insert等你需要的权限给另外个user,比如在user B里执行:

grant insert on C to A;

2. 在user B中建DB link使其能访问user A;

3. user B 中建立和user A你想移的那种表的表结构定义,此处俩个选择:

1). 手动建表,和moreazy做法一样, 在user B里执行create table C as select * from userA where rownum1;

2). 把建表语句build in到你的存储过程中

4. 因为存储过程里用到了dblink所以动态sql可能会被用到.

以上是思路,以下是伪代码是最简单的类型,不考虑性能等等,至少简单逻辑,没时间测,顺手一写:

简单写的没有游标等等,如果考虑到大数据量,最好不要做一次性的insert select,用游标取出表数据然后loop的处理,适量的commit(比如1000-5000 commit)可大幅提高性能。

set serveroutput on;

DECLARE

v_dblink varchar2(128):='sss.com';

v_sql VARCHAR2(4000);

v_count NUMBER(10);

v_message VARCHAR2(4000);

BEGIN

-- check dblink

v_sql := 'select count(*) from all_db_links where db_link=upper('''||v_dblink||''')';

EXECUTE IMMEDIATE v_sql INTO v_count;

IF v_count = 0 THEN

v_message := 'db link '''||v_dblink||''' does not exist.';

DBMS_OUTPUT.PUT_LINE(v_message);

ELSE

v_sql := 'INSERT INTO C

(col1,col2)

SELECT col1,col2 FROM C'||v_dblink;

BEGIN

EXECUTE IMMEDIATE v_sql;

COMMIT;

EXCEPTION WHEN OTHERS THEN

v_message := SQLERRM(SQLCODE);

DBMS_OUTPUT.PUT_LINE(v_message);

END;

END IF;

END;

/

oracle 如何将 A表的数据 移到 B 表中去?

create

b

as

select

*

from

a

这样吧把a中的数据给b了

create

b

as

select

*

from

a

where

1=1

就只把

a的表结构给了b

ORACLE表空间A移动到表空间B

使用如下语句,可以将需要移动的表空间语句在pl/sql中列出来,

select 'alter table ' ||table_name || ' move tablespace 目标表空间名称;' from user_all_tables where tablespace_name='源表空间名称'

再执行这个结果就好了

oracle 10g如何移动系统表空间

1.单表转移表空间

场景:有表user存放在表空间oldspace下,需把表user移动到表空间new_space下

执行语句:

alter table user move tablespace new_space;

commit;

2.用户scott下的所有表都转移至表空间new_space下

select 'alter table'||table_name||'move tablespace new_space;commit;'

from user_tables where owner='scott'

但是表user被移动到表空间new_space后,表user上的索引是不是自动转移到表空间new_space

3.索引转移表空间,例如,user表上的索引idx_user

alter index idx_user rebuild tablespace new_space

4.用户scott下的所有索引都转移至表空间new_space下

select 'alter index'||index_name||'rebuild tablespace new_space;commit;'

from user_indexs where owner='scott'

怎样移动Oracle数据库的表空间

扩展临时表空间:

方法一、增大临时文件大小:

sql

alter

database

tempfile

‘/u01/app/oracle/oradata/orcl/temp01.dbf’

resize

100m;

方法二、将临时数据文件设为自动扩展:

sql

alter

database

tempfile

‘/u01/app/oracle/oradata/orcl/temp01.dbf’

autoextend

on

next

5m

maxsize

unlimited;

方法三、向临时表空间中添加数据文件:

sql

alter

tablespace

temp

add

tempfile

‘/u01/app/oracle/oradata/orcl/temp02.dbf’size

100m;


文章名称:oracle移动表怎么用 oracle 移动表空间
转载注明:http://kswjz.com/article/hgsied.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流