SQL>;alter rollback segment r01 online;
注意修改$ORACLE_HOME/dbs/initoradb.ora中的激活回滚段段名
另创建一个尺寸无限制的回滚段(r99),供特殊用途
SQL>;create rollback segment r99 storage(initial 128k next 128k maxextents 5000) tablespace rbs;
如果在创建回滚段时使用create public rollback segment,则不需要在$ORACLE_HOME/dbs/initoradb.ora中用rollback_segment=(…)选项激活,推荐使用public方式
相关系统表:
SQL>; select segment_name, initial_extent, next_extent, max_extents, extents,bytes from dba_segments where segment_type ='ROLLBACK'; #回滚段占用空间状况
SQL>;select segment_name, status from dba_rollback_segs; #回滚段状态
2.1.6 调整日志
建立日志组
SQL>;alter database add logfile group x('log1a','log1b') size 10M;
增加日志组成员
SQL>;alter database add logfile member 'log1c' to group x;
删除日志
数据库实例至少需要2个日志组,只有状态为inactive的日志组才能被删除,而当前日志组状态为current,上一个切换的日志组状态为 active,这就意味着至少存在3个日志组才能删除其中的一个,如果要更新全部日志组,只能删除一个,再创建一个,直至全部被更新。
SQL>;alter database drop logfile group x;
如果要删除的日志组是当前日志组,必须先将其切换至状态为inactive,再删除。
SQL>;alter system switch logfile;
删除日志组成员
SQL>;alter database drop logfile member 'log1c';
相关系统表
v$log #日志组状态、占用空间、顺序号等
v$logfile #日志组文件
2.1.7 调整用户表空间
创建表空间
假定表数据在ts_data,索引在ts_index
SQL>; create tablespace ts_data default storage (initial 10M next 10M maxextents 5000 pctincrease 0) datafile 'path/data_01.dbf' size 500M;
SQL>;create tablespace ts_index default storage (initial 5M next 5M maxextents 5000 pctincrease 0) datafile 'path/index_01.dbf' size 500M;
参考命令:删除表空间
SQL>;drop tablespace data including contents; #删除表空间及其包含的所有数据对象
相关系统表:
user(dba)_tablespaces
增加表空间尺寸
假定表空间ts_data由path/data_01.dbf和path/data_02.dbf(500M)组成
增加一个数据文件:
SQL>;alter tablespace ts_data add datafile 'path/data_03.dbf' size 500M;
扩大原有文件大小:
SQL>;alter database datafile 'path/data_01.dbf' resize 1000M;
移动表空间数据文件
假如要求为:将path1下data_01.dbf移至path2下,并把文件名改为data01.dbf
实例处于关闭状态
sqlplus "/ as sysdba"
SQL>;startup mount
回到shell环境下
$ mv path1/data_01.dbf path2/data01.dbf
$ mv path1/data_02.dbf path2/data02.dbf
再到sqlplus环境中
SQL>;alter database rename file 'path1/data_01.dbf' to 'path2/data01.dbf';
或
SQL>;alter tablespace tbsdata rename datafile 'path/data_01.dbf' to 'path2/data01.dbf';
SQL>;alter database open;
查看剩余空间
SQL>;select tablespace_name,sum(bytes),max(bytes) from dba_free_space group by tablespace_name;
注意:空闲数据块总和sum(bytes)够用并不意味每个空闲块都满足分配需要,所以当表空间不够分配扩展块的时候,还要查看最大空闲数据块max(bytes)的大小。
合并空闲块
如果表空间上的数据对象经常发生类似drop-create的变动,加之未采用统一的扩展块尺寸,使那些采用较大扩展块的数据对象不能利用较小的空间碎片,造成空间浪费。可通过将较小的空闲块合并成较大的空闲块的方法,减少空间浪费。
SQL>;alter tablespace tbsdata coalesce;
2.1.8 创建用户
SQL>; create user dbuser identified by oracle default tablespace data temporary tablespace temp quota unlimited on data quota 0 on system quota 0 on tools quota 0 on users;
SQL>;grant connect to dbuser;
SQL>;grant create procedure to dbuser; #这些权限足够用于开发及生产环境
SQL>;grant select on dba_pending_transactions to dbuser; #二阶段提交过程中类似Tuxedo的软件需要检索挂起交易的状态,所以必须得到对此视图的select权限,以sys用户身份赋予
修改用户可使用alter user dbuser ...
参考命令:
drop user dbuser cascade; #删除用户及其所有的数据对象
revoke connect from dbuser; #取消用户角色权限
相关系统表:
user(dba)_users
user(dba)_role_privs 角色权限
user(dba)_sys_privs 系统权限
user(dba)_tab_privs 对其他用户表操作的权限
user_ts_quotas 表空间限额
2.1.9 创建数据对象
相关系统表:
user_catalog(cat)
user_objects(obj)
表和索引建立在表空间上,如果不指定表空间,使用本用户的缺省表空间(default tablespace);如果不指定本对象的存储参数,使用建于其上的表空间的缺省存储参数(default storage)。
表(table)
建表脚本通常是以下形式:
create table emp (no number(12), name char(20), …,constraint emp_x00 primary key(no)) storage(initial 100M next 100M pctincrease 0 maxextents 5000) pctused 70 pctfree 10 tablespace tbs_data enable primary key using index tablespace tbs_index;
然而从简化数据对象配置、减少表空间碎片的角度考虑,不推荐为每张表单独指定storage选项,存储参数使用建于其上的表空间的缺省存储参数。不同表对扩展块大小的要求,可以通过分析归类,建立相应具有不同缺省存储参数的表空间的方法解决。这样数据库设计就能变得简洁明了。
命令简化为:
create table emp (no number(12), name char(20), …, constraint emp_x00 primary key(no)) pctused 70 pctfree 10 tablespace tbs_data enable primary key using index tablespace tbs_index;[@more@]
注意修改$ORACLE_HOME/dbs/initoradb.ora中的激活回滚段段名
另创建一个尺寸无限制的回滚段(r99),供特殊用途
SQL>;create rollback segment r99 storage(initial 128k next 128k maxextents 5000) tablespace rbs;
如果在创建回滚段时使用create public rollback segment,则不需要在$ORACLE_HOME/dbs/initoradb.ora中用rollback_segment=(…)选项激活,推荐使用public方式
相关系统表:
SQL>; select segment_name, initial_extent, next_extent, max_extents, extents,bytes from dba_segments where segment_type ='ROLLBACK'; #回滚段占用空间状况
SQL>;select segment_name, status from dba_rollback_segs; #回滚段状态
2.1.6 调整日志
建立日志组
SQL>;alter database add logfile group x('log1a','log1b') size 10M;
增加日志组成员
SQL>;alter database add logfile member 'log1c' to group x;
删除日志
数据库实例至少需要2个日志组,只有状态为inactive的日志组才能被删除,而当前日志组状态为current,上一个切换的日志组状态为 active,这就意味着至少存在3个日志组才能删除其中的一个,如果要更新全部日志组,只能删除一个,再创建一个,直至全部被更新。
SQL>;alter database drop logfile group x;
如果要删除的日志组是当前日志组,必须先将其切换至状态为inactive,再删除。
SQL>;alter system switch logfile;
删除日志组成员
SQL>;alter database drop logfile member 'log1c';
相关系统表
v$log #日志组状态、占用空间、顺序号等
v$logfile #日志组文件
2.1.7 调整用户表空间
创建表空间
假定表数据在ts_data,索引在ts_index
SQL>; create tablespace ts_data default storage (initial 10M next 10M maxextents 5000 pctincrease 0) datafile 'path/data_01.dbf' size 500M;
SQL>;create tablespace ts_index default storage (initial 5M next 5M maxextents 5000 pctincrease 0) datafile 'path/index_01.dbf' size 500M;
参考命令:删除表空间
SQL>;drop tablespace data including contents; #删除表空间及其包含的所有数据对象
相关系统表:
user(dba)_tablespaces
增加表空间尺寸
假定表空间ts_data由path/data_01.dbf和path/data_02.dbf(500M)组成
增加一个数据文件:
SQL>;alter tablespace ts_data add datafile 'path/data_03.dbf' size 500M;
扩大原有文件大小:
SQL>;alter database datafile 'path/data_01.dbf' resize 1000M;
移动表空间数据文件
假如要求为:将path1下data_01.dbf移至path2下,并把文件名改为data01.dbf
实例处于关闭状态
sqlplus "/ as sysdba"
SQL>;startup mount
回到shell环境下
$ mv path1/data_01.dbf path2/data01.dbf
$ mv path1/data_02.dbf path2/data02.dbf
再到sqlplus环境中
SQL>;alter database rename file 'path1/data_01.dbf' to 'path2/data01.dbf';
或
SQL>;alter tablespace tbsdata rename datafile 'path/data_01.dbf' to 'path2/data01.dbf';
SQL>;alter database open;
查看剩余空间
SQL>;select tablespace_name,sum(bytes),max(bytes) from dba_free_space group by tablespace_name;
注意:空闲数据块总和sum(bytes)够用并不意味每个空闲块都满足分配需要,所以当表空间不够分配扩展块的时候,还要查看最大空闲数据块max(bytes)的大小。
合并空闲块
如果表空间上的数据对象经常发生类似drop-create的变动,加之未采用统一的扩展块尺寸,使那些采用较大扩展块的数据对象不能利用较小的空间碎片,造成空间浪费。可通过将较小的空闲块合并成较大的空闲块的方法,减少空间浪费。
SQL>;alter tablespace tbsdata coalesce;
2.1.8 创建用户
SQL>; create user dbuser identified by oracle default tablespace data temporary tablespace temp quota unlimited on data quota 0 on system quota 0 on tools quota 0 on users;
SQL>;grant connect to dbuser;
SQL>;grant create procedure to dbuser; #这些权限足够用于开发及生产环境
SQL>;grant select on dba_pending_transactions to dbuser; #二阶段提交过程中类似Tuxedo的软件需要检索挂起交易的状态,所以必须得到对此视图的select权限,以sys用户身份赋予
修改用户可使用alter user dbuser ...
参考命令:
drop user dbuser cascade; #删除用户及其所有的数据对象
revoke connect from dbuser; #取消用户角色权限
相关系统表:
user(dba)_users
user(dba)_role_privs 角色权限
user(dba)_sys_privs 系统权限
user(dba)_tab_privs 对其他用户表操作的权限
user_ts_quotas 表空间限额
2.1.9 创建数据对象
相关系统表:
user_catalog(cat)
user_objects(obj)
表和索引建立在表空间上,如果不指定表空间,使用本用户的缺省表空间(default tablespace);如果不指定本对象的存储参数,使用建于其上的表空间的缺省存储参数(default storage)。
表(table)
建表脚本通常是以下形式:
create table emp (no number(12), name char(20), …,constraint emp_x00 primary key(no)) storage(initial 100M next 100M pctincrease 0 maxextents 5000) pctused 70 pctfree 10 tablespace tbs_data enable primary key using index tablespace tbs_index;
然而从简化数据对象配置、减少表空间碎片的角度考虑,不推荐为每张表单独指定storage选项,存储参数使用建于其上的表空间的缺省存储参数。不同表对扩展块大小的要求,可以通过分析归类,建立相应具有不同缺省存储参数的表空间的方法解决。这样数据库设计就能变得简洁明了。
命令简化为:
create table emp (no number(12), name char(20), …, constraint emp_x00 primary key(no)) pctused 70 pctfree 10 tablespace tbs_data enable primary key using index tablespace tbs_index;[@more@]
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8227599/viewspace-933016/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8227599/viewspace-933016/