oracle 一些用到过的表空间操作命令

来源:互联网 发布:适合女生看的a v 知乎 编辑:程序博客网 时间:2024/05/23 02:24

Oracle创建表空间:

/*创建临时表空间  */

create temporary tablespace user_temp 

tempfile'D:\oracle\oradata\Oracle9i\user_temp.dbf'

size 50m 

autoextend on 

next 50m maxsize 20480m 

extent management local; 

 

/*创建数据表空间  */

create tablespace user_data 

logging 

datafile'D:\oracle\oradata\Oracle9i\user_data.dbf'

size 50m 

autoextend on 

next 50m maxsize 20480m 

extent management local; 

 

/*创建用户并指定表空间  */

create user username identified bypassword 

default tablespace user_data 

temporary tablespace user_temp; 

 

/*给用户授予权限  */

grant connect,resource,dba to username;

删除表空间(包括表空间的数据文件):

DROP TABLESPACE tablespace_name INCLUDINGCONTENTS AND DATAFILES;

删除数据文件:

要想删除数据文件,数据文件必须为空。

ALTER TABLESPACE product DROP DATAFILE ‘F:\...\PRODUCT4’;

其中,DROP DATAFILE表示删除数据文件;product是数据文件所属的表空间名;PRODUCT4是被删除的数据文件。

如果要删除临时文件,可以使用类似于下面的命令:

ALTER TABLESPACE lmtemp DROP TEMPFILE ‘/…/lmtemp02.dbf’;

其中lmtemp是临时表空间的名字;lmtemp02.dbf是被删除的临时文件的名字;TEMPFILE是关键字,表示删除临时表空间中的临时文件。

也可以使用下面的命令删除临时文件:

ALTER DATABASE TEMPFILE ‘/…/lmtemp02.dbf’DROP INCLUDING DATAFILES;

导入dmp文件:

Imp userid=用户名/密码@连接名 file=文件路径\文件名 FULL=Y buffer=10000000ignore=y

对表空间无权限:

错误:ORA-01950: 对表空间‘TEST’无权限

查了下资料,原来是我的当前用户的默认表空间不是TEST,并且是表空间的配额是限制的,所以没有对TEST表空间做修改的权限,要把当前用户的默认表空间更改成 TEST,并且把配额限制更改成无限制。所以重新用 sys  用户登录,并把修改用户的权限分配给当前用户,然后再用当前用户更改自身的默认表空间(当然,你也可以在sys用户模式或者SQLPLUS下更改用户的默认表空间)。代码如下:

               alter user itsm defaulttablespace TEST;

              grant unlimited tablespace to itsm;

 现在用户test就把TEST表空间作为默认的表空间。再执行上面建表的语句就OK,无错了。

扩展表空间:

1.手动增加表空间中数据文件的大小。

ALTER DATABASE DATAFILE ‘D:\...’ RESEIZE1000M

把表空间中数据文件的尺寸扩大到1000MB

 

2.把表空间中的数据文件设成自动扩展

ALTER DATABASE DATAFILE ‘D:\...’ AUTOEXTENDON NEXT 5M MAXSIZE UNLIMITED

其中,AUTOEXTEND ON 表示这个数据文件可以自动扩展,“自动扩展”的意思是当这个数据文件的空间用完时,这个数据文件的空间可以自动增加;NEXT 5M指定这个指定这个数据文件每次扩展的大小;MAXSIZE UNLIMITED表示这个数据文件的空间可以无限制扩展。

 

3.往表空间中增加数据文件

ALTER TABLESPACE USERDB ADD DATAFILE ‘D:\..’SIZE 100M

往表空间USERDB中增加数据文件p2.ora,这样同样也可以实现扩展表空间的目的。

错误:ORA-01688:表。。分区。。无法通过8192(在表空间。。中)扩展:

解决:需要扩展表空间。

查看表空间与对应的表空间文件:

SELECT

    t1.name, t2.name

FROM

    v$tablespace t1,

    v$datafile t2

WHERE

    t1.ts#=t2.ts#

order by t1.name

这两个视图,一个存储表空间的信息,另外一个是数据文件信息.表空间在磁盘上至少要对应一个数据文件的.

我们来对比一下这两个视图的描述,可以看到这两个表中TS#字段的含义是一样的.而V$TABLESPACE中的name是表空间名,V$DATAFILE中的name是数据文件名,因此可以用这个字段将两张视图连接起来,就能看到表空间对应的数据文件了。

CMD登录:

sqlplus 用户名/密码@database 

0 0
原创粉丝点击