当前位置:  数据库>oracle
本页文章导读:
    ▪SQL 级联删除      on delete cascade 当你更新或删除主键表时,那么外键表也会跟随一起更新或删除,需要在建表时设置级联属性CREATE TABLE Countries(CountryId INT PRIMARY KEY) INSERT INTO Countries (CountryId) VALUES (1) INSERT INTO Countr.........
    ▪Oracle日志文件被误删除      目录1       问题出现... 21.1        误删除日志文件... 21.2        Oracle无法连接... 22       大概解决.........
    ▪[转]Oracle数据库System Global Area(SGA)的理解      1 概述  Oracle SGA区的监控和管理,是数据库日常维护的重要内容。本文详细介绍SGA的基本概念,SGA运行情况检查,以及SGA的参数设置原则,希望对大家的有所帮助。  2 SGA的基本概念  .........

[1]SQL 级联删除
    来源:    发布时间: 2013-10-29
on delete cascade 当你更新或删除主键表时,那么外键表也会跟随一起更新或删除,需要在建表时设置级联属性CREATE TABLE Countries(CountryId INT PRIMARY KEY)
INSERT INTO Countries (CountryId) VALUES (1)
INSERT INTO Countries (CountryId) VALUES (2)
INSERT INTO Countries (CountryId) VALUES (3)

CREATE TABLE Cities( CityId INT PRIMARY KEY  ,CountryId INT REFERENCES Countries ON DELETE CASCADE);
INSERT INTO Cities VALUES(1,1)
INSERT INTO Cities VALUES(2,1)
INSERT INTO Cities VALUES(3,2)

CREATE TABLE Buyers(CustomerId INT PRIMARY KEY ,CityId INT REFERENCES Cities ON DELETE CASCADE);
INSERT INTO Buyers  VALUES(1,1),
INSERT INTO Buyers  VALUES(2,1)
INSERT INTO Buyers  VALUES(3,2)

此外还有级联更新
on update cascade

本文链接


    
[2]Oracle日志文件被误删除
    来源:    发布时间: 2013-10-29

目录

1       问题出现... 2

1.1        误删除日志文件... 2

1.2        Oracle无法连接... 2

2       大概解决思路... 2

2.1        SYS登录数据库... 2

2.2        关闭数据库NORMAL. 2

2.3        启动Oracle例程... 2

2.4        打开数据库... 2

2.5        查看日志组... 2

2.6        重新登录数据库... 2

3       代码示例... 2

4       小结... 4

 

1       问题出现

1.1              误删除日志文件

C:\oracle\oradata\YONGFENG的REDO01.LOG与REDO03.LOG

(C:\oracle\oradata\YONGFENG该文件夹下本该3个日志文件,即REDO01.LOG、REDO03.LOG、REDO03.LOG)

1.2              Oracle无法连接

Oracle无法连接(能启动),系统报错:

ora-01033:oracle initializationg or shutdown in progress

2       大概解决思路

2.1              SYS登录数据库

2.2              关闭数据库NORMAL

2.3              启动Oracle例程

2.4              打开数据库

2.5              查看日志组

2.6              重新登录数据库

3       代码示例

C:\Documents and Settings\zhyongfeng>sqlplus "sys/zyf as sysdba"

SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-01147: SYSTEM 表空间文件 1 处于脱机状态
ORA-01110: 数据文件 1: 'C:\ORACLE\ORADATA\YONGFENG\SYSTEM01.DBF'

SQL> shutdown normal
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 126950220 bytes
Fixed Size 453452 bytes
Variable Size 109051904 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
ORA-01147: SYSTEM 表空间文件 1 处于脱机状态
ORA-01110: 数据文件 1: 'C:\ORACLE\ORADATA\YONGFENG\SYSTEM01.DBF'

SQL> alter database datafile 1 online;
数据库已更改。

SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORADATA\YONGFENG\REDO01.LOG'

SQL> select group#,sequence#,archived,status from v$log;

GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 20 NO INACTIVE
2 21 NO CURRENT
3 19 NO INACTIVE

SQL> alter database clear logfile group 1;

数据库已更改。

SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00313: 无法打开日志组 3 (线程 1) 的成员
ORA-00312: 联机日志 3 线程 1: 'C:\ORACLE\ORADATA\YONGFENG\RED
    
[3][转]Oracle数据库System Global Area(SGA)的理解
    来源:    发布时间: 2013-10-29

1 概述

  Oracle SGA区的监控和管理,是数据库日常维护的重要内容。本文详细介绍SGA的基本概念,SGA运行情况检查,以及SGA的参数设置原则,希望对大家的有所帮助。

  2 SGA的基本概念

  当启动Oracle数据库时,系统会先在内存内规划一个固定区域,用来储存用户需要的数据,以及Oracle运行时必备的系统信息。我们称此区域为系统全局区(System Global Area),简称SGA。

  SGA 包含数个重要区域,分别是:

  ■ Database Buffer Cache (数据库缓冲区)

  ■ Redo Log Buffer (重做日志缓冲区)

  ■ Shared Pool (共享区)

  ■ 其它,如Java pool, Large pool

  2.1 Database Buffer Cache (数据库缓冲区)

  数据库缓冲区的作用主要是在内存中缓存从数据库中读取的数据块。数据库缓冲区越大,为用户已经在内存里的共享数据提供的内存就越大,这样可以减少所需要的磁盘物理读。

  在9i以前数据库缓冲区的大小是由db_block_buffers*db_block_size 来决定大小的。db_block_size参数是在创建数据库时设置的,OLTP系统的db_block_size一般设置为8k。

  在9i中,数据库缓冲区的大小由db_cache_size决定,8i中的db_block_buffers被取消。db_cache_size的单位是字节,它直接决定了数据库缓冲区的大小,而不再是块的数量。

  2.2 Shared Pool (共享区)

  共享区由三部分组成,分别是Dictionary cache(包括数据字典的定义,如表结构、权限等),Library cache(包括共享的sql游标,sql原代码以及执行计划、存储过程和会话信息)和Control structure。它的大小由初始化参数shared_pool_size控制,它的作用是缓存已经被解析过的SQL,使其能被重用,不用再解析。SQL的解析非常消耗CPU的资源,如果一条SQL在Shared pool中已经存在,则进行的仅是软解析(在Shared pool中寻找相同SQL),这将大大提高数据库的运行效率。当然,这部分内存也并非越大越好,太大的Shared pool,oracle为了维护共享结构,将付出更大的管理开销。建议在150M-500M之间。如果系统内存为1G,该值可设为150M-200M;如果为2G,该值设为250M-300M;每增加1G内存,该值增加100M;但该值最大不应超过500M。

  2.3 Redo Log Buffer (重做日志缓冲区)

  Log_buffer是重做日志缓冲区,对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR 进程将它写入磁盘。LGWR的写入条件是:用户提交、有1/3 重做日志缓冲区未被写入磁盘、有大于1M 重做日志缓冲区未被写入磁盘、超时、DBWR需要写入的数据的SCN 号大于LGWR 记录的SCN 号,DBWR 触发LGWR写入。

  从中可以看出,大于1M的log buffer值意义并不大。重做日志缓冲区的大小由初始化参数log_buffer设定。

2.4 Large pool和Java pool

  Large pool:用于MTS、并行查询和RMAN。如果使用了MTS或RMAN,large_pool特别有用,它可以降低用户对share pool的争用。

  如果应用系统不使用MTS,也不使用RMAN,large_pool_size的大小可设为1M。

  Java pool:Oracle8I以后,oracle数据库内置了对java的支持,如果数据库安装时选择了JServer组件,则这个值可以设置为20M-30M之间。可以查询v$option动态视图,如果java那一项值为true,则表示安装了JServer,为false,表示未安装。

  如果应用系统不使用PORTAL,APPS,也不使用RMAN,Java pool值的大小可设为1M。如果系统需要安装补丁,建议先把Java pool值的大小临时增加到50-150M。

  3 SGA运行情况检查

  3.1 SGA整体检查

  对于SGA部分,我们通过sqlplus查询:

SQL> show sga
  Total System Global Area 316899848 bytes

  Fixed Size 741896 bytes

  Variable Size 150994944 bytes

  Database Buffers 163840000 bytes

  Redo Buffers 1323008 bytes

或者

SQL> select * from v$sga;
  NAME VALUE

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

  Fixed Size 741896

  Variable Size 150994944

  Database Buffers 163840000

  Redo Buffers 1323008

Show sga的结果和SGA的初始化参数配置并不是完全一一对应的,下面是每一个部分的具体解释:

  Fixed Size

  oracle 的不同平台和不同版本下可能不一样,但对于确定环境是一个固定的值,里面存储了SGA各部分组件的信息,可以看作引导建立SGA的区域。

  Variable Size

  包含了shared_pool_size、java_pool_size、large_pool_size等内存设置和用于管理数据缓冲区等内存结构的hash table、块头信息等。

     Database Buffers

  指数据缓冲区,在8i中包含default pool、buffer_pool_keep、buffer_pool_recycle三部分内存。在9i中包含db_cache_size、db_keep_cache_size、db_recycle_cache_size、db_nk_cache_size。这里要注意在8i中三部分内存总和为db_block_buffers*db_block_size。

  Redo Buffers

  指重做日志缓冲区的实际大小,和log_buffer的值可能稍有不同。

  3.2 Data buffer 命中率检查

检查语句:

SQL>select 1 - (phy.value / (cur.value + con.value)) "HIT RATIO"
  from v$sysstat cur, v$sysstat con, v$sysstat phy where cur.name = 'db block gets'

  and con.name = 'consistent gets'

  and phy.name = 'physical reads';

调整原则:

  命中率不应该低于90%.

  如果该值过低,应该调高初始化参数。8i调整db_block_buffer,9i调整db_cache_size。

  3.3 Dictionary cache命中率检查

  检查语句:

SQL>SELECT 1 - (SU
    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,