oracle数据库设置

数据库设计方面:
1:数据库块大小选择(db_block_size)
默认是8k,块越大,装的行记录就越多,所需的块就越少,读取记录产生的io就越少
OLAP(数据仓库)特点是一般用户不多,并发不大,查询方式最多是使用全表扫描,返回大量的数据,
OLTP 特点是用户很多,并发很大,查询方式最多是使用索引,返回极少的数据
因此OLAP中block尽量大,块设置越大性能越会有提升
oltp系统倾向于索引读返回少量记录,块的大小对性能影响不大。如果块设置太大,容易导致
大量并发查询及更新操作都指向同一个数据块,从而产生热块

2:创建数据文件时extent的扩展
对oracle来说,表空间扩展是要格式化操作系统文件成为oracle可以识别的数据库文件,需要很大开销
因此在创建表空间时,一般会多预先分配大点的空间

3:表的pctfree设置
pctfree控制着block块中的free空间,可以根据数据库对表更新的频繁程度,对表的pctfree做设置,免得产生行迁移,影响性能
pctfree设置大一些,可避免行迁移
alter table xx pctfree 20
其实消除行迁移的一个简单方法,就是数据重建

 
 
分区表的一些基础
 
 
分区表
三种类型:范围分区、列表分区、hash分区、组合分区
范围分区使用最广,列表分区次之
不同分区,在不同segment中,可以将分区指定到不同的表空间里
1:范围分区
最常见的是按时间列进行分区
create table xxx(id number,deal_date date,area_code number)
partition by range(deal_date)
(
 partition p1 values less tha(to_date('2012-02-01','YYYY-MM-DD')),
 ...................
 partition p11 values less tha(to_date('2012-12-01','YYYY-MM-DD')),
 partition p12 values less tha(to_date('2013-01-01','YYYY-MM-DD')),
 partition p_max values less tha(maxvalue)
 );
 
 
2:列表分区
 
最常见的是按地区列进行分区
create table xxx(id number,deal_time date,area_code number)
partition by list(area_code)
(
 partition p51 values(51),
 partition p52 values(52),
 ..................
 partition p59 values(59),
 partition p_other values(default)
 );
 
 
 
 
 分区表的原理
 
 将一个大的对象分成了多个小对象
 
 
 分区表作用
 
 1:分区消除,将大对象划分为更小的对象
 
 2:分区truncate更快捷
 
    很多历史表、日志表都被设计为分区表,正是由于这个特性使得清理数据极其方便
   
 3: 分区数据转移备份
 
    可以将分区表的某个分区数据通过分区交换的方式交换出来备份
    普通表和分区表的字段必须完全一样
   
    将分区表t_range的p8分区的数据备份到普通表t_normal中
    alter table t_range exchange partition p8 with table t_normal
    然后可以看到p8分区的数据不见了,直接跑到t_normal表里了
   
 4:分区切割(split)
 
 5: 分区合并
 
 
 
 分区索引
 
 1:全局索引
   
   可以理解为普通索引,整个分区的一个大索引
   create index idx_range_date on t_range(deal_date);
 
 2:局部索引
 
   其实就是针对各分区所建的索引
   create index idx_range_areacode on t_range(area_code) local
  
  
   select index_name,status from user_indexes where index_name in('IDX_RANGE_DATE','IDX_RANGE_AREACODE')
  
   查询出status状态为N/A的表示局部索引,需要到user_ind_partitions中分析索引状态
  
   select index_name,partition_name,status from user_ind_partitions where index_name='IDX_RANGE_AREACODE'
  
 
 分区索引失效 
  
  1: 一般在对分区表的分区操作时,对局部索引一般都没有影响,但是对全局索引影响比较大,一般都会重建全局索引
   alter index idx_range_date rebuild
  
   也可以在执行分区操作时直接加update global indexes参数,如:
  
   alter table t_range truncate partition p2 update global indexes
  
  2:有索引效率更低
 
     很有可能是遍历了整个分区表
 
  3:无法应用分区条件
    
        
  
  
   
      
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24862808/viewspace-762265/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24862808/viewspace-762265/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以为Oracle数据库设置定时重启。具体方法如下: 1. 登录Oracle数据库。 2. 在Oracle数据库中创建一个脚本文件,用于重启数据库。例如,可以创建一个名为restart_db.sh的脚本文件,包含以下内容: #!/bin/bash echo "Restarting Oracle database..." export ORACLE_SID=your_oracle_sid export ORACLE_HOME=your_oracle_home $ORACLE_HOME/bin/sqlplus "/ as sysdba" << EOF shutdown immediate; startup; EOF 3. 使用crontab设置定时任务,执行restart_db.sh脚本文件。例如,可以在crontab文件中添加以下内容,表示每天凌晨2点重启数据库: 0 2 * * * /path/to/restart_db.sh 其中,/path/to/restart_db.sh是restart_db.sh脚本文件的路径。 注意,执行该操作可能会中断正在进行的数据库操作,请确保在定时任务之前备份数据库。 ### 回答2: 要在Oracle数据库设置定时重启,可以通过使用Oracle的作业调度器(Job Scheduler)来实现。作业调度器是Oracle中用于管理和调度作业的内置功能。 首先,我们需要创建一个新的作业(Job),并指定该作业的执行时间和频率。可以使用以下命令创建作业: BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'job_name', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN -- 在这里放置要执行的代码 END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY; INTERVAL=1', -- 这里的例子是每天重启一次 enabled => TRUE); END; 上述命令将创建一个每天重启数据库的作业。我们可以根据需要调整重启的频率和时间。 接下来,我们需要启动作业调度器,让它开始工作。可以使用以下命令启动作业调度器: BEGIN DBMS_SCHEDULER.START_SCHEDULER; END; 现在,作业调度器将按照我们设置的时间和频率自动重启数据库。 如果需要修改已经创建的作业,可以使用以下命令: BEGIN DBMS_SCHEDULER.SET_ATTRIBUTE ( name => 'job_name', attribute => 'repeat_interval', value => 'FREQ=DAILY; INTERVAL=1'); END; 上述命令将修改作业的重启频率为每天一次。 最后,如果需要停止作业调度器,可以使用以下命令: BEGIN DBMS_SCHEDULER.STOP_SCHEDULER; END; 以上就是如何在Oracle数据库设置定时重启的简要步骤。使用作业调度器可以方便地管理和调度各种数据库作业,包括定时重启。 ### 回答3: 要在Oracle数据库设置定时重启,可以按照以下步骤进行操作。 1. 首先,确保系统中安装了cron或者其他定时任务管理工具。这些工具可以用于在特定时间执行特定的命令。 2. 打开终端或者命令提示符窗口,登录到Oracle数据库的服务器。 3. 使用root或者具有管理员权限的用户登录到数据库服务器。 4. 创建一个Shell脚本文件来执行重启数据库的操作。在终端或者命令提示符窗口中输入以下命令: ```shell vi restart_oracle.sh ``` 5. 在编辑器中,输入以下命令来重启数据库: ```shell #!/bin/bash export ORACLE_SID=<数据库实例名> export ORACLE_HOME=<数据库安装目录> $ORACLE_HOME/bin/sqlplus / as sysdba << EOF shutdown immediate; startup; exit; EOF ``` 将<数据库实例名>和<数据库安装目录>替换为实际的数据库实例名和安装目录。 6. 保存并关闭文件。确保Shell脚本文件有可执行权限。 7. 打开终端或者命令提示符窗口,输入以下命令来编辑cron表达式: ```shell crontab -e ``` 8. 在编辑器中,添加以下行来设置定时重启的时间。例如,以下表达式将在每天凌晨3点执行重启操作: ```shell 0 3 * * * /path/to/restart_oracle.sh ``` 将/path/to/restart_oracle.sh替换为实际的Shell脚本文件路径。 9. 保存并关闭文件。cron将根据设置的时间自动执行重启操作。 请注意,在执行以上步骤前,确保已做好数据库备份,并在实际操作中小心谨慎。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值