脚本+实例

简介:

监听模式

dedicated 专有

shared    共享     dispatcher  调度 


dbca-->配置数据库-->共享



SQL> alter system set max_dispatchers=4 scope=both;

SQL> alter system set max_shared_servers=5  scope=both;

==============================================

oracle 默认提供了启动脚本 dbstart (但默认不可用)

1.关闭数据库,关闭监听

SQL> shutdown abort

[oracle@sq bin]$ lsnrctl stop


2.[oracle@sq ~]$ dbstart 报错

cd /u01/app/oracle/product/10.2.0/db_1/bin/

vi dbstart

ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle 更为

ORACLE_HOME_LISTNER=$ORACLE_HOME



3.[oracle@sq ~]$ dbstart

[oracle@sq ~]$ ipcs -m (公共内存为空)

[oracle@sq ~]$ ps -ef |grep ora_  (没有进程 证明没有启动成功)


4.[oracle@sq ~]$ vi /etc/oratab 

orcl:/u01/app/oracle/product/10.2.0/db_1:N  (把N改称Y)


5.[oracle@sq ~]$ dbstart

[oracle@sq ~]$ ps -ef |grep ora_

[oracle@sq ~]$ lsnrctl status


成功


oracle默认关闭 脚本

[oracle@sq ~]$ dbshut(直接可用)





============================================

自编 脚本

关闭数据库

1.[oracle@sq bin]$ cd $ORACLE_HOME/bin

[oracle@sq bin]$ vi dbshutdown

#!/bin/bash

sqlplus -S sys/123456 as sysdba <<EOF

shutdown abort

exit

EOF


2.[oracle@sq bin]$ chmod 755 dbshutdown 

[oracle@sq bin]$ ./dbshutdown 


开启数据库

[oracle@sq bin]$ vi dbopen

#!/bin/bash

sqlplus -S sys/123456 as sysdba <<EOF

startup

exit

EOF

[oracle@sq bin]$ chmod  755 dbopen 

[oracle@sq bin]$ ./dbopen




===================================================



查看sga

SQL> show sga


显示SGA的所有设置值

SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL

    union

    select name as pool,sum(bytes/1024/1024) from v$sgastat s where s.POOL is null group by s.name;



SQL> show parameter pool;


SGA是动态的并且最大值由SGA_MAX_SIZE参数控制

SQL> show parameter sga

SGA动态分配时不会超过sga_target设置的值,可以动态修改这个值


SQL> alter system set sga_target=200M;(此参数为SGA自动调整的上限值)



修改sga_max_size(注意:不能直接修改此参数,此参数修改包含两个动作:1修改到参数文件2修改到内存{这种参数不能直接修改到内存只能先修改到参数文件})

SQL> alter system set sga_max_size=300M scope=spfile;


SQL> show parameter sga(发现值没有发生变化,需要重启生效)

SQL> startup force

SQL> show parameter sga



-------------------------------------

share_pool:用于缓存SQL语句以及SQL语句中涉及的表定义(数据列以及数据类型


查看共享池

SQL> select pool,sum(bytes/1024/1024)from v$sgastat t where t.POOL is not null group by t.POOL



当执行一个sql语句,就会被记录,在生产平台上,很多sql语句会被很多人重复执行,所以,缓存了的sql语句,会被更快的执行

SQL> select count(*) from dba_objects;


SQL>  select sql_text from v$sqlarea where sql_text like '%dba_objects%';



刷新(清空)share pool

SQL> alter system flush shared_pool;


再次查看之前的命令没有了

select sql_text from v$sqlarea where sql_text like '%dba_objects%';



SQL> show parameter share

SQL> alter system set shared_pool_size=64m scope=both;(此参数可以直接修改到内存和参数文件不需要重启)

----------------------------------------------

Database buffer cache(作用:缓存数据)

Buffer cache存储从数据文件检索出来的数据块拷贝,提升数据检索速度,降低IO压力


SQL> alter system flush shared_pool;

SQL> alter system flush buffer_cache;


打开自动跟踪

SQL> set autotrace traceonly;


SQL>select count(*) from dba_objects;

结果:

 5184  consistent gets (逻辑读 内存)

 914  physical reads   (物理读 硬盘)


再次执行

SQL> set autotrace traceonly;(显示执行计划进行调优)

SQL>select count(*) from dba_objects;

结果:

       5047  consistent gets(只有逻辑读 说明都是从内存读出的)

          0  physical reads




设置buffer_cache大小

 alter system set db_cache_size=100M;


9i后引入ASMM自动管理 SGA中的大小

-----------------------------

热点块块分析

Touch Count(TCH) :接触点计数


Oracle虽然是根据TCH值决定块应该在冷端还是热端,但当块的TCH值发生变化时,并不会立即改变它所处的位置。服务器进程需要读块进Buffer,它会从LRU链的尾端开始搜索自由块,如果发现搜索到的块的TCH值小于2,就重用这个块。如果TCH大于2,就把此块移到热端头部,并把它的TCH设为0。2这个数字是受隐含参数_db_aging_hot_criteria控制


Select file#,dbablk,lru_flag,tch from x$bh where obj=

(select object_id from dba_objects where object_name='F1' and owner='SYS');

---------------------------


Redo log buffer cache

Redo log buffer cache记录所有的关于数据块的变化

 A主要用于数据库恢复

 B 改变的数据都要依赖于redo日志条目

 C redo日志条目包含数据重建于重做信息



Sga自动管理

     只需设置sga_target参数,由oracle根据实际情况来分配

   手动管理(设置log_buffer下限值)

     SQL> alter system set log_buffer=73400320 scope=spfile;




=====================================

如何根据经验值设定SGA和PGA

SGA设置此大小的70%-80%

PGA设置此大小的20%-30%

SQL> select t.sga_size,t.estd_physical_reads from v$sga_target_advice t order by 1;


=================================

设置pga大小

SQL> select pga_target_for_estimate/1024/1024 PGAMB,pga_target_factor,

  2  estd_pga_cache_hit_percentage,estd_overalloc_count

  3  from v$pga_target_advice;


((estd_pga_cache_hit_percentage  列为pga命中率

estd_overalloc_count 列为0意思为消除过载))


SQL> alter system set pga_aggregate_target=100M scope=both;


SQL> show parameter pga;



后台进程

数据库写进程(DBWn)

checkpoint 检查点  将数据从内存中写入磁盘

写进程就是将数据缓冲区里面的数据写到磁盘上

[oracle@sq ~]$ ps -ef|grep ora_

oracle   16879     1  0 05:43 ?        00:00:04 ora_dbw0_orcl


查看数据写进程

SQL> show parameter db_writer_processes


SQL> alter system set db_writer_processes=3 scope=spfile;



SQL> alter system checkpoint;(更改检查点)


SQL> alter system set log_checkpoints_to_alert=true scope=both;

(把检查点信息记录到 alert文件中)


日志写进程(LGWR)


系统监控进程(SMON)

在oracle断电或shutdown abort关闭数据库后,重新启动数据库是将执行下面操作,前滚日志文件中的记录修改


进程监控进程(PMON)

在数据库运行过程中清理失败的进程

回滚事务 释放锁(行级锁。表级锁)


行级锁

在修改一行数据的时候

还没有保存,那么我在另外一个窗口在来修改这条记录,那么是不行的

所有的数据库和存储引擎都会自动加锁


SQL> create table t1 (id int);

SQL> insert into t1 values(1);

SQL> commit;

SQL> insert into t1 values(2);


新会话

SQL> drop table t1;(不能删除)



SQL> alter table t2 disable table lock; 取消表级锁

SQL> alter table t2 enable table lock;  启动


     本文转自陈继松 51CTO博客,原文链接:http://blog.51cto.com/chenjisong/1737379,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
12天前
|
弹性计算 运维 Shell
自定义安装脚本
【4月更文挑战第30天】
8 0
|
2月前
|
Linux Shell 调度
PBS任务脚本模板及常用服务器PBS命令介绍
【2月更文挑战第21天】本文介绍在Linux服务器中,通过PBS(Portable Batch System)作业管理系统脚本的方式,提交任务到服务器队列,并执行任务的方法~
185 4
PBS任务脚本模板及常用服务器PBS命令介绍
|
10月前
|
监控 关系型数据库 Shell
用shell脚本写一个监控drds实例的脚本
用shell脚本写一个监控drds实例的脚本
57 1
|
11月前
|
关系型数据库 MySQL Unix
shell脚本操作实例
shell脚本操作实例
|
11月前
|
Shell
Shell脚本一键配置LAMP环境-脚本实例和解释
Shell脚本一键配置LAMP环境-脚本实例和解释
90 0
|
安全 关系型数据库 数据库
4.4脚本方式安装
4.4脚本方式安装
158 0
脚本中调用别的脚本,如何得到执行结果?
脚本中调用别的脚本,如何得到执行结果?
64 0
|
Shell Linux 数据库
Shell脚本单实例运行|学习笔记
快速学习Shell脚本单实例运行
101 0
Shell脚本单实例运行|学习笔记
|
IDE 测试技术 开发工具
一个方法帮你在正式脚本里添加“子脚本”的运行
一个方法帮你在正式脚本里添加“子脚本”的运行
198 0
|
数据安全/隐私保护
winscp自动执行脚本
我们经常使用WinSCP工具通过sftp协议上传获取文件,本文描述通过bat批量处理文件。 首先,我们打开dos命令窗口使用 cd \d :D\WinSCP 打开WinSCP安装目录 上传文件: winscp.
3043 0