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 缺省密码。当使用缺省密码时,将接收到一个无关的错误。
如果在安装中没有运行管理脚本,则完成以下步骤:
- 从 IBM Tivoli Configuration Manager 安装 CD,将以下文件从 FRESH/SQL/admin 目录复制到安装了 Oracle 客户机的计算机系统上的临时目录:
- inv_ora_admin.sql
- plan_ora_admin.sql
- ccm_ora_admin.sql
- 从此目录,启动一个 SQL*Plus 会话:
sqlplus sys/password
其中 password 是为 RDBMS 用户 sys 设置的 RDBMS 密码。
- 通过完成以下步骤运行和 Inventory 组件相关的管理脚本:
- 指定将信息写入哪个日志文件:
spool inv_ora_admin.log
- 运行脚本创建用户和表空间:
@inv_ora_admin.sql
脚本创建用户和表空间。SQL 的成功和失败语句写入该日志中。
- 通过完成以下步骤运行和活动计划程序组件相关的管理脚本:
- 指定将信息写入哪个日志文件:
spool plan_ora_admin.log
- 运行脚本创建用户和表空间:
@plan_ora_admin.sql
脚本创建用户和表空间。SQL 的成功和失败语句写入该日志中。
- 通过完成以下步骤运行和更改管理器组件相关的管理脚本:
- 指定将信息写入哪个日志文件:
spool ccm_ora_admin.log
- 运行脚本创建用户和表空间:
@ccm_ora_admin.sql
脚本创建表和视图。SQL 的成功和失败语句写入该日志中。
- 通过完成以下步骤运行和分发状态控制台相关的管理脚本:
- 指定将信息写入哪个日志文件:
spool mdist_ora_admin.log
- 运行脚本创建用户和表空间:
@mdist_ora_admin.sql
脚本创建表和视图。SQL 的成功和失败语句写入该日志中。
- 注销 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) |