Oracle安装初始配置

然对于linux系统来讲,大内存,还需要配置hugepage,如果不配置,就会浪费我们的内存资源。

简单的描述一下,操作系统内存的分配使用使用通过page table来的,Page Table 是操作系统上的虚拟内存系统的数据结构,其用来存储虚拟内存地址和物理内存地址之间的映射关系。

这就意味着在虚拟内存系统上,我们访问内存时,是先访问Page Table,然后根据Page Table 中的映射关系,隐式的转移到物理的内存位置。

当内存过大的时候,维护这些page Table 也会消耗掉巨大的内存。按照某些设置下,50G 内存需要8G的内存来维护page table。

oracle 的内存是通过参数来控制的,那我们为什么需要在上系统之前就规划内存,而不是等系统上线以后,在调整?

Oracle 的参数分静态和动态,动态参数可以随时修改,但是静态参数的修改,必须重启以后才能生效,那系统一旦上线了,明显是不能随便重启的。 所以我们要提前规划好。

那问题来了,我们怎么确认一个参数是动态还是静态?

SQL> select name,value ,ISSYS_MODIFIABLE from v$parameter where name like 'memory%';

SQL> select name,value ,ISSYS_MODIFIABLE from v$parameter where name like 'sga%';

SQL> select name,value,issys_modifiable from v$parameter where name like 'pga%';

如果ISSYS_MODIFIABLE 返回的是false,说明该参数无法用alter system语句动态修改,需要重启数据库。

SQL> alter system set pga_aggregate_target=150m scope=spfile;

UNDO表空间设置

undo 表空间放的是数据的前镜像,当做某个记录多修改时,原记录就会放到undo 中。 所以Undo 表空间的大小影响数据的恢复能力。

其中影响最大的就是undo_retention 参数,undo_retention参数以秒为单位,表示当事务提交或回滚以后,该事务所使用的undo块里的数据需要保留多长时间;当保留的时间超过undo_retention所指定的时间以后,该undo块才能够被其他事务覆盖。

当我们使用AUM,并设置了undo_retention以后,undo块就存在四种状态:
(1)Active:表示正在使用该undo的事务还没有提交或回滚。
(2)Inactive:表示该undo上没有活动的事务,该状态的undo可以被其他事务覆盖。
(3)Expired:表示该undo持续inactive的时间超过undo_retention所指定的时间。
(4)Freed:表示该undo块内容是空的,从来没有被使用过。

SQL> alter system set undo_retention=10800 scope=both;
系统已更改。

ALTER TABLESPACE UNDOTBS1 ADD DATAFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS02.DBF' SIZE 8G AUTOEXTEND ON MAXSIZE 8G;

1.  设置4个数据文件4*8G

2. undo_retention=10800

3. AUTOEXTEND ON MAXSIZE 8G;


Temp 表空间设置

临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。

当oracle里需要用到sort的时候,PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间,正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段的。

SQL> select name,value,issys_modifiable from v$parameter where name='sessions';

SQL> select name,value,issys_modifiable from v$parameter where name='processes';

sessions的数量是由如下公式计算出来的:
SESSIONS=(1.5* PROCESSES) + 22
SESSIONS=1.5*150+22=247

当我们修改process 之后,session的值也会自动修改。 一般根据业务的情况来修改这个参数,如果业务大,可以把processes设置为1000.

SQL> alter system set processes=500 scope=spfile;

修改session_cached_cursors 和 open_cursors 参数

过多的软解析和硬解析都会影响到数据库性能,硬解析我们可以通过绑定变量来解决,而软解析,就可以通过我们这里的session_cached_cursors 来改善。

SQL> Alter system setsession_cached_cursors=100 scope=spfile; 
System altered.

还有一点,需要注意,就是在调整 session_cached_cursors的值时不应该大于 open_cursors 参数的值。

修改open_links_per_instance 和 open_links 参数

设置数据文件最大个数

从Oracle 8 开始,控制文件是自动扩展的,当新添加的datafile时,datafile的个数超过了控制空maxdatafiles 参数的限制时,maxdatafiles参数值会自动的增加。

数据库中真正的最大的datafiles 的个数由DB_FILES 参数决定,虽然控制文件中也有限制,但是这个控制文件中的限制参数会自动的增加,直到到达DB_FILES的值。

alter system set db_files=100 scope=spfile;

修改用户的profile 属性


在Profile文件里保存了一些资源的限制信息。如果在创建用户时指定了profile。 那么用户就不能超过profile里指定的资源。

可以通过dba_profiles视图查看profile的具体属性值:

SQL> select * from dba_profiles where profile='DEFAULT';

这里面有很多,我们今天只看其中一个属性:FAILED_LOGIN_ATTEMPTS。

修改命令如下:
SQL> alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED;

修改online redo log 大小和组数

online Redo log默认有3个组,每个组有一个文件,每个文件50M。

显示当前归档日志组和成员:
SQL> select group#,member from v$logfile;
GROUP# MEMBER
---------- ---------------------------------------------------
  3               D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG
  2               D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG
  1               D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG

添加redo log组:
SQL> alter database add logfile group 4 ('D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO04.LOG') size 100m;

检查新加入的log状态
SQL> select group#,sequence#,bytes,members,status from v$log;
 
    GROUP#  SEQUENCE#      BYTES    MEMBERS STATUS
---------- ---------- ---------- ---------- ----------------
         1         17   52428800          1 CURRENT
         4          0   10485760          1 UNUSED
         3         16   52428800          1 INACTIVE
         2         15   52428800          1 INACTIVE

设置CONTROL_FILE_RECORD_KEEP_TIME 参数

控制文件平常的作用是负责数据库的物理结构,控制文件控制数据库查找物理文件的位置,并控制每个文件当前包含的头部信息,其内容包括数据文件信息,重做日志信息和归档文件信息。 
控制文件的IO操作很频繁,checkpoint 会频繁更新控制文件。

提问:怎么查看控制文件里面包含哪些类型的记录?

上面是所有控制文件的记录,可以分为两类:循环重用记录 和 非循环重用记录。 

循环重用记录:可以从控制文件中删除的信息。如: 归档日志历史信息可以被删除,并且不会影响产品数据库。  如果控制文件因这类记录而空间不足,则会删除这些记录以得到更多的空间。 
非循环重用记录:是那些不能被删除的记录,非循环重用记录包括 数据文件列表 和日志文件列表。

修改CONTROL_FILE_RECORD_KEEP_TIME参数。

该参数以天为单位(默认值为7天),因此在默认情况下,Oracle 会将RMAN备份和恢复记录保存7天。 可以将该参数设置为0到365之间的任意值。

SQL> alter system set control_file_record_keep_time=20;

启动归档模式

生产库是要求运行在归档模式下,因为通过归档,我们对数据进行恢复。这样当数据库出现问题的时候,可以进行恢复来挽救数据库。
默认情况下,数据库是非归档的。

SQL> alter system set log_archive_dest_1='location=/u01/newccs_archive';
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;

部署RMAN 备份

定时收集统计信息

统计信息是CBO 确定执行计划的根基。 如果统计信息不正确,那么SQL 的执行计划肯定是有问题的,那么SQL的效率也就肯定有问题,一句话,就是SQL 执行比较慢,可能本来只需要10秒的SQL,结果因为统计信息导致的错误,需要执行10分钟。

默认情况下,Oracle 也会通过job在每天晚上10到早上6点和周末全天进行统计信息的收集工作,但一般我们都会停掉自动收集,然后由DBA 部署脚本来收集,这样统计信息会更准确一些。

execute dbms_stats.gather_table_stats(ownname =>'SYS',tabname =>'DAVE',estimate_percent => 10 ,method_opt =>'for all columns size 1',degree=>10,cascade => true);

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

转载于:http://blog.itpub.net/28912313/viewspace-1702230/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值