的归档模式的高级研究_第1页
的归档模式的高级研究_第2页
的归档模式的高级研究_第3页
的归档模式的高级研究_第4页
的归档模式的高级研究_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、oracle的归档模式一。查看oracle数据库是否为归档模式:1.select name,log_mode from v$database;NAME               LOG_MODE- -QUERY           NOARCHIVELOG2.使用ARCHIVE LOG LIST 命令Database log mode  

2、;            No Archive ModeAutomatic archival             DisabledArchive destination            /data/oracle/product/10.2.0/db_1

3、/dbs/archOldest online log sequence     739Current log sequence           741二。什么是Oracle归档模式?  Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志

4、,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。  如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。  数据库使用归档方式运行时才可以进行灾难性恢复。1.归档日志模式和非归档日志模式的区别非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.

5、归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式.三。配置数据库的归档模式改变非归档模式到归档模式:1)SQL>SHUTDOWN NORMAL/IMMEDIATE;2)SQL>START MOUNT;3)SQL>ALTER DATABASE ARCHIVELOG;4)SQL>ALTER DATABASE OPEN;5)SQL>做一次完全备份,因为非归档日志模式下产生的备份日志对于归档模式已经不可用了.这一步非非常重要!改变归档模式到非归档模式:1)SQL>SHUTDOWN

6、 NORMAL/IMMEDIATE;2)SQL>START MOUNT;3)SQL>ALTER DATABASE NOARCHIVELOG;4)SQL>ALTER DATABASE OPEN;3.启用自动归档: LOG_ARCHIVE_START=TRUE归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,知道归档完成为止.这时只能读而不能写.运行过程中关闭和重启归档日志进程SQL>ARCHIVE LOG STOPSQL>ARCHIVE LOG START4.手动归档: LOG_ARCHIVE_START=FALS

7、E归档当前日志文件SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;归档序号为052的日志文件SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;归档所有日志文件SQL>ALTER SYSTEM ARCHIVE LOG ALL;改变归档日志目标SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH'5.归档模式和非归档模式的转换第4步的逆过程.6.配置多个归档进程Q:什么时候需要使用多个归档进程?A:如果归档过程会消耗大量的时间,那么可以启动多个归档进程

8、,这是个动态参数,可以用ALTER SYSTEM动态修改.SQL>ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=10;Oracle9i中最多可以指定10个归档进程与归档进程有关的动态性能视图v$bgprocess,v$archive_processes7.配置归档目标,多归档目标,远程归档目标,归档日志格式归档目标 LOG_ARCHIVE_DEST_n本地归档目标:SQL>LOG_ARCHIVE_DEST_1 = "LOCATION=D:ORACLEARCHIVEDLOG"远程归档目标:SQL>LOG_ARCHIVE

9、_DEST_2 = "SERVICE=STANDBY_DB1"强制的归档目标,如果出错,600秒后重试:SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = "LOCATION=E:ORACLEARCHIVEDLOG MANDATORY REOPEN=600"可选的归档目标,如果出错,放弃归档:SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = "LOCATION=E:ORACLEARCHIVEDLOG OPTIONAL"归档目标状态:关闭归档目标和打开归档目标

10、关闭归档目标1SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER打开归档目标2SQL>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE归档日志格式LOG_ARCHIVE_FORMAT8.获取归档日志信息V$ARCHVIED_LOGV$ARCHVIE_DESTV$LOG_HISTORYV$DATABASEV$ARCHIVE_PROCESSES我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为: alter 

11、;system kill session sid,serial#     被kill掉的session,状态会被标记为killed,Oracle会在该用户下一次touch时清除该进程. 我们发现当一个session被kill掉以后,该session的paddr被修改,如果有多个session被kill,那么多个session的paddr都被更改为相同的进程地址: SQL> select saddr,sid,serial#,paddr,username,status from v$sessi

12、on where username is not null; SADDR           SID    SERIAL# PADDR    USERNAME                

13、       STATUS - - - - - - 542E0E6C         11        314 542B70E8 EYGLE            &#

14、160;             INACTIVE 542E5044         18        662 542B6D38 SYS            

15、;                ACTIVE SQL> alter system kill session 11,314; System altered. SQL> select saddr,sid,serial#,paddr,username,status from v$session where us

16、ername is not null; SADDR           SID    SERIAL# PADDR    USERNAME                   

17、60;   STATUS - - - - - - 542E0E6C         11        314 542D6BD4 EYGLE                

18、;          KILLED 542E5044         18        662 542B6D38 SYS               

19、0;            ACTIVE SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null; SADDR           SID&#

20、160;   SERIAL# PADDR    USERNAME                       STATUS - - - - - - 542E0E6C      &#

21、160;  11        314 542D6BD4 EYGLE                          KILLED 542E2AA4      

22、;   14        397 542B7498 EQSP                           INACTIVE 542E5044    &

23、#160;    18        662 542B6D38 SYS                            ACTIVE SQL> alter&#

24、160;system kill session 14,397; System altered. SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null; SADDR           SID  

25、60; SERIAL# PADDR    USERNAME                       STATUS - - - - - - 542E0E6C        

26、60;11        314 542D6BD4 EYGLE                          KILLED 542E2AA4        

27、 14        397 542D6BD4 EQSP                           KILLED 542E5044      

28、0;  18        662 542B6D38 SYS                            ACTIVE 在这种情况下,很多时候,资源是无法释放的,我们需要查询spid,在操作

29、系统级来kill这些进程.但是由于此时v$session.paddr已经改变,我们无法通过v$session和v$process关联来获得spid那还可以怎么办呢? 我们来看一下下面的查询:   SQL> SELECT s.username,s.status,   2  x.ADDR,x.KSLLAPSC,x.KSLLAPSN,x.KSLLASPO,x.KSLLID1R,x.KSLLRTYP,   3  decode(bitand (x.ksuprflg,2)

30、,0,null,1)   4  FROM x$ksupr x,v$session s   5  WHERE s.paddr(+)=x.addr   6  and bitand(ksspaflg,1)!=0; USERNAME                 &

31、#160;     STATUS   ADDR       KSLLAPSC   KSLLAPSN KSLLASPO       KSLLID1R KS D - - - - - - - - -     

32、;                                    542B44A8          0  &#

33、160;       0                       0                    

34、;            ACTIVE   542B4858          1         14 24069           &

35、#160;     0    1                                ACTIVE   542B4C08   &#

36、160;     26         16 15901                 0    1            &#

37、160;                   ACTIVE   542B4FB8          7         46 24083   

38、0;             0    1                                ACTIVE&

39、#160;  542B5368         12         15 24081                 0    1     

40、;                           ACTIVE   542B5718         15        &

41、#160;46 24083                 0    1                          

42、60;     ACTIVE   542B5AC8         79          4 15923                 0

43、0;   1                                ACTIVE   542B5E78         50

44、0;        16 24085                 0    1                   

45、             ACTIVE   542B6228        754         15 24081            

46、     0    1                                ACTIVE   542B65D8    &

47、#160;     1         14 24069                 0    1            &#

48、160;                   ACTIVE   542B6988          2         30 14571   

49、0;             0    1 USERNAME                       STATUS   ADDR   &

50、#160;   KSLLAPSC   KSLLAPSN KSLLASPO       KSLLID1R KS D - - - - - - - - - SYS                 

51、           ACTIVE   542B6D38          2          8 24071           

52、60;     0                                         542B70E8   

53、;       1         15 24081               195 EV               

54、60;                         542B7498          1         15 24081  

55、;             195 EV SYS                            INACTIVE 542B7848  

56、0;       0          0                       0 SYS        

57、60;                   INACTIVE 542B7BF8          1         15 24081     

58、60;         195 EV 16 rows selected.   我们注意,红字标出的部分就是被Kill掉的进程的进程地址. 简化一点,其实就是如下概念: SQL> select p.addr from v$process p where pid <> 1 2 minus 3 select s.pa

59、ddr from v$session s; ADDR - 542B70E8 542B7498   Ok,现在我们获得了进程地址,就可以在v$process中找到spid,然后可以使用Kill或者orakill在系统级来杀掉这些进程.实际上,我猜测:当在Oracle中kill session以后, Oracle只是简单的把相关session的paddr 指向同一个虚拟地址.此时v$process和v$session失去关联,进程就此中断.然后Oracle就等待PMON去清除这些Session.所以通常等待一个被标记为Kille

60、d的Session退出需要花费很长的时间.如果此时被Kill的process,重新尝试执行任务,那么马上会收到进程中断的提示,process退出,此时Oracle会立即启动PMON来清除该session.这被作为一次异常中断处理.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#,

61、 C.PROGRAM FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, V$SESSION C WHERE ( A.OBJECT_ID = B.OBJECT_ID ) AND (B.PROCESS = C.PROCESS )ORDER BY 1,2;根据查询到的session_sid查询出session的详细信息:select saddr,sid,serial#,paddr,username,status from v$session where sid='214'如果确保此lock无效,可以kill掉该sessionalter syste

62、m kill session sid,serial#   RMAN的备份中,可以通过Exclude命令排除某些不需要备份的表空间。这样可以缩减备份的容量,对备份进行适当优化和调整。排除某个表空间可以使用类似如下命令:configure exclude for tablespace users;其设置可以在RMAN中通过show exclude命令来查看。如果将来想临时增加排除表空间的备份,可以通过以下命令实现:backup database noexclude;如果想取消排除设置则可以使用如下命令:CONFIGURE EXCLUDE FOR TABLESPACE

63、users CLEAR;此外常用的排除备份命令还有:BACKUP DATABASE SKIP READONLY, SKIP OFFLINE;以下是一个简单的测试过程。执行备份:oracletest126 udump$ rman target / Recovery Manager: Release .0 - Production on Mon Oct 9 06:47:19 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.connected to target database: EYGLE (DBID=25901

64、48133)RMAN> configure exclude for tablespace users;using target database control file instead of recovery catalogtablespace USERS will be excluded from future whole database backupsnew RMAN configuration parameters are successfully storedRMAN> backup full database;Starting backup at 09-OCT-06a

65、llocated channel: ORA_DISK_1channel ORA_DISK_1: sid=527 devtype=DISKfile 4 is excluded from whole database backupchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/opt/oracle/oradata/eygle/system01.dbfinput datafi

66、le fno=00003 name=/opt/oracle/oradata/eygle/sysaux01.dbfinput datafile fno=00002 name=/opt/oracle/oradata/eygle/undotbs01.dbfchannel ORA_DISK_1: starting piece 1 at 09-OCT-06channel ORA_DISK_1: finished piece 1 at 09-OCT-06piece handle=/opt/oracle/flash_recovery_area/EYGLE/backupset/2006_10_09/o1_mf

67、_nnndf_TAG20061009T070612_2lm135od_.bkp tag=TAG20061009T070612 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:48channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetincluding current control file in backupsetchannel ORA_

68、DISK_1: starting piece 1 at 09-OCT-06channel ORA_DISK_1: finished piece 1 at 09-OCT-06piece handle=/opt/oracle/flash_recovery_area/EYGLE/backupset/2006_10_09/o1_mf_ncnnf_TAG20061009T070612_2lm14ppc_.bkp tag=TAG20061009T070612 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:0

69、2Finished backup at 09-OCT-06RMAN> exitRecovery Manager complete.然后关闭数据库,我们可以进行一次恢复尝试:oracletest126 udump$ sqlplus "/ as sysdba" SQL*Plus: Release .0 - Production on Mon Oct 9 07:07:28 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Ent

70、erprise Edition Release .0 - ProductionWith the Partitioning and Data Mining optionsSQL> select name from v$datafile;NAME-/opt/oracle/oradata/eygle/system01.dbf/opt/oracle/oradata/eygle/undotbs01.dbf/opt/oracle/oradata/eygle/sysaux01.dbf/opt/oracle/oradata/eygle/users01.dbfSQL> shutdow

71、n immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> exitDisconnected from Oracle Database 10g Enterprise Edition Release .0 - ProductionWith the Partitioning and Data Mining options看看恢复进程:oracletest126 udump$ rman target / Recovery Manager: Release .0 -

72、Production on Mon Oct 9 07:08:40 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.connected to target database (not started)RMAN> startup mount;Oracle instance starteddatabase mountedTotal System Global Area 536870912 bytesFixed Size 1220460 bytesVariable Size 150995092 bytesDatabase Buf

73、fers 377487360 bytesRedo Buffers 7168000 bytesRMAN> restore database;Starting restore at 09-OCT-06using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: sid=542 devtype=DISKfile 4 is excluded from whole database backupchannel ORA_DISK_1: sta

74、rting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setrestoring datafile 00001 to /opt/oracle/oradata/eygle/system01.dbfrestoring datafile 00002 to /opt/oracle/oradata/eygle/undotbs01.dbfrestoring datafile 00003 to /opt/oracle/oradata/eygle/sysaux01.dbf

75、channel ORA_DISK_1: reading from backup piece /opt/oracle/flash_recovery_area/EYGLE/backupset/2006_10_09/o1_mf_nnndf_TAG20061009T070612_2lm135od_.bkpchannel ORA_DISK_1: restored backup piece 1piece handle=/opt/oracle/flash_recovery_area/EYGLE/backupset/2006_10_09/o1_mf_nnndf_TAG20061009T070612_2lm13

76、5od_.bkp tag=TAG20061009T070612channel ORA_DISK_1: restore complete, elapsed time: 00:00:36failover to previous backupFinished restore at 09-OCT-06RMAN> recover database;Starting recover at 09-OCT-06using channel ORA_DISK_1starting media recoverymedia recovery complete, elapsed time: 00:00:02Fini

77、shed recover at 09-OCT-06RMAN> alter database open;database openedRMAN> 配置监听的方法有3种:Database PLSExtProc Executable Database 模式是标准的配置方式,也是最常用的数据库连接方式。PLSExtProc  模式允许PL/SQL程序访问外部程序,并且被大多数实例配置为默认连接方式Executable  模式允许外部程序能通过一个tns连接被访问(目前没用到过)Database 模式配置方式:(SID_DESC = 

78、0;    (GLOBAL_DBNAME= querymqq)      (ORACLE_HOME= /data/oracle/product/10.2.0/db_1/)      (SID_NAME = mqq)    )PLSExtProc模式配置方式:(SID_DESC =      (SID_NAME = PLSExtProc)    &#

79、160; (ORACLE_HOME = /usr/local/oracle/product/10.2.0/db_1)      (PROGRAM = extproc))在我们新oracle和8.155机器上只使用PLSextProc方式配置,并不能建立连接,还得加database配置。对PLSextProc的解释,网上也没人能说出个名堂,疑惑的提问倒是一堆一堆的。那个e文档也含糊的很。2监听状态命令:lsnrctl status,红色部分为注解LSNRCTL for Linux: Version .0 - Production

80、on 12-3ÔÂ -2007 21:39:27 Copyright (c) 1991, 2005, Oracle.  All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)STATUS of the LISTENER-Alias                 

81、    LISTENERVersion                   TNSLSNR for Linux: Version .0 - ProductionStart Date                12-3&#

82、212;Â -2007 20:53:47Uptime                    0 days 0 hr. 45 min. 39 secTrace Level               off /*关闭跟踪*/Security  

83、;                ON: Local OS Authentication SNMP                      OFF Listener Parameter File    /*监

84、听配置文件地址*/Listener Log File            /*监听日志文件地址*/Listening Endpoints Summary.  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=58)(PORT=1521)Services Summary.Service "MQQ_

85、XPT" has 1 instance(s).  Instance "mqq", status READY, has 1 handler(s) for this service.Service "PLSExtProc" has 1 instance(s).  Instance "PLSExtProc", status UNKNOWN/*UNKNOWN 表示是在listener.ora文件配置*/, has 1 handler(s) for this service.Service "mqq&qu

86、ot; has 1 instance(s).  Instance "mqq", status READY/*READY表示是在DB启动PMON(监控进程)之后,自动注册DB到监听,一般在启动实例后1分钟注册监听*/, has 1 handler(s) for this service.The command completed successfully 3比较容易混淆的概念:Db_name:对一个数据库(Oracle database)的唯一标识。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的

87、管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和Db_domain两个参数用.连接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。Db_name参数只能由字母、数字、_、#、$组成,而且最多8个字符。查看方式:show parameter db_name;Db_domain:定义一个数据库所在的域,域只是为了更好的

88、管理分布式oracle系统。查看方式:show parameter db_domain;Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO db_name.db_domain。查看方式:show parameter global_name;Se

89、rvice_name:该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。查看方式:show parameter

90、service_name;Net service name:网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。查看方式:show parameter Net service name; 4SQLPLUS运行时,建立连接的方式在用户输入sqlplus system/managertest后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由sql

91、plus system/managertest自动变为sqlplus system/manager ,然后再到tnsnames.ora文件中找网络服务名;假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找test网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。 SGA的区域信息2tn:V"c4zm+f9eG0SGA(system global area)系统全局区跟一些必须的后台进程合进来称为实例(Instance)。说它是全局区是包含了全局变量和数据结构,是系统区是包含了进入整个Oracle Instance的数据结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论