oracle创建表空间、用户、设置权限(linux and windowns)(转)

一、linux系统下创建oracle表空间和用户权限查询

 
创建用户和表空间: 
  www.2cto.com  
1、登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户)
 
2、以sysdba方式来打开sqlplus,命令如下: sqlplus / as sysdba
 
3、创建临时表空间:
Sql代码  
--查询临时表空间文件的绝对路径。如果需要的话,可以通过查询来写定绝对路径。一般用${ORACLE_HOME}就可以了  
select name from v$tempfile;  
create temporary tablespace NOTIFYDB_TEMP tempfile '${ORACLE_HOME}\oradata\NOTIFYDB_TEMP.dbf' size 100m reuse autoextend on next 20m maxsize unlimited;  
 
4、创建表空间:
Sql代码  
--查询用户表空间文件的绝对路径:  
select name from v$datafile;  
create tablespace NOTIFYDB datafile '${ORACLE_HOME}\oradata\notifydb.dbf' size 100M reuse autoextend on next 40M maxsize unlimited default storage(initial 128k next 128k minextents 2 maxextents unlimited);  
 
5、创建用户和密码,指定上边创建的临时表空间和表空间
Sql代码  
create user hc_notify identified by hc_password default tablespace NOTIFYDB temporary tablespace NOTIFYDB_TEMP;  
 
6、赋予权限
Sql代码  
grant dba to hc_notify;  
grant connect,resource to hc_notify;  
grant select any table to hc_notify;  
grant delete any table to hc_notify;  
grant update any table to hc_notify;  
grant insert any table to hc_notify;  
 

CONNECT角色: --是授予最终用户的典型权利,最基本的

ALTER SESSION --修改会话
CREATE CLUSTER --建立聚簇
CREATE DATABASE LINK --建立数据库链接
CREATE SEQUENCE --建立序列
CREATE SESSION --建立会话
CREATE SYNONYM --建立同义词
CREATE VIEW --建立视图


RESOURCE角色: --是授予开发人员的

CREATE CLUSTER --建立聚簇
CREATE PROCEDURE --建立过程
CREATE SEQUENCE --建立序列
CREATE TABLE --建表
CREATE TRIGGER --建立触发器
CREATE TYPE --建立类型

但是实际查找 oracle 11.2.0.1.0 系统时,发现两个角色的权限如下:

用sys登陆到oracle中,执行以下两条语句:


select * from role_sys_privs WHERE ROLE LIKE 'CONNECT'; --查询connect角色的权限

select * from role_sys_privs WHERE ROLE LIKE 'RESOURCE'; --查询 RESOURCE角色的权限


CONNECT角色: --是授予最终用户的典型权利,最基本的
CREATE SESSION --建立会话


RESOURCE角色: --是授予开发人员的
CREATE CLUSTER --建立聚簇
CREATE PROCEDURE --建立过程
CREATE SEQUENCE --建立序列
CREATE TABLE --建表
CREATE TRIGGER --建立触发器
CREATE TYPE --建立类型

CREATE OPERATOR --创建操作者

CREATE INDEXTYPE --创建索引类型

CREATE TABLE --创建表

经过以上操作,就可以使用hc_notify/hc_password登录指定的实例,创建我们自己的表了。
 
删除表空间:
1、查看用户权限
Sql代码  
--查看用户要具备drop tablespace的权限,如果没有,先用更高级的用户(如sys)给予授权  
select a2.username,a1.privilege from dba_sys_privs a1 , user_role_privs a2  
where a1.privilege = 'DROP TABLESPACE'  
and a1.grantee =a2.granted_role  
 
2、删除临时表空间
Sql代码  
--查看临时表空间文件  
select name from v$tempfile;  
--查看用户和表空间的关系  
select USERNAME,TEMPORARY_TABLESPACE from DBA_USERS;  
--如果有用户的默认临时表空间是NOTIFYDB_TEMP的话,建议进行更改  
alter user xxx temporary tablespace tempdefault;  
---设置tempdefault为默认临时表空间  
alter database default temporary tablespace tempdefault;  
--删除表空间NOTIFYDB_TEMP及其包含数据对象以及数据文件  
drop tablespace NOTIFYDB_TEMP including contents and datafiles;   
 
3.删除用户表空间
Sql代码  
--查看表空间文件  
select name from v$datafile;  
--停止表空间的在线使用  
alter tablespace 表空间名称 offline;  
--删除表空间NOTIFYDB_TEMP及其包含数据对象以及数据文件  
drop tablespace NOTIFYDB_TEMP including contents and datafiles;   
 
Oracle用户权限查询相关操作:
Sql代码  
--查看所有的用户  
select * from all_users;  
--查看当前用户信息  
select * from user_users;  
--查看当前用户的角色  
select * from user_role_privs;  
--查看当前用户的权限  
select * from user_sys_privs;  
--查看当前用户的表可操作权限  
select * from user_tab_privs;  
  
--查看某一个表的约束,注意表名要 大写  
select * from user_constraints where table_name='TBL_XXX';  
--查看某一个表的所有索引,注意表名要 大写  
select index_name,index_type,status,blevel from user_indexes where table_name = 'TBL_XXX';  
--查看索引的构成,注意表名要 大写  
select table_name,index_name,column_name, column_position FROM user_ind_columns WHERE table_name='TBL_XXX';  
  
--系统数据字典 DBA_TABLESPACES 中记录了关于表空间的详细信息  
select * from sys.dba_tablespaces;  
  
--查看用户序列  
select * from user_sequences;  
--查看数据库序列  
select * from dba_sequences;

 

二、windowns平台

原文地址:

http://www.cnblogs.com/netsql/archive/2010/05/28/1745978.html

注意点:

1.如果在PL/SQL 等工具里打开的话,直接修改下面的代码中[斜体加粗部分]执行

2.确保路径存在,比如D:\oracle\oradata\Oracle9i\】也就是你要保存文件的路径存在

/*分为四步 */

/*第1步:创建临时表空间  */

create temporary tablespace user_temp  

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

size 50m  

autoextend on  

next 50m maxsize 20480m  

extent management local;  

 

/*第2步:创建数据表空间  */

create tablespace user_data  

logging  

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

size 50m  

autoextend on  

next 50m maxsize 20480m  

extent management local;  

 

/*第3步:创建用户并指定表空间  */

create user username identified by password  

default tablespace user_data  

temporary tablespace user_temp;  

 

/*第4步:给用户授予权限  */

grant connect,resource,dba to username;  

 

下面的代码和上面一样,可以直接复制。

复制代码
/*分为四步 */
/*第1步:创建临时表空间  */
create temporary tablespace user_temp  
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local;  
 
/*第2步:创建数据表空间  */
create tablespace user_data  
logging  
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local;  
 
/*第3步:创建用户并指定表空间  */
create user username identified by password  
default tablespace user_data  
temporary tablespace user_temp;  
 
/*第4步:给用户授予权限  */
grant connect,resource,dba to username;
复制代码
posted @ 2013-01-31 10:16  jervis_chan  阅读(303)  评论(0)    收藏  举报