Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1606598
  • 博文数量: 409
  • 博客积分: 6240
  • 博客等级: 准将
  • 技术积分: 4908
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-01 00:04
文章分类

全部博文(409)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(13)

2015年(22)

2013年(4)

2012年(240)

2011年(127)

分类: Oracle

2012-07-23 20:24:34

1.oracle的系统权限,分为三种:
  1. DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
  2. RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
  3. CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
[系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)]
授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...;
[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]
2.创建用户示例:
conn /as sysdba;
create tablespace test datafile 'd:\test01.dbf' size 10m unform size 64k;
alter database datafile 'd:\test01.dbf' autoextend on next  100m maxsize;
create tablespace temp datafile 'd:\temp.dbf' size 100m unform size 64k;
create user yangkai identified by yk123 default tablespace test01 temporary tablespace temp;
grant dba,resource,connect to yangkai;
revoke dba from yangkai;
create table TESTYK
(
  pid   NUMBER,
  pname VARCHAR2(64)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255;

  1. Microsoft Windows XP [版本 5.1.2600]
  2. (C) 版权所有 1985-2001 Microsoft Corp.

  3. C:\Documents and Settings\Administrator>sqlplus /nolog

  4. SQL*Plus: Release 11.2.0.1.0 Production on 星期四 4月 9 22:20:08 2015

  5. Copyright (c) 1982, 2010, Oracle. All rights reserved.

  6. SQL> conn /as sysdba;
  7. 已连接。

  1. SQL> create tablespace test datafile 'c:\test01.dbf' size 10m uniform size 32k;

  2. create tablespace test datafile 'c:\test01.dbf' size 10m uniform size 32k
  1. *
第 1 行出现错误:
ORA-03249: 自动段空间管理的表空间大小都应至少具有 5 个块


  1. SQL> create tablespace test datafile 'c:\test01.dbf' size 10m uniform size 64k;

  2. 表空间已创建。

  3. SQL> alter database datafile 'c:\test01.dbf' autoextend on next size 50m maxsize
  4.  1g;
  5. alter database datafile 'c:\test01.dbf' autoextend on next size 50m maxsize 1g
  6.                                                            *
  7. 第 1 行出现错误:
  8. ORA-02493: NEXT 子句中的文件增量大小无效


  9. SQL> alter database datafile 'c:\test01.dbf' autoextend on next 50m maxsize 1g;


  10. 数据库已更改。
SQL>alter tablespace test add datafile 'c:\test001.dbf' size 10m uniform size 64k;----这部分多余,因为是add
                                                             *
第 1 行出现错误:
ORA-00933: SQL 命令未正确结束


 SQL> alter tablespace test add datafile 'c:\test001.dbf' size 10m;


表空间已更改。

 SQL>

  1. SQL> create tablespace temp datafile 'c:\temp.dbf' size 50 uniform size 64k;
  2. create tablespace temp datafile 'c:\temp.dbf' size 50 uniform size 64k
  3. *
  4. 第 1 行出现错误:
  5. ORA-01543: 表空间 'TEMP' 已存在----本来就有的临时表空间

  6. SQL> create tablespace tempyk datafile 'c:\temp.dbf' size 50m uniform size 64k;

  7. 表空间已创建。

  8. SQL> create user yangkai01 identified by yk123 default tablespace test temporary
  9.  tablespace tempyk;
  10. create user yangkai01 identified by yk123 default tablespace test temporary tabl
  11. espace tempyk
  12. *
  13. 第 1 行出现错误:
  14. ORA-10615: Invalid tablespace type for temporary tablespace
  15. -----因为我指定的是临时表空间,而tempyk表空间的类型不是临时表空间,所以会出错。应该创建一个类型为临时类型的表空间或者使用默认的临时表空间。

  16. SQL> drop tablespace 'tempyk' including contents and datafiles;
  17. drop tablespace 'tempyk' including contents and datafiles
  18.                 *
  19. 第 1 行出现错误:
  20. ORA-02216: 需要表空间名


  21. SQL> drop tablespace TEMPYK including contents and datafiles;

  22. 表空间已删除。----删除表空间及其数据文件

  23. SQL> create temporary tablespace tempyk datafile 'c:\temp.dbf' size 50m uniform
  24. size 64k;
  25. create temporary tablespace tempyk datafile 'c:\temp.dbf' size 50m uniform size
  26. 64k
  27.                                    *
  28. 第 1 行出现错误:
  29. ORA-25139: CREATE TEMPORARY TABLESPACE 的选项无效


  30. SQL> create temporary tablespace tempyk tempfile 'c:\temp.dbf' size 50m uniform
  31. size 64k;

  32. 表空间已创建。

  33. SQL> create user yangkai01 identified by yk123 default tablespace test temporary
  34.  tablespace tempyk;

  35. 用户已创建。----指定了数据表空间和临时表空间

  36. SQL> grant dba,resource,connect to yangkai01;

  37. 授权成功。

  38. SQL> revoke dba from yangkai01;

  39. 撤销成功。

  40. SQL> create table TESTYK
  41.   2 (
  42.   3 pid NUMBER,
  43.   4 pname VARCHAR2(64)
  44.   5 )
  45.   6 tablespace USERS
  46.   7 pctfree 10
  47.   8 initrans 1
  48.   9 maxtrans 255;

  49. 表已创建。
  50. -------这里创建的表,是系统的默认表空间users。
  51. SQL>
3.临时表空间是一个磁盘空间,主要用于存储用户在执行ORDER BY等语句进行排序或汇总时产生的临时数据。没有临时表空间,有些操作可能无法进行。
   tianlesoftware   杭州Dave

Temporary tablespace是oracle里临时表空间,临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。当oracle里需要用到sort的时候,PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间,正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段的。

4.oracle pctfree和pctused详解
一、建立表时候,注意PCTFREE参数的作用
      PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被用于update;即:当使用一个block时,在达到pctfree之前,该block是一直可以被插入的,这个时候处在上升期。
      PCTUSED:是指当块里的数据低于多少百分比时,又可以重新被insert,一般默认是40,即40%,即:当数据低于40%时,又可以写入新的数据,这个时候处在下降期。

二、举例说明
      假设你一个块可以存放100个数据,而且PCTFREE 是10,PCTUSED是40,则:不断的向块中插入数据,如果当存放到90个时,就不能存放新的数据,这是受pctfree来控制,预留的空间是给UPDATE用的。
      当你删除一个数据后,再想插入个新数据行不行?不行,必须是删除41个,即低于40个以后才能插入新的数据的,这是受pctused来控制的。
      注意:如果表空间上启用了ASSM,在建立表的时候,只能指定PCTFREE,否则可用指定PCTFREE和PCTUSED。





阅读(4591) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~