Oracle创建表空间、创建用户、授权、授权对象的访问以及查看权限



安装完oracle软件,可以用
用户名sys
密码:创建oracle实例时的密码
服务器类型:DBA
ORCL 为安装软件时的默认命名
即可进入服务器


使用以下方法创建新的用户名
使用 ccflow - ccflow - orcl - normal 此系列配置即可登录


在进行导入数据时,会发生只能由DBA导入到DBA,
此时需要的操作为:为ccflow用户授权 dba 权限
grant connect,resource,dba to ccflow



数据库导入命令
在cmd中 ,用imp  ccflow(用户名)/ccflow(密码)@orcl file=c:/data/data.dmp(为现有dmp文件的存储路径,可以拖拽至该cmd环境中,路径不要存在中文字符即可) log=c:\gengbao.log(为导入时自定义生成的日志文件)  full=y (完全导入) ignore=y (忽略冲突)


数据库导出命令
在cmd中,用exp ccflow(用户名)/ccflow(密码)@orcl file=c:/data/data.dmp(为文件的存储路径) log=c:\gengbao.log(为导出时自定义生成的日志文件) 


1.创建临时表空间
Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间消耗的主要原因是需要对查询的中间结

果进行排序。
临时表空间的主要作用:
索引create或rebuild
Order by 或 group by
Distinct 操作
Union 或 intersect 或 minus
Sort-merge joins

CREATE TEMPORARY TABLESPACE "TEST_TEMP"
    TEMPFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/GIS/TEST_DATA.ora'
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

【例】
在E盘创建了ORACLE文件夹

CREATE TEMPORARY TABLESPACE "TEST_TEMP"
    TEMPFILE 'E:/ORACLE/TEST_DATA.ora'
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;


2.创建用户表空间
CREATE TABLESPACE "TEST_DATA"
    LOGGING
    DATAFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/GIS/TEST_DATA.ora'
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

【例】
在E盘创建 新的ora文件

CREATE TABLESPACE "TEST_DATA"
    LOGGING
    DATAFILE 'E:/ORACLE/TEST_DATA2.ora'
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

3.创建用户并设置其表空间
username:usertest
password:userpwd

CREATE USER usertest IDENTIFIED BY userpwd
DEFAULT TABLESPACE TEST_DATA
TEMPORARY TABLESPACE TEST_TEMP;

【例】
用户名为ccflow 密码为ccflowpwd
CREATE USER ccflow IDENTIFIED BY ccflowpwd
DEFAULT TABLESPACE TEST_DATA
TEMPORARY TABLESPACE TEST_TEMP;

4.给用户授权
GRANT
  CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
  ALTER ANY TABLE, ALTER ANY PROCEDURE,
  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
TO username;
【例--开始】
用户名为 ccflow
GRANT
  CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
  ALTER ANY TABLE, ALTER ANY PROCEDURE,
  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
TO ccflow;

【例--结束】

首先授权用户testuser两个基本的角色权限

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

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

授权角色给用户的sql语句:
GRANT role TO username;

注意:这两个角色的权限可能需要在sys用户下给testuser授权
grant select on  csm_mid.pob_rtu to testuser;
grant connect, resource to  testuser;

假如现在将用户user1的表table1的select权限赋予testuser
以user1连接到oracle,执行以下sql语句
grant select on  table1 to testuser;

现在我们用testuser用户名连接后查询table1表的数据
select * user1.table1 from testuser;
注意:表table1之前必须要加上user1

如果我们希望查询表table1时,前面不要加user1,可以这样做:
首先授予testuser创建视图的权限
grant create view to testuser;

然后在在testuser用户先以user1.table1为基表创建视图v_user1_table1
create view v_user1_table1
as
select *
from user1.table1;
我们就可以用如下查询了:
select * from v_user1_table1;

 
5.查看用户权限

查看所有用户
SELECT * FROM DBA_USERS;
SELECT * FROM ALL_USERS;
SELECT * FROM USER_USERS;

查看用户系统权限
SELECT * FROM DBA_SYS_PRIVS;
SELECT * FROM USER_SYS_PRIVS;

查看用户对象或角色权限
SELECT * FROM DBA_TAB_PRIVS;
SELECT * FROM ALL_TAB_PRIVS;
SELECT * FROM USER_TAB_PRIVS;

查看所有角色
SELECT * FROM DBA_ROLES;

查看用户或角色所拥有的角色
SELECT * FROM DBA_ROLE_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;

遇到no privileges on tablespace 'tablespace '
alter user userquota 10M[unlimited] on tablespace;


参考资源:http://download.csdn.net/detail/hugaozhuang/7338529




你可能感兴趣的:(Oracle)