当你创建用户时,应该定义它的表空间(default tablespace)。否则,它会使用系统表空间(system
tablespace)。这是应该避免的。
这是常用的创建用户的一个例子:
CREATE USER XXXXX IDENTIFIED BY xxxxx
PROFILE DEFAULT
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMPTS01
ACCOUNT UNLOCK;
请注意,你首先要确认你的数据库里是否有这二个表空间:USERS和TEMPTS01。如果没有,你先要创建表空间USERS及TEMPTS01,然后再创建用户。(建立表空间命令请参见下面)
一、用户基本命令:
1.建立 修改 删除用户帐户
create user 用户名
identified by 口令
[default tablespace 表空间名]
[temporary tablespace 表空间名]
[password expire]
[account{lock|unlock}]
修改:alter
user 用户名
indentified by 口令
删除:drop
user 用户名
2.授予用户权限
上面新创建的用户没有人户权限所以什么都做不了 所以要授予他某些权限
权限类型有两种
系统权限 对象权限
a.系统权限
create session 如果没有此权限用户就无法与Oracle数据库连接 所以用户都有此权限
create table
用户在自己的模式中创建表
create any table 在数据库的任何模式中创建表
create view
create any view
create type 用户在自己的模式中创建类型
create any type
create procedure
create trigger
create synonym 用户在自己的模式中创建同义词
create sequence 用户在自己的模式中创建序列
alter
database
改变数据库配置
alter
system
...................参数
alter any
table
更改数据库中任何表的结构
audit
system
审计SQL语句
drop any
table
在数据库中删除任何表或表的分区
delete any
table
在数据库的任何表或视图中删除行
execute any procedure
execute any type
grant any privilege 授予用户任何系统权限
grant any
role
授予用户任何角色
insert any table
select any table
sysoper
启动和关闭数据库 加载,打开或备份数据库,执行ARCHIVELOG和RECOVER命令
sysdba
DATABASE语句修改数据库
update any table
unlimited tablespace
将系统权限授予用户的SQL命令
grant 系统权限 to 用户名 [with admin option]
收回命令
revoke 系统权限 from 用户名
b.授予对象权限
grant 对象权限 on 对象名 to 用户名 [with grant option] [with hierarchy
option]
(对象名 比如在那个表上就是表明 ;对象权限 insert update delete select等)
二、表空间相关命令
1.更改用户表空间设置
alter user 用户名
default tablespace 表空间名
temporary tablespace 表空间名
2.创建表空间
create tablespace 表空间名
datafile
'数据文件名'[size 整数[K|M]] [reuse]
[autoextend
{off | on
[next 整数 [K | M] ]
[maxsize {unlimited | 整数 [K
| M] } ] } ]
[,.............其他数据文件.....]
[online | offonline]
[permanent | temporary];
例: create tablespace newtbsp
datafile
'f:\userdata\sp1.dbf' size 100K
reuse
......f:\userdata在f盘建立的文件夹 ,sp1.dbf 数据文件大小100K
autoextend on next 100k maxsize
1M,
.....每次扩展100K 最大到1M
'f:\userdata\sp2.dbf' size 100K reuse
online
permanent;
....online permanent 是默认的可以不写
若要给表空间增加一个名为sp3.dbf的文件 可以用以下语句
alter tablespace newtbsp
add
datafile 'f:\userdata\sp3.dbf' size 5M;
建立表空间例三:
CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE
128k;
#指定区尺寸为128k,如不指定,区尺寸默认为64k
3.删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
4.建立UNDO表空间
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M
#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02;
5.建立临时表空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M
6.改变表空间状态
a.使表空间脱机
ALTER TABLESPACE game OFFLINE;
如果是意外删除了数据文件,则必须带有RECOVER选项
ALTER TABLESPACE game OFFLINE FOR RECOVER;
b.使表空间联机
ALTER TABLESPACE game ONLINE;
c.使数据文件脱机
ALTER DATABASE DATAFILE 3 OFFLINE;
d.使数据文件联机
ALTER DATABASE DATAFILE 3 ONLINE;
e.使表空间只读
ALTER TABLESPACE game READ ONLY;
f.使表空间可读写
ALTER TABLESPACE game READ WRITE;
7、扩展表空间
首先查看表空间的名字和所属文件
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
a.增加数据文件
ALTER TABLESPACE game
ADD DATAFILE
'/oracle/oradata/db/GAME02.dbf' SIZE 1000M;
b.手动增加数据文件尺寸
ALTER DATABASE DATAFILE
'/oracle/oradata/db/GAME.dbf'
RESIZE 4000M;
c.设定数据文件自动扩展
ALTER DATABASE DATAFILE
'/oracle/oradata/db/GAME.dbf
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M;
d.设定后查看表空间信息
SELECT
A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES
"% USED",(C.BYTES*100)/A.BYTES
"% FREE"
FROM SYS.SM$TS_AVAIL
A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE
A.TABLESPACE_NAME=B.TABLESPACE_NAME AND
A.TABLESPACE_NAME=C.TABLESPACE_NAME;