首页 > 数据库 > Oracle > 正文

安装Oracle后,经常使用的修改表空间的SQL代码

2020-03-09 22:52:57
字体:
来源:转载
供稿:网友



配置:
windows nt 4.0 中文版
5块10.2gb scsi硬盘
分:c:盘、d:盘、e:盘、f:盘、g:盘
oracle 8.0.4 for windows nt
nt安装在c:/winnt,oracle安装在c:/orant

目标:
因系统的回滚段太小,现打算生成新的回滚段,
建立大的、新的表空间(数据表空间、索引表空间、回滚表空间、临时表空间、)
建两个数据表空间、两个索引表空间,这样建的目的是根据实际应用,
如:现有10个应用用户,每个用户是一个独立子系统(如:商业进销存mis系统中的财务、收款、库存、人事、总经理等)
尤其大型商场中收款机众多,同时访问进程很多,经常达到50-100个进程同时访问,
这样,通过建立多个用户表空间、索引表空间,把各个用户分别建在不同的表空间里(多个用户表空间放在不同的物理磁盘上),
减少了用户之间的i/o竞争、读写数据与写读索引的竞争(用户表空间、索引表空间也分别放在不同的物理磁盘上)

规划:
c:盘、nt系统,oracle系统
d:盘、数据表空间1(3gb、自动扩展)、回滚表空间1(1gb、自动扩展)
e:盘、数据表空间2(3gb、自动扩展)、回滚表空间2(1gb、自动扩展)
f:盘、索引表空间1(2gb、自动扩展)、临时表空间1(0.5gb、不自动扩展)
g:盘、索引表空间2(2gb、自动扩展)、临时表空间2(0.5gb、不自动扩展)

注:这只是一个简单的规划,实际规划要依系统需求来定,尽量减少i/o竞争

实现:
1、首先查看系统有哪些回滚段及其状态。

sql> col owner format a20
sql> col status format a10
sql> col segment_name format a20
sql> col tablespace_name format a20

sql> select owner,segment_name,tablespace_name,sum(bytes)/1024/1024 m
  2  from dba_segments
  3  where segment_type='rollback'
  4  group by owner,segment_name,tablespace_name
  5  /

owner                segment_name         tablespace_name              m
-------------------- -------------------- -------------------- ---------
sys                  rb1                  rollback_data        .09765625
sys                  rb10                 rollback_data        .09765625
sys                  rb11                 rollback_data        .09765625
sys                  rb12                 rollback_data        .09765625
sys                  rb13                 rollback_data        .09765625
sys                  rb14                 rollback_data        .09765625
sys                  rb15                 rollback_data        .09765625
sys                  rb16                 rollback_data        .09765625
sys                  rb2                  rollback_data        .09765625
sys                  rb3                  rollback_data        .09765625
sys                  rb4                  rollback_data        .09765625
sys                  rb5                  rollback_data        .09765625
sys                  rb6                  rollback_data        .09765625
sys                  rb7                  rollback_data        .09765625
sys                  rb8                  rollback_data        .09765625
sys                  rb9                  rollback_data        .09765625
sys                  rb_temp              system               .24414063
sys                  system               system                .1953125

查询到18记录.

sql> select segment_name,owner,
  2         tablespace_name,segment_id,file_id,status
  3         from dba_rollback_segs
  4  /

segment_name         owner                tablespace_name      segment_id   file_id status
-------------------- -------------------- -------------------- ---------- --------- ----------
system               sys                  system                        0         1 online
rb_temp              sys                  system                        1         1 offline
rb1                  public               rollback_data                 2         3 online
rb2                  public               rollback_data                 3         3 online
rb3                  public               rollback_data                 4         3 online
rb4                  public               rollback_data                 5         3 online
rb5                  public               rollback_data                 6         3 online
rb6                  public               rollback_data                 7         3 offline
rb7                  public               rollback_data                 8         3 offline
rb8                  public               rollback_data                 9         3 offline
rb9                  public               rollback_data                10         3 offline
rb10                 public               rollback_data                11         3 offline
rb11                 public               rollback_data                12         3 offline
rb12                 public               rollback_data                13         3 offline
rb13                 public               rollback_data                14         3 offline
rb14                 public               rollback_data                15         3 offline
rb15                 public               rollback_data                16         3 offline
rb16                 public               rollback_data                17         3 offline

查询到18记录.

2、修改代码如下,可把以下代码存入一.sql文件,如cg_sys.sql,然后以sql> @cg_sys.sql调用执行。

--注意:各个硬盘上要事先建好oradata目录

--修改现有回滚段,使之失效,下线
alter rollback segment rb1 offline;
alter rollback segment rb2 offline;
alter rollback segment rb3 offline;
alter rollback segment rb4 offline;
alter rollback segment rb5 offline;
alter rollback segment rb6 offline;
alter rollback segment rb7 offline;
alter rollback segment rb8 offline;
alter rollback segment rb9 offline;
alter rollback segment rb10 offline;
alter rollback segment rb11 offline;
alter rollback segment rb12 offline;
alter rollback segment rb13 offline;
alter rollback segment rb14 offline;
alter rollback segment rb15 offline;
alter rollback segment rb16 offline;

--删除原有回滚段
drop rollback segment rb1;
drop rollback segment rb2;
drop rollback segment rb3;
drop rollback segment rb4;
drop rollback segment rb5;
drop rollback segment rb6;
drop rollback segment rb7;
drop rollback segment rb8;
drop rollback segment rb9;
drop rollback segment rb10;
drop rollback segment rb11;
drop rollback segment rb12;
drop rollback segment rb13;
drop rollback segment rb14;
drop rollback segment rb15;
drop rollback segment rb16;

--建数据表空间1
--收款、库存、订货、远程通信
create tablespace user_data1 datafile
'd:/oradata/user1_1.ora' size 512m,
'd:/oradata/user1_2.ora' size 512m,
'd:/oradata/user1_3.ora' size 512m,
'd:/oradata/user1_4.ora' size 512m,
'd:/oradata/user1_5.ora' size 512m,
'd:/oradata/user1_6.ora' size 512m
autoextend on next 5m maxsize unlimited
default storage (initial 128k next 2m pctincrease 0);
--initial 128k,因为,用户建在表空间上,而表建在用户里,为用户所拥有,
--用户继承数据表空间的存储参数,表继承用户的存储参数
--如果initial设的过大,如:5m,则每建一个空表就要占用5m的空间,即使一条记录也没有
--autoextend on next 5m maxsize unlimited,设置数据文件自动扩展,每一次扩展增加5m,最大空间不受限

--建数据表空间2
--物价、人事、结算、财务、总经理、合同、统计
create tablespace user_data2 datafile
'e:/oradata/user2_1.ora' size 512m,
'e:/oradata/user2_2.ora' size 512m,
'e:/oradata/user2_3.ora' size 512m,
'e:/oradata/user2_4.ora' size 512m,
'e:/oradata/user2_5.ora' size 512m,
'e:/oradata/user2_6.ora' size 512m
autoextend on next 5m maxsize unlimited
default storage (initial 128k next 2m pctincrease 0);

--建索引表空间1
create tablespace index_data1 datafile
'f:/oradata/index1_1.ora' size 512m,
'f:/oradata/index1_2.ora' size 512m,
'f:/oradata/index1_3.ora' size 512m,
'f:/oradata/index1_4.ora' size 512m
autoextend on next 5m maxsize unlimited
default storage (initial 128k next 2m pctincrease 0);

--建索引表空间2
create tablespace index_data2 datafile
'g:/oradata/index2_1.ora' size 512m,
'g:/oradata/index2_2.ora' size 512m,
'g:/oradata/index2_3.ora' size 512m,
'g:/oradata/index2_4.ora' size 512m
autoextend on next 5m maxsize unlimited
default storage (initial 128k next 2m pctincrease 0);

--建回滚表空间1
--设置初始值40m(initial 40m),则每在这个表空间中建一个回滚段,
--此回滚段自动继承此回滚表空间的存储参数,也即默认文件为40m
create tablespace rollback_data1 datafile
'd:/oradata/roll1_1.ora' size 512m,
'd:/oradata/roll1_2.ora' size 512m
autoextend on next 5m maxsize unlimited
default storage (initial 40m next 5m pctincrease 0);

--建回滚表空间2
create tablespace rollback_data2 datafile
'e:/oradata/roll2_1.ora' size 512m,
'e:/oradata/roll2_2.ora' size 512m
autoextend on next 5m maxsize unlimited
default storage (initial 40m next 5m pctincrease 0);

--建临时表空间1
create tablespace temporary_data1 datafile
'f:/oradata/temp1_1.ora' size 512m
default storage (initial 10m next 3m pctincrease 0);

--建临时表空间2
create tablespace temporary_data2 datafile
'g:/oradata/temp2_1.ora' size 512m
default storage (initial 10m next 3m pctincrease 0);

--使其真正成为临时的
alter tablespace temporary_data1 temporary;
alter tablespace temporary_data2 temporary;

--建立新的回滚段,每个都一样大,不同大小的回滚段没有什么意义,系统是随机选择的。
--建多少个,根据并发访问用户的多少,
--如果你们公司每天有50-100个人员使用oracle系统开发的管理软件,应该20个以上

create public rollback segment rb01 tablespace rollback_data1;
create public rollback segment rb02 tablespace rollback_data1;
create public rollback segment rb03 tablespace rollback_data1;
create public rollback segment rb04 tablespace rollback_data1;
create public rollback segment rb05 tablespace rollback_data1;
create public rollback segment rb06 tablespace rollback_data1;
create public rollback segment rb07 tablespace rollback_data1;
create public rollback segment rb08 tablespace rollback_data1;
create public rollback segment rb09 tablespace rollback_data2;
create public rollback segment rb10 tablespace rollback_data2;
--前8个建在回滚表空间1中,后8个在回滚表空间2
create public rollback segment rb11 tablespace rollback_data2;
create public rollback segment rb12 tablespace rollback_data2;
create public rollback segment rb13 tablespace rollback_data2;
create public rollback segment rb14 tablespace rollback_data2;
create public rollback segment rb15 tablespace rollback_data2;
create public rollback segment rb16 tablespace rollback_data2;
create public rollback segment rb17 tablespace rollback_data2;
create public rollback segment rb18 tablespace rollback_data2;
create public rollback segment rb19 tablespace rollback_data2;
create public rollback segment rb20 tablespace rollback_data2;

--使回滚段online,即有效
alter rollback segment rb01 online;
alter rollback segment rb02 online;
alter rollback segment rb03 online;
alter rollback segment rb04 online;
alter rollback segment rb05 online;
alter rollback segment rb06 online;
alter rollback segment rb07 online;
alter rollback segment rb08 online;
alter rollback segment rb09 online;
alter rollback segment rb10 online;
alter rollback segment rb11 online;
alter rollback segment rb12 online;
alter rollback segment rb13 online;
alter rollback segment rb14 online;
alter rollback segment rb15 online;
alter rollback segment rb16 online;
alter rollback segment rb17 online;
alter rollback segment rb18 online;
alter rollback segment rb19 online;
alter rollback segment rb20 online;

--查看现有回滚段及其状态
col segment format a30
select segment_name,owner,tablespace_name,segment_id,file_id,status from dba_rollback_segs;

--查看数据文件及其所在表空间、大小、状态
col file_name format a40
col tablespace_name format a20
select file_name,file_id,tablespace_name,bytes,status from dba_data_files;


至此,表空间重新规划完毕,这里讲的比较通俗,还有好多参数值得设置,能够把oracle设置到最优的境界,
表空间设置完了,下面,就该好好的整理一下oracle的内存区了,
oracle很有意思,内存越大,效果越明显,所以有必要好好调整一下sga区,也就是主要配置ininorcl.ora参数文件。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表