表空间、权限

表空间

建立表空间

1
2
3
CREATE TABLESPACE test DATAFILE
'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TEST.DBF' SIZE 400 M
AUTOEXTEND ON NEXT 100 M MAXSIZE UNLIMITED;

上面建立了一个表空间名为test,初始大小400M,每次扩增100M,最大上限不限制。

修改表空间

(a)增加物理文件
1
2
3
ALTER TABLESPACE test ADD DATAFILE
'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TEST2.DBF' SIZE 20 m
AUTOEXTEND ON NEXT 30 m MAXSIZE 50 m;

alter tablespace …

(b)修改物理文件
1
2
ALTER DATABASE DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TEST.DBF'
AUTOEXTEND ON NEXT 500 M MAXSIZE 1020 M;

alter database …

查看表空间

1
SELECT * FROM dba_data_files;

剩余空间

1
SELECT tablespace_name, SUM(BYTES) / 1024 / 1024 AS freemb FROM dba_free_space GROUP BY tablespace_name;

这里的剩余不包括还未扩增部分。

删除表空间

1
DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;

值得注意的是C:\ORACLEXE\APP\ORACLE\ORADATA\XE\TEST.DBF物理文件依然存在。

用户

创建用户

1
2
3
4
CREATE USER guest IDENTIFIED BY guest
DEFAULT TABLESPACE test
TEMPORARY TABLESPACE temp
PROFILE default; -- profile 名为 default

profile 包含 密码有效天数 等信息, select * from dba_profiles;
查看用户密码过期时间: select * from dba_users;
修改文件中密码永不过期: ALTER PROFILE xxx LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改密码过期用户: alter user 用户名 identified by 密码 account unlock;

删除用户

1
DROP USER guest CASCADE;

授权

1
2
3
GRANT CREATE SESSION TO guest;  --连接权限
GRANT UNLIMITED TABLESPACE TO guest; --使用表空间的权利
GRANT CREATE TABLE TO guest; --建表

若收回权限:revoke 。。。 from xxx;

查看当前用户权限

1
SELECT * FROM user_sys_privs;

查看当前表空间

1
SELECT * FROM user_users;

查看用户空间限额

1
SELECT * FROM dba_ts_quotas;

MAX_BYTES=-1表示不限制
如果未列出,说明用户是有限制的

不限制用户在表空间中的大小

1
ALTER USER guest QUOTA UNLIMITED ON TEST;

oracle中的同一个表空间可以存在多个user,每个user能使用多大空间都是可以设置的。
user A 与user B之间没什么关系,他们谁也看不到对方的表,如果A想查询B的一张表,需要B给A授权。