ocp

来源:互联网 发布:释迦牟尼为什么知乎 编辑:程序博客网 时间:2024/04/26 23:30

1.SQL> show sga

Total System Global Area  314572800 bytes
Fixed Size      1267260 bytes
Variable Size    109054404 bytes
Database Buffers   201326592 bytes
Redo Buffers      2924544 bytes
SQL>

Total System Global Area  
 SGA总的分配大小
Fixed Size
 包括了一些数据库与实例的控制信息,状态信息,字典信息等,启动的时候就固定在SGA中,而且不会改变。
Variable Size
 Variable Size包含了Share pool、large pool、Java pool、streams pool
 以及 processes,sessions,transactions,cursor等信息
Database Buffers
 数据高速缓存区:数据库中数据块缓冲的地方,数据块在内存中就缓存在这里.
Redo Buffers
 日志缓冲区,由LGWR从这个缓冲区写到redo_file
 


2.通过v$sgastat计算SGA中每个组件分配内存大小
select pool,sum(bytes)
FROM v$sgastat where pool is not null
group by pool
UNION ALL
select name,bytes
FROM v$sgastat where pool is null

POOL      SUM(BYTES)
-------------------------- ----------
java pool        4194304
shared pool       92279380
large pool        4194304
fixed_sga        1267260
buffer_cache      201326592
log_buffer        2924544

6 rows selected.

 

3.什么是OLTP?
 Online Transaction Processing (联机事务处理系统),表示事务性非常高的系统
4.什么是OLAP? 
 Online Analytical Processing (联机分析处理系统),有的时候也叫DSS决策支持系统,就是我们说的数据仓库


5.通过什么参数sga设置的大小 应该怎样设置对应参数值?
sga_max_size的参数设置的内存大小,在instance启动的时候就分配完成,并且不可以动态修改,
9I在系统启动之前,需要规划好这个参数。再去设置其他组件的参数值.
如果不特别指定该参数大小,该参数大小就默认等于所有SGA组件大小之和。
10G后多了sga_target参数,用来控制ASSM
一般的设置方式 sga_max_size 给一个足够大的值.再动态的调整 sga_target.避免sga_max_size静态参数要重启


6.SGA有各部分组建是哪几部分?
shard pool
database buffer cache
lager pool
java pool
redo buffer
streams pool

7.SGA的内存分配是按granule单位来分配的,如何查看granule的大小?
被各个组件以粒组单位来分配的。

 

8.将log_buffer设置为1在参数文件中,重新启动后会是多少?
SQL> show parameter log_buffer

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
log_buffer        integer  2879488
SQL> alter system set log_buffer=1 scope=spfile;

System altered.

因为10G是ASMM,你设置的值系统会自动调整,并且系统发现你设置的值不合理 会自行裁断这个值

 

9.Database Buffer Cache(数据缓冲区)又可以细分为哪三个部分,设置各自大小的参数是什么?
default buffer cache
keep buffer cache
recycle buffer cache


Default pool、Keep pool、Recycle pool

在9I以前db_block_buffers、buffer_pool_keep、buffer_pool_recycle
在9I开始db_cache_size、db_keep_cache_size、db_recycle_cache_size
整个BUFFER池设置参数:DB_BLOCK_BUFFERS是9I的 10G变成了DB_CACHE_SIZE

 

 


10.数据库标准块 默认多大?
查看数据库默认的块大小
sys@ora10g> show parameter db_block_size

NAME                      TYPE                 VALUE
------------------------- -------------------- -------------
db_block_size             integer              8192

此处显示,数据库的默认块大小是8K。

11.非标准块支持几种 .什么参数来制定,
查看所有与cache size相关的参数
sys@ora10g> show parameter cache_size

NAME                      TYPE                 VALUE
------------------------- -------------------- -------------
db_16k_cache_size         big integer          0
db_2k_cache_size          big integer          0
db_32k_cache_size         big integer          0
db_4k_cache_size          big integer          0
db_8k_cache_size          big integer          0
db_cache_size             big integer          0
db_keep_cache_size        big integer          0
db_recycle_cache_size     big integer          0

这里列出了2k、4k、8k、16k、32k多种可设置的参数信息。

尝试调整非数据库默认块大小对应的参数
sys@ora10g> alter system set db_16k_cache_size=1m ;

System altered.

sys@ora10g> show parameter cache_size

NAME                      TYPE                 VALUE
------------------------- -------------------- -------------
db_16k_cache_size         big integer          16M
db_2k_cache_size          big integer          0
db_32k_cache_size         big integer          0
db_4k_cache_size          big integer          0
db_8k_cache_size          big integer          0
db_cache_size             big integer          0
db_keep_cache_size        big integer          0
db_recycle_cache_size     big integer          0

调整成功,注意这里的一个现象,设置的是1M大小,系统会自动将这个数值进行调整,调整的依据是:values greater than zero are automatically modified to be either the user-specified-size rounded up to granule size or 4MB * number of CPUs * granule size, whichever is greater

4.尝试调整数据库默认块大小对应的参数
这里我们数据库的默认块大小是8k,因此,这里我们尝试调整“db_8k_cache_size”这个参数。
sys@ora10g> alter system set db_8k_cache_size=1m;
alter system set db_8k_cache_size=1m
*
ERROR at line 1:
ORA-32017: failure in updating SPFILE
ORA-00380: cannot specify db_8k_cache_size since 8K is the standard block size

此处便遇到了“ORA-00380”错误提示。

5.小结
当数据库使用非标准块表空间时,“DB_nK_CACHE_SIZE”参数将会派上用场,正所谓特殊场合特殊设置,因此在默认块尺寸下我们毋须设置与之对应的cache参数。

 

不同块尺寸的数据缓冲区的大小就由相应参数db_nk_cache_size来指定,其中n可以是2,4,8,16或32。
如须创建一个大小为2K的非标准尺寸的表空间,则须先指定db_2k_cache_size为这个表空间指定缓存区的大小。
注意:db_nk_cache_size不能设置默认标准块大小的缓冲区,如默认块大小为8K,
 则不能设置参数db_8k_cache_size,因为这个是用来设置非标准块的。

12.
SQL> create tablespace ts_16k datafile '/u01/oracle/oradata/ora10g/ts_16k01.dbf' size 1M blocksize 16K;
create tablespace ts_16k datafile '/u01/oracle/oradata/ora10g/ts_16k01.dbf' size 1M blocksize 16K
*
ERROR at line 1:
ORA-29339: tablespace block size 16384 does not match configured block sizes


Elapsed: 00:00:00.02
SQL>

如何解决上面的错误

 

13.共享池share_pool由哪两个重要部分组成?一般设置多大合适?
SQL语句缓冲区(Library Cache)和数据字典缓冲区(Data Dictionary Cache)
LIBRARY CACHE和Data Dictionary cache的大小由shared pool size决定,由ORACLE自动管理,不允许手工设置大小
在典型的OLTP高可用环境中,一个太小的共享池会扼杀性能,导致出现ORA-04031错误


ORA-04031错误的解决思路
使用ASMM的情况下04031问题很少,但有些应用不合理也会导致内存耗尽.
1.没有使用绑定变量,导致解析资源占用太多
2.打开过多的cursor不释放
3.bug

第一种.
 使用绑定变量
 使用cursor_sharing参数
第二种.
 查找哪个会话打开的游标比较多
 
 SQL> select sid,count(*) from v$open_cursor group by sid order by 2 desc;

 SID   COUNT(*)
----------- ----------
 148     39
 157     25
 149     22
 147     19
 161     16
 154     15
 162      7
 156      7
 152      2
 150      2
 151      1

11 rows selected.

Elapsed: 00:00:00.01
SQL> select SID,USER_NAME,sql_text from v$open_cursor where sid in (148,157);

找出打开游标多的SID执行的什么SQL,再根据业务判断代码位置.去修改代码

第三种
 打补丁
 

 


14.写日志,写脏块,写控制文件 哪种代表数据有安全保障了?

 


15.update修改数据 先写undo的redo还是先写redo的redo?

16.共享SQL区在哪? 私SQL区在哪?


17.实例恢复哪个进程来做 恢复原理是什么?


18.commit做了什么?

19.从数据文件中读数据是哪个进程,写数据是哪个进程

DBWR写数据,读取数据到buffer cache中,是由服务器进程server process来完成的。

20.LGWR为什么只能有一个进程?

昨天有人问为什么只有一个LGWR进程呢?

在单实例中,确实只有一个LGWR进程,在RAC中,每个实例都有一个LGWR进程。

 

LGWR负责将redo log buffer中的数据写入redo log file.即使你给日志group 分配了多个member,也只有一个LGWR去写入。

注意,多个日志成员他们的同时写入的,并且由一个LGWR同时写入。LGWR写的四个条件就不说了。

 

为什么一个实例只有一个LGWR呢? 为什么Oracle不允许我们像DBWn, ARChn一样可以设置多个LGWR呢?

首先你要搞清楚日志文件是连续的,顺序的,正是由于redo log file是有序的,所以不可能引入并行写入的特征。

假如你有多个LGWR,由于redo log file 是有序的 ,那么必然引入排队机制,引入了排队机制 就不是并行了。

所以一个实例只能有一个LGWR, 这是由log file 是 有序的 这个特征决定的。

21.DBWR为什么可以有多个进程?


22.PGA 自动管理和手动管理怎么配置?

 

23.下面两个参数都属于哪里? 什么叫内存排序 什么叫磁盘排序.sort_area_retained_size=0代表什么?
SQL> show parameter sort_area

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
sort_area_retained_size       integer  0
sort_area_size        integer  65536
SQL>

24.什么叫增量检查点  什么叫完全检查点

25.UGA在专属模式和共享模式位置都分别在哪里?

 


26.参数文件有哪几种 优先级顺序是什么样?

27.如果是spfile启动的话,alter system set open_cursors=100;这句话相当于
alter system set open_cursors=1000 scope = both

28.如果是PFILE启动的话。 alter system set open_cursors=100;这句话相当于
alter system set open_cursors=100 scope = MEMORY。

29.如何验证是Pfile还是SPfile起库?


30.启动数据库时也可以指定参数
startup pfile='/u01/oracle/product/10.2.0/dbs/initora10g.ora'

那么下面的命令可以吗?
startup spfile='/u01/oracle/product/10.2.0/dbs/spfileora10g.ora'


ifile参数有什么意义?

RAC时多实例共享参数加载方法,单实例意义不大 spfile中不能使用此参数
IFILE中和pfile中的参数值冲突时 以最后加载的为准 相当于变量值覆盖一个道理


查看参数是否被修改过 在哪个级别修改过(alter system;alter session)
SQL> SELECT ISMODIFIED FROM V$PARAMETER WHERE NAME='open_cursors';

ISMODIFIED
----------
FALSE

SQL>
SQL> alter system set open_cursors=1000;

System altered.

SQL> SELECT ISMODIFIED FROM V$PARAMETER WHERE NAME='open_cursors';

ISMODIFIED
----------
SYSTEM_MOD

SQL>

MODIFIED:实例启动后被会话级修改过 
SYSTEM_MOD :实例启动后被系统级修改过 
FALSE :实例启动后没修改过 
并不是记录所有参数的修改.

下面选出的三个值分别代表什么含义?
SQL> SELECT distinct ISSYS_MODIFIABLE FROM V$PARAMETER ;

ISSYS_MOD
---------
IMMEDIATE
FALSE
DEFERRED

SQL>

 


31.如何创建spfile

 


32.实例启动三个步骤 关闭的四种方法
启动:
NOMOUNT,读取初始化参数(SPFILE或PFILE),初始化在SPFILE或PFILE里设置的内存及进程的参数内容,并知道了控制文件的地址。
MOUNT阶段读取控制文件信息,知道了该实例化的例程来源于那个库.库里有哪些物理结构组成,如数据文件,临时文件,在线日志文件等。
OPEN读取控制文件和数据文件头的一致性信息,如果有异常关闭的现象,SMON将做一次崩溃恢复,先前滚后回滚


关闭:

SHUTDOWN [ABORT|IMMEDIATE|NORMAL|TRANSACTIONAL]

无论哪种shutdown发起 都不允许普通用户连接了
IMMEDIATE|NORMAL|TRANSACTIONAL 都属于一致性停库 会做完全检查点,卸载数据文件,卸载控制文件.
NORMAL 会等待会话结束 等待事务结束
TRANSACTIONAL 不等待会话结束 等待事务结束
IMMEDIATE 事务和会话都不等待

ABORT 相当于断电 下次启动要实例恢复
33.dba_tablespaces v$parameter v$datafile_header v$controlfile   show parameter controlfile
这几个视图分别可以在哪些阶段查看?            
       

 


34.数据库open的模式默认是什么?怎么启动只读和受限模式?
alter database read only; 只读

alter system enable|disable restricted session;
数据库进入受限模式
只有具备restricted session权限的用户才能连接


另一种涉及操作系统认证的开关:
$ORACLE_HOME/network/admin/sqlnet.ora
 SQLNET.AUTHENTICATION_SERVICES=
 (none) (beq) (all) (nts) 这几个值分别代表什么意思

 

关闭远程as sysdba登录  有时我们要禁止远程as sysdba登录
SQL> show parameter remote_log

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
remote_login_passwordfile      string  EXCLUSIVE
SQL>

remote_login_passwordfile=none
 表示不使用口令文件,也就是禁用了sysdba,sysoper远程登录,其他用户远程不受影响
 这时v$pwfile_users为空,也不能grant sysdba授权
exclusive:表示使用口令文件,只有一个实例使用口令文件,可以添加sysdba账号
shared:表示使用口令文件,可以有多个实例使用口令文件,不可以添加sysdba账号

 

用户的默认口令
sys:change_on_install
system:manager


35.手工建库的步骤是什么?

0 0
原创粉丝点击