联机重做日志。 操作恢复的功能。
    每个数据库都有自己的联机重做日志组(redo log groups).
    叫做事例的联机重做线程(thread).
    日志中都充满了重做纪录( redo records ),  也叫重做项(redo entry)
    可以用重做纪录来重建所有数据库所改变的数据,包括回滚段。
    重做纪录在SGA 的重做日志缓冲器中循环放入缓冲器。通过LGWR将从SGA的重做日志缓冲器中      将事务重做纪录写入到重做日志文件中。  分配SCN系统更改号。
      日志由2个或更多的重做日志文件组成。1个用于写操作。另1个用于存档。
    LGWR 通过循环方式写联机重做日志。写满了,就写下一个。

删除重做日志组:(重做日志必须是非激活的)   alter database  权限
   alter database drop logfile group3 ;
删除之后,可以删除联机重做日志文件。
 
删除重做日志成员:(非激活的)     alter system  权限     
    alter database drop logfile member '/oracle/dbs/log3.rdo'

强制日志切换:            alter system   权限
   alter system switch logfile;

校验重做日志文件中的块。  
   设置LOG_BLOCK_CHECKSUM 为TRUE 来启动。 缺省为 FLASE 。

清除联机重做日志文件:
    alter database clear unarchived logfile group3;

使用  v$log  v$logfile v$thread  视图来查看联机重做日志的信息。
例如: select group#, bytes, members from sys.v$log ;


存档重做日志:(archived redo logs)
    就是将联机重做日志组保存到脱机的目标中。存档(Archiving).ARCn后台的进程。
    主要功能:1,恢复数据库
              2,更新一个备用的数据库
              3,获得数据库的历史信息。

 备份当前的联机日志的最好方法是存档他。在备份到存档日志中。

在非存档模式(NOARCHIVELOG)下只可以修复数据库,而不是恢复。不可以联机表空间的备份。
在存档模式下,可以启用联机重做日志的存档。充满的联机重做日志文件才可以被 使用。在重做日志切换后,充满的组的存档立即可用。
   1,数据库的备份和联机与存档的重做日志文件在一起。 
   2,保存一个存档的日志,就可完成备份。
   3,可以把原始的存档重做日志应用到备用数据库。同步备份。

改变数据库的存档模式
     alter database archivelog;
启动自动存档:  (必须是在ARCHIVELOG 模式下)
    在数据库的ini 文件中设置:    LOG_ARCHIVE_START=TRUE
                       也可       ALTER SYSTEM ARCHIVE LOG START;
禁止自动存档:
    在数据库的ini 文件中设置:    LOG_ARCHIVE_START=FASLE
                       也可       ALTER SYSTEM ARCHIVE LOG STOP;
手动的存档:         ALTER SYSTEM ARCHIVE LOG ALL;

调整存档性能:
1,指定多个 ARCn 进程。( 缺省为 1 )
      ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESS=4;
     可查询 V$ARCHIVE_PROCESSES 视图来查看每个存档程序的状态。
2,调整存档缓冲器参数。
    设置初始化参数: LOG_ARCHIVE_BUFFERS 和 LOG_ARCHIVE_BUFFER_SIZE 
    减少对系统的影响 :设置 BUFFERS为1获2。 设置  BUFFERS_SIZE 为较大。
    提高存档速度则反之。

查询存档重做日志的信息:
   固定视图:V$DATABASE      ,  V$ARCHIVED  ,  V$ARCHIVE_DEST  ,  V$ARCHIVE_PROCESSES,                V$BACKUP_REDOLOG,  V$LOG        ,V$LOG_HISTORY
   例如:下面的语句:
    select * from sys.v_$archive_dest;

日志采集器:( V$LOGMNR_CONTENTS )视图 ,用户可使用此视图来
    查询数据库的逻辑错误,查明用户需要的执行不完全恢复的时间或SCN。
    跟踪特定表的改变。
    跟踪特定用户的改变。
    映射数据访问方式。
    使用存档数据进行调整和容量规划。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

热备份的最后步骤中有ARCHIVE LOG CURRENT(或别的,如ARCHIVE LOG ALL、ALTER SYSTEM SWITCH  LOGFILE)命令。

需要备份的文件:
1,表空间/数据文件
2,联机重做日志
3,控制文件
4,存档重做日志
5,初始化与配置文件
   初始化文件,如init.ora 和 config.ora ,以及配置文件:如listener.ora, tnsnames.ora, protocol.ora,snmp.ora 等文件。
6,警告日志和有关的跟踪文件
7,oracle 软件

  定期检查备份日志文件:

  避免手工执行备份 ,要使用自动化工具,或是脚本。
    应从数据字典目录(v$datafile dba_data_files等 )中读取文件名信息。

 在重新使能 的模式后,非常有必要马上做个完整的备份。这个完整备份可用来保证完整恢复的可能。    

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

物理数据备份是下面各项的拷贝:(定期备份)
■ 数据文件。
■ 控制文件。
■ 可用的归档重做日志

冷备份就是 “offline backup” ,  热备份就是"online backup"
在archivelog 模式下,能够恢复到最后一次的提交状态下。
在不是archivelog模式下,就能恢复到最后一次备份状态下了。

关闭数据库:
使用shutdown normal 、shutdown immediate 来关闭数据库。
文件位置:
   select value from v$parameter where name ='log_archive_dest';


逻辑备份用于实现数据库对象的恢复并且它是一个全面备份策略的必要的组成部分,
        用来保证数据库能够从无意中的修改(例如DELETE、DROP或UPDATE)中恢复出来
即是使用   imp \exp  -direct


冷备份:
  恢复完全是基于操作系统的,需要恢复如下的数据库文件:
■ init<instance>.ora。
■ config<instance>.ora。
■ 重做日志。
■ 控制文件。
■ 数据文件。
■ 归档重做日志。

恢复数据:
假如你丢失了一个控制文件,你可以用当前控制文件的拷贝来替换它。所有用于你的实
例的控制文件在init<sid>.ora文件中列出。
Oracle将使用存放在系统中不同位置上的重做日志的拷贝来替换已丢失的重做日志。在修
理了数据文件后,再恢复丢失的重做日志文件。
在继续操作以前,仔细检查自上次备份开始以来你所拥有的全部归档日志。它们应全部
存放在归档日志目录中(或至少在系统中的一个或多个其他目录中)。现在准备把老数据文件
前滚到最后一次提交时的水平:
1)启动服务器管理器。
2)像平常一样启动数据库。
3)当数据库试图打开时, Oracle会发现一个或多个数据文件含有过时的序列号。Oracle
将停下来等待你恢复该数据库。你现在应键入如下语句:
RECOVER AUTOMATIC DATABASE;
4)当恢复结束后,过时的数据文件将得到前滚。
5)正常关闭数据库。假如你丢失了一个重做日志文件,你可以用一个来自相同组号的当
前且有效的重做日志文件拷贝替换它。通过查询V$LOG,你可以确定同一个重做日志组中含
有什么文件。
6)执行数据库的冷备份。
7)正常启动数据库。

########################################################################################################################################################################


回退段:
    使用多个回退段:
给回退段分派事务处理:set transaction use rollback segment largs_rs1;


   
   
***************************************************************************************************************************************************  

系统调优:  

alter system set timed_statistics=true;

SELECT a.sid,b.spid,status,
       a.program,a.terminal,a.osuser,VALUE/60/100 mins
FROM V$session a,
     v$process b,
     v$sesstat c
WHERE c.statistic#=12
AND c.sid=a.sid
AND a.paddr=b.addr
看一下是哪个进程

给你个参考:
(1).init配置文件,新机器上的配置文件是否已经按照你的机器资源的状况作过调整,你可以使用旧机器上的配置文件做对比,甚至可以直接使用旧机器的配置文件做测试。
(2).sga区域的划分,建议你将sga的大小设定为内存的一半或一半略大一些,sga的其他内存分区也要做相应的调整。
(3).新机器的表空间的大下,特别是rollback表空间和system表空间的大小,此外你的业务数据是否单独建立了自己的表空间,这是很重要的。
(4).检查你的template表空间是否与system表空间和业务数据表空间分开了,对于大量数据处理的复杂查询需要一个独立的template表空间。
(5).检查你的rollabck segment的大小和个数的设置,如果rollback segment太小,会出现速度很慢的情况。
(6).新机器的索引是否全部建立,检查你的数据库设计文档或旧机器的数据库,那里应该有你的数据库全部索引,对应他们分别创建起来。
(7).如果数据量比较大,数据修改频率较高,需要为索引单独建立表空间,这样会提高效率。
(8).如果上述都不能起作用,建议你在sqlplus中单步执行你的复杂的查询,以确定引起速度缓慢的具体原因和具体的表,如果有必要,可以重新导入某个表(此表需要先导出)。我曾遇到过由于oracle内部错误导致的上述问题,但那是由于将低版本的数据导入高版本时产生的

查询数据表中的前10条:   
   select * from tbname where rownum<=10
  

查询条件中的单引号问题 :
select * from table1 where col1 like 'I''m a boy%'  或
select * from table1 where col1 like '%I'||chr(39)||'m a boy%';  chr(39)表示就是单引号。


???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
输出exp 的参数:
E:\>exp help=y

通过输入 EXP 命令和用户名/口令,您可以
在用户 / 口令之后的命令:

或者,您也可以通过输入跟有各种参数的 EXP 命令来控制“导出”的运行方式。
要指定参数,您可以使用关键字:

格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
实例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字   说明(默认)
---------------------------------------------------
USERID   用户名/口令
FULL   导出整个文件 (N)
BUFFER   数据缓冲区的大小
OWNER   所有者用户名列表
FILE   输出文件 (EXPDAT.DMP)
TABLES   表名列表
COMPRESS   导入一个范围 (Y)
RECORDLENGTH  IO 记录的长度
GRANTS   导出权限 (Y)
INCTYPE   增量导出类型
INDEXES   导出索引 (Y)
RECORD   跟踪增量导出 (Y)
ROWS   导出数据行 (Y)
PARFILE   参数文件名
CONSTRAINTS  导出限制 (Y)
CONSISTENT   交叉表一致性
LOG   屏幕输出的日志文件
STATISTICS   分析对象 (ESTIMATE)
DIRECT   直接路径 (N)
TRIGGERS   导出触发器 (Y)
FEEDBACK   显示每 x 行 (0) 的进度
FILESIZE   各转储文件的最大尺寸
QUERY   选定导出表子集的子句

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE  导出可传输的表空间元数据 (N)
TABLESPACES  将传输的表空间列表

ORACLE数据库备份实用方案

根据实际需要决定数据库的运行方式 
ORACLE数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复所有已提交的事物;二是不归档方式(NOARCHIVELOG),恢复数据库到最近的回收点。我们根据数据库的高可用性和用户可承受丢失的工作量的多少,把我们正式运行的数据库采用为归档方式;那些正在开发和调试的数据库采用不归档方式。 
如何改变数据库的运行方式 
---- 3.1在创建数据库时设置数据库的运行的方式 
---- 在创建数据库时,作为创建数据库的一部分,就决定了数据库初始的存档方式。一般情况下为NOARCHIVELOG方式。当数据库创建好以后,根据我们的需要把需要运行在归档方式的数据库改成ARCHIVELOG方式。 
改变不归档方式为为归档方式 
关闭数据库,备份已有的数据 
改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。 
启动Instance ,Mount数据库但不打开数据库,来改变归档方式 
sqldba lmode=y(svrmgrl) 
sqldba>connect internal 
sqldba>startup mount 
sqldba>alter database archivelog;

使能自动存档 
在初始化文件init*.ora(一般放ORACLE根目录的下层目录dbs下)加参数: 
log_archive_start=true

指定存档的重做登录文件名和存放的位置 
同样是在初始化文件init*.ora中加入下面的参数: 
log_archive_format=%S.arc 
log_archive_dest=/arch12/arch (arch12 是日志文件存放的目录)

关闭数据库,重新启动数据库,归档方式转换完成。 
回收制度 
根据数据库的运行方式和可承受丢失的工作量来决定数据库的回收制度对于不归档方式,我们用的是ORACLE数据库的逻辑备份Export ,回收的制度是:一个月作一次全备份(x01.dmp),一周作一次累积备份(c*.dmp),一天一次增量备份(I*.dmp),具体的是星期一到星期五作增量备份,星期六做累积备份或全备份,每次做完备份后自动传到其它的机器上存储。这些备份都是自动执行的,后面给出程序文本。 
---- 对于归档方式,我们用的是ORCALE的物理备份:当数据库创建好以后,做一次物理上的全备份,平时在不关闭数据库的前提下,一个星期对经常改变的数据文件做联机的数据库数据文件的物理备份;当数据库的结构发生改变,如:增加表空间,加数据文件等,如允许关机,正常关闭数据库,重新做数据库全备份,否则,备份控制文件,备份数据文件照常。联机的日志文件我们是写在阵列上的,不用镜象和备份。 
回收的方法 
不归档方式 
---- 我们拿曙光AIX操作系统为例,来讲解以下如何做自动备份: 
---- a.首先建UNIX用户 demo/demo 
---- b.拷贝oracle用户下的 .profile 到 demo 用户下,以保证 demo 用户可以用 Export命令 
---- c.用root用户登录,编辑 /var/adm/cron/cron.allow 加入用户名demo,这样demo用户就有权自动执行数据库备份的shell程序; 
---- d.创建数据库备份程序,放到本用户的下层目录bin下,并且这些文件要有可 执行权文件zlbf1增量备份1,星期一执行的程序) 
. /u11/demo/.profile 
exp system/manager inctype=INCREMENTAL file=i01.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put i01.dmp 
close 
bye 

文件zlbf2增量备份2, 星期二执行的程序) 
. /u11/demo/.profile 
exp system/manager inctype=INCREMENTAL file=i02.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put i02.dmp 
close 
bye 

文件zlbf3增量备份3, 星期三执行的程序) 
. /u11/demo/.profile 
exp system/manager inctype=INCREMENTAL file=i03.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put i03.dmp 
close 
bye 

文件zlbf4增量备份4, 星期四执行的程序) 
. /u11/demo/.profile 
exp system/manager inctype=INCREMENTAL file=i04.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put i04.dmp 
close 
bye 

文件zlbf5增量备份5, 星期五执行的程序) 
. /u11/demo/.profile 
exp system/manager inctype=INCREMENTAL file=i05.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put i05.dmp 
close 
bye 

文件zlbf6增量备份6, 星期六执行的程序) 
. /u11/demo/.profile 
js=`ls c*.dmp|wc -l` 
if test $js = 0 
then 
exp system/manager inctype=CUMULATIVE file=c01.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put c01.dmp 
close 
bye 

fi 
if test $js = 1 
then 
exp system/manger inctype=CUMULATIVE file=c02.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put c02.dmp 
close 
bye 

fi 
if test $js = 2 
then 
exp system/maneger inctype=CUMULATIVE file=c03.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put c03.dmp 
close 
bye 

fi 
if test $js = 3 
then 
exp system/manager inctype=COMPLETE file=x01.dmp 
ftp -n< < ! 
open 10.10.10.40 
user demo demo 
binary 
prompt 
cd backup40 
put x01.dmp 
close 
bye 

rm c*.dmp 
fi

---- e.在demo 用户下建一个文件,假如叫:cron.demo,文件内容如下 
59 22 * * 1 bin/zlbf1 
59 22 * * 2 bin/zlbf2 
59 22 * * 3 bin/zlbf3 
59 22 * * 4 bin/zlbf4 
59 22 * * 5 bin/zlbf5 
59 22 * * 6 bin/zlbf6

---- f.在demo用户下执行下面的命令: 
crontab cron.demo 执行的结果放到 
/var/spool/cron/crontabs/demo文件里

---- g.重新启动cron 进程,命令:kill -1 进程号 
---- h.执行结果放在本用户的邮件里

---- i.查看结果是否执行,请看:/var/adm/cron/log文件

---- 4.2.2归档方式

---- a. 找到要回收的数据文件、联机重做登录文件、控制文件和参数文件

---- b. 正常关闭数据库,作一次全回收(用操作系统的TAR命令,可以写成shell程序),然后打开数据库供正常使用,shell程序如下:

tar cvf /dev/rmt/ctape2 /u1/oracle/dbs/ctrl1ora7.ctl 
/u1/oracle/dbs/ctrl2ora7.ctl 
/u1/oracle/dbs/ctrl3ora7.ctl 
/u1/oracle/dbs/systora7.dbf 
/u1/oracle/dbs/rbsora7.dbf 
/u1/oracle/dbs/tempora7.dbf 
/u1/oracle/dbs/toolora7.dbf 
/u1/oracle/dbs/usrora7.dbf 
/ls1/ls1.dbf 
/u1/oracle/dbs/log1ora7.dbf 
/u1/oracle/dbs/log2ora7.dbf 
/u1/oracle/dbs/log3ora7.dbf 
---- a. 经常作联机的表空间和数据文件的部分回收 
首先标记联机表空间回收的开始 
alter tablespace 表空间名 begin backup; 
用操作系统命令备份数据文件

最后标记联机的表空间回收结束 
alter tablespace 表空间名 end backup 
---- 多个表空间可以一起做标记,备份做标记的所有数据文件后,一起标记结束。 
---- d. 当数据库结构发生改变后,要对它的控制文件做回收

sqldba >alter database backup 
controlfile to '文件名' reuse;

请问如何在jsp中直接访问oracle数据库,能提供一个简单的例子吗?

首先,你要将oracle的驱动classes12.zip加到环境变量中去。

public String ConnDatabase()
 throws SQLException, ClassNotFoundException{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL",
                "system","manager");
Statement stmt = conn.createStatement();
String sque = "select sysdate from dual";    
ResultSet rset = stmt.executeQuery(sque);
while(rset.next())
   {
    String sDate = rset.getString(1);
   }
   return  sDate ;
  rset.close();
   stmt.close();
   conn.close();
}

然后就可以了


@@检查表锁定问题:

SELECT A.OWNER,   
         A.OBJECT_NAME,   
         B.XIDUSN,   
         B.XIDSLOT,   
         B.XIDSQN,   
         B.SESSION_ID,   
         B.ORACLE_USERNAME,   
         B.OS_USER_NAME,   
         B.PROCESS,   
         B.LOCKED_MODE,   
         C.MACHINE,   
         C.STATUS,   
         C.SERVER,   
         C.SID,   
         C.SERIAL#,   
         C.PROGRAM  
    FROM ALL_OBJECTS A,   
         V$LOCKED_OBJECT B,   
         SYS.GV_$SESSION C 
   WHERE ( A.OBJECT_ID = B.OBJECT_ID ) 
     AND (B.PROCESS = C.PROCESS )
   ORDER BY 1,2
   
  

数据库中的初始化参数说明:
    http://www.orafaq.com/parms/parms817.htm


tns 的问题:
   ping  主机 , tnsping 连接数据库的实例.

oracle 的名词:

联机事务处理: OLTP
决策支持系统: DSS
区间:  EXTENT
系统全局区:(共享全局区) SGA 
进程全局区: PGA
用户全局区: UGA
多线程服务器:MTS
系统监控和进程监控:SMON \PMON
数据库写进程:    DBWR
日志写进程:      LGWR
调度进程:        Dnnn
归档进程:        ARCH
检查点:          CKPT
恢复进程:        RECO
快照进程:        SNPn
锁进程:          LCKn
并行查询进程:    Pnnn
用户和服务器进程:Snnn