Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75257
  • 博文数量: 28
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 310
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-16 15:52
文章存档

2011年(1)

2008年(27)

我的朋友

分类: Oracle

2008-08-19 20:36:55

Oracle 管理脚本创建必需的表空间。

要求:
ora 管理脚本不创建缺省数据库。Oracle 数据库是由环境变量和初始化文件创建的。管理脚本不能发现这些设置的值。因此,必须在运行管理脚本前使用 CREATE DATABASE 命令创建具有适当名称的数据库。

ora 管理脚本使用 Oracle 缺省值创建需要的表空间和用户,但不是缺省数据库。管理脚本在缺省 Oracle 目录中创建 component_ts.dbf 数据文件。注意这些目录根据操作系统而改变。

管理脚本必须由 sys 用户运行。

sys 用户必须作为 sysdba 登录。因此,如下运行管理脚本:

sqlplus "sys/sys_password@server as sysdba" @script_name

其中:

sys_password
sys 用户的密码。

server
Oracle 服务器名称

script_name
要运行的管理脚本名称。

引号(")很重要。

注意:
对于 Oracle 8.x,sys 用户的密码不能是 Oracle 缺省密码。当使用缺省密码时,将接收到一个无关的错误。

如果在安装中没有运行管理脚本,则完成以下步骤:

  1. 从 IBM Tivoli Configuration Manager 安装 CD,将以下文件从  FRESH/SQL/admin  目录复制到安装了 Oracle 客户机的计算机系统上的临时目录:
    •  inv_ora_admin.sql 
    •  plan_ora_admin.sql 
    •  ccm_ora_admin.sql 
  2. 从此目录,启动一个 SQL*Plus 会话:
    sqlplus sys/password
    

    其中 password 是为 RDBMS 用户 sys 设置的 RDBMS 密码。

  3. 通过完成以下步骤运行和 Inventory 组件相关的管理脚本:
    1. 指定将信息写入哪个日志文件:
      spool inv_ora_admin.log
      
    2. 运行脚本创建用户和表空间:
      @inv_ora_admin.sql
      

      脚本创建用户和表空间。SQL 的成功和失败语句写入该日志中。

  4. 通过完成以下步骤运行和活动计划程序组件相关的管理脚本:
    1. 指定将信息写入哪个日志文件:
      spool plan_ora_admin.log
      
    2. 运行脚本创建用户和表空间:
      @plan_ora_admin.sql
      

      脚本创建用户和表空间。SQL 的成功和失败语句写入该日志中。

  5. 通过完成以下步骤运行和更改管理器组件相关的管理脚本:
    1. 指定将信息写入哪个日志文件:
      spool ccm_ora_admin.log
      
    2. 运行脚本创建用户和表空间:
      @ccm_ora_admin.sql
      

      脚本创建表和视图。SQL 的成功和失败语句写入该日志中。

  6. 通过完成以下步骤运行和分发状态控制台相关的管理脚本:
    1. 指定将信息写入哪个日志文件:
      spool mdist_ora_admin.log
      
    2. 运行脚本创建用户和表空间:
      @mdist_ora_admin.sql
      

      脚本创建表和视图。SQL 的成功和失败语句写入该日志中。

  7. 注销 SQL*Plus 会话:
    quit
 
 
 
 
 10g 引进了临时表空间组(temporary  group)的概念,它允许用户在不同的会话中同时利用多个临时表空间。

  1. 临时表空间组的主要特征

   一个临时表空间组必须由至少一个临时表空间组成,并且无明确的最大数量限制。

   如果删除了一个临时表空间组的所有成员,该组也自动被删除。

   临时表空间的名字不能与临时表空间组的名字相同。

   在给用户分配一个临时表空间时,可以使用临时表空间组的名字代替实际的临时表空间名;在给数据库分配默认临时表空间时也可以使用临时表空间组的名字。

  2. 临时表空间组的有点

  使用临时表空间组而非普通的临时表空间,有如下好处:

   由于SQL查询可以并发使用几个临时表空间进行排序操作,因此SQL查询很少会出现排序空间超出,避免当临时表空间不足时所引起的磁盘排序问题。

   可以在数据库级指定多个默认临时表空间。

   一个并行操作的并行服务器将有效地利用多个临时表空间。

   一个用户在不同会话中可以同时使用多个临时表空间。

  3. 管理 临时表空间组

  临时表空间组是在创建临时表空间时通过指定GROUP字句创建的。可以将一个表空间从一个组移动另一个组,或是从一个组中删除临时表空间,或是往组里添加新的表空间。

  1. 创建临时表空间组

  创建临时表空间时指定GROUP:

CREATE SMALLFILE
  TEMPORARY TABLESPACE "TEMP01"
  TEMPFILE
  '/u01/app/oracle/oradata/orcl/temp_tbs_01a.dbf' SIZE 5M REUSE
  AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  UNIFORM. SIZE 1M
  TABLESPACE GROUP TBS_GROUP_1
  GO
  CREATE SMALLFILE
  TEMPORARY TABLESPACE "TEMP02"
  TEMPFILE
  '/u01/app/oracle/oradata/orcl/temp_tbs_02a.dbf' SIZE 5M REUSE
  AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  UNIFORM. SIZE 1M
  TABLESPACE GROUP TBS_GROUP_1
  GO
  CREATE SMALLFILE
  TEMPORARY TABLESPACE "TEMP03"
  TEMPFILE
  '/u01/app/oracle/oradata/orcl/temp_tbs_03a.dbf' SIZE 5M REUSE
  AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  UNIFORM. SIZE 1M
  TABLESPACE GROUP TBS_GROUP_2
  GO
  CREATE SMALLFILE
  TEMPORARY TABLESPACE "TEMP04"
  TEMPFILE
  '/u01/app/oracle/oradata/orcl/temp_tbs_04a.dbf' SIZE 5M REUSE
  AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  EXTENT MANAGEMENT LOCAL
  UNIFORM. SIZE 1M
  TABLESPACE GROUP TBS_GROUP_2
  GO

2. 查询临时表空间组

SELECT * FROM DBA_TABLESPACE_GROUPS
  GROUP_NAME TABLESPACE_NAME
  ------------- ------------------
  TBS_GROUP_1 TEMP01
  TBS_GROUP_1 TEMP02
  TBS_GROUP_2 TEMP03
  TBS_GROUP_2 TEMP04

  3. 临时表空间的移动

  可以将“未分组”或“已分组”的临时表空间移动到指定的 临时表空间中,或者是移出:

  •将未分组的临时表空间TEMP_01加入分组TBS_GROUP_1

  ALTER TABLESPACE TEMP_01 TABLESPACE GROUP TBS_GROUP_1

  •将已分组的临时表空间TEMP_01加入分组TBS_GROUP_2

  ALTER TABLESPACE TEMP01 TABLESPACE GROUP TBS_GROUP_2

  •将已分组的临时表空间TEMP04移除分组TBS_GROUP_2

  ALTER TABLESPACE TEMP04 TABLESPACE GROUP ''

  查看结果:

SELECT * FROM DBA_TABLESPACE_GROUPS
  GROUP_NAME TABLESPACE_NAME
  ------------- ------------------
  TBS_GROUP_1 TEMP02
  TBS_GROUP_1 TEMP_01
  TBS_GROUP_2 TEMP01
  TBS_GROUP_2 TEMP03

  4. 把临时表空间组指定给用户

  •查看用户的默认表空间

SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
FROM DBA_USERS

  •创建用户时指定

CREATE USER zhangzj IDENTITY BY zhangzj
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE tbs_group_1

  •修改已有用户

ALTER USER ZHANGZJ TEMPORARY TABLESPACE TBS_GROUP_1

  5. 设置数据库临时表空间组

ALTER DATABASE ORCL DEFAULT TEMPORARY TABLESPACE TBS_GROUP_1

  6. 同一个用户的不同使用不同的临时表空间

  首先用sys用户查询:

SELECT USERNAME, SESSION_NUM, TABLESPACE FROM V$SORT_USAGE

 

测试过程:

  新开session1执行 

SQL> conn zhangzj/zhangzj

  已连接。

SELECT A.TABLE_NAME, B.TABLE_NAME
FROM DICT A, DICT B ORDER BY A.TABLE_NAME

  新开session2执行

SQL> conn zhangzj/zhangzj

  已连接。

SELECT A.TABLE_NAME, B.TABLE_NAME FROM DICT A, DICT B

  sys查询:

SQL> SELECT USERNAME, SESSION_NUM, TABLESPACE FROM V$SORT_USAGE;
  USERNAME SESSION_NUM TABLESPACE
  ----------- -------------- -------------
  ZHANGZJ 35743 TEMP01
  ZHANGZJ 25683 TEMP02

  可以发现,同一个用户ZHANGZJ的两个分别使用了两个不同的临时表空间。

  6. 删除临时表空间组

  即:删除组成临时表空间组的所有临时表空间

  先查看要删除的 临时表空间组包含哪些 临时表空间

SELECT * FROM DBA_TABLESPACE_GROUPS

  然后删除 这些临时表空间,即可

DROP TABLESPACE TEMP01 INCLUDING CONTENTS AND DATAFILES
  GO
DROP TABLESPACE TEMP02 INCLUDING CONTENTS AND DATAFILES
  GO

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