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