oracle自动存档模式

CMD

sqlplus system/yifisoft@yf_stmp as sysdba

 

查看当前数据库模式

连接进入数据库,键入以下命令:

复制代码代码如下:


 SQL> archive log list;
 


可查看当前数据库的模式,若数据库日志模式    非存档模式则有必要进行以下的切换流程。

在切换之前,请确保以下参数的设置

log_archive_dest_n 参数设置归档日志目标,其中n用数字替换。在Oracle9in的范围是1~5,在Oracle10gn可以取值1~10。设置方式如下:

复制代码代码如下:


 SQL> alter system set log_archive_dest_1="location=path" scope=both;
 alter system set log_archive_dest_1='location=D:\arch';


其中,path是存储归档日志文件的文件夹路径。最后的scope=both是为了将设置应用到当前数据库实例,以及将参数设置保存到SPFILE中,数据库重启时直接加载SPFILE中的参数信息。
可以设置多个归档日志目标。设置多个目标,在进行归档的时候归档日志文件可以同时保存成多个归档版本,设置多个目标是个好习惯,虽然在问题出现之前似乎没有必要^_^

关闭数据库

复制代码代码如下:


 SQL> shutdown immediate
 

关闭数据库一般不会出现什么问题,但在数据库投入使用之后,关闭数据库必须是迫不得已的(即使你是故意关闭它也要表现得很迫不得已,呵呵)——最好确保关闭是没有人正在使用数据库,要不然,有你等的^_^

启动数据库为挂起(mount)状态

复制代码代码如下:


SQL> startup mount

行至此步,真正的问题才出现。mount了无数次始终startup不上,说是监听程序无法监听到你当前的例程了。当然,如果监听程序配置得当,此类问题是不会在这里出现的。既然是监听程序出现问题,那么就从这里入手进行解决。在oracle数据库的安装目录下(路径可能如:E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN)可以找到listener.ora这种参数文件,可用记事本打开它们进行编辑和保存。当然直接手工修改这个文件并非明智之举,因为其中的括号可以扼杀你无数的脑细胞。在安装oracle时一般都会默认安装Net Manager这个组件,它可以帮助你轻松地配置监听程序的烦人参数:
Oracle Net配置 》监听程序 LISTENER,在窗体右边最上边的下拉框中选择数据库服务。如果你尚未监听数据库服务,那么这就是你解决问题的关键所在。添加数据库,全局数据库和SID设置为与tnsnames.ora文件中的SERVICE_NAME相同的值(注:tnsnames.ora文件与listener.ora文件在同一个目录下)。保存,则在listener.ora中就会多出一些设置,如下:

设置好之后

复制代码代码如下:


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
      (SID_NAME = ORCL)
    )
  )

红色部分正式监听程序中未配置完整的内容,现在配置好它,则以上无法使数据库进入挂起状态的问题就可以解决了。注意,以上假设tnsnames.ora文件中的SERVICE_NAME就是ORCL。当然,配置好监听程序参数后并未马上应用到监听程序中,我们还需要重新载入监听程序,进入命令行:

复制代码代码如下:


 C:\>lsnrctl
 LSNRCTL> reload


重新连接一次数据库,则结果是已连接到空闲例程。此时再startup mount,则可顺利进入挂起状态。

在挂起状态的数据库例程中切换模式

复制代码代码如下:


 SQL> alter system archivelog;        alter database archivelog;
 


提示数据库已更改。在打开数据库后,用archive log list可以查看当前模式:数据库日志模式    存档模式。

打开数据库

复制代码代码如下:


 SQL> alter database open;
 

挂起状态的数据库并非真实可用的状态,只有打开的数据库才是运行中可使用的例程。

结尾工作

打开自动归档

复制代码代码如下:


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

手工归档;

复制代码代码如下:


 SQL> alter system switch logfile; --可进行手工归档检测以上设置是否已经被应用到当前数据库中

设置快闪区大小

复制代码代码如下:


 SQL> alter system set db_recovery_file_dest_size=5368709102;  --5G
 

其他问题
在切换模式的过程中我还碰到一个问题,即在我用写字板打开SPFILE时无意中按了保存。小小的保存带来大大的问题,SPFILE是一种二进制文件,写字板虽然能打开正常浏览大部分内容却无法读取文件中第一行的文件标识(正常情况下用写字板打开文件第一行是乱码,关键啊)。保存,得,SPFILE就被改成普通文本了,人是好读了,但Oracle不认识。没办法,重新建一个呗。

重建SPFILE需要系统中的PFILEPFILE好的地方是它是文本文件^_^一般在建数据库的同时就已经创建了它,它所在的路径可能如下:E:\oracle\product\10.2.0\admin\orcl\pfile\。在此路径下有一个以init.ora.为文件名开头的文件,该文件的文件名结尾的部分是一串数字(默认情况下)。以sysdba的身份连接到数据库空闲例程(没有SPFILE数据库无法启动打开,只能连接到空闲例程如:conn / as sysdba),重建SPFILE的命令如下:

复制代码代码如下:


SQL> create spfile='E:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA' from pfile='E:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.************';

若重建成功,则提示文件已创建。创建新的SPFILE后数据库就能正常启动了,但是,以后请记住用系统命令alter system set...... scope=spfile;去修改SPFILE的内容。

 

更改ORACLE归档路径及归档模式

 

ORACLE10g11g版本,ORACLE默认的日志归档路径为闪回恢复区($ORACLE_BASE/flash_recovery_area)。对于这个路径,ORACLE有一个限制,就是默认只有2G的空间,而且不只是归档日志的默认路径,也是备份文件和闪回日志的默认地址,这样的话归档日志锁使用的空间就达不到2G,在没有设置好这个路径大小的情况下,很多系统都遇到过归档日志满而无法归档导致数据库夯住的问题,可以使用下面的SQL语句去查看归档信息。

 

SQL> archive log list

数据库日志模式             非存档模式

自动存档             禁用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列     321

当前日志序列           326

 

上面的存档终点USE_DB_RECOVERY_FILE_DEST默认就是闪回恢复区($ORACLE_BASE/flash_recovery_area),可以通过下面的SQL查看闪回恢复区的信息。

  www.2cto.com  

SQL> show parameter db_recover

NAME                        TYPE         VALUE

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

db_recovery_file_dest       string      D:\oracle\flash_recovery_area

db_recovery_file_dest_size  big integer   2G

 

通过上面的SQL结果可以看到,闪回恢复区为D:\oracle\flash_recovery_area,大小为2G,也可以通过查询v$recovery_file_dest视图查看闪回恢复的限制信息。

 

SQL> select name,SPACE_LIMIT,SPACE_USED from v$recovery_file_dest;

NAME                           SPACE_LIMIT SPACE_USED

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

D:\oracle\flash_recovery_area   2147483648   21225472

 

默认情况下,归档日志会存放到闪回恢复区(D:\oracle\flash_recovery_area)内,如果闪回恢复区已经使用到2G,归档日志就有可能无法继续归档,数据库夯住,通常的解决方法是增大闪回恢复区,可以用以下SQL实现。

 

SQL> alter system set db_recovery_file_dest_size=3G;

系统已更改。

 

即使用这种方法解决的当前燃眉之急,虽然闪回恢复区ORACLE会自动管理,如果闪回恢复区空间不足就会清理掉没用的数据,但是如果备份策略不是很完善,数据库非常繁忙的情况下,还有可能遇到这种情况,通常需要修改归档日志的路径,将归档日志放到其他不受限制的路径下来解决这个问题,可通过下面的SQL来修改归档日志的存放路径。

 

SQL> alter system set log_archive_dest_1='location=D:\arch';

系统已更改。  www.2cto.com  

 

然后将数据库启动到MOUNT状态,将数据库修改为归档模式后建数据库启动到OPEN状态。

 

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。

数据库装载完毕。

SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

 

再次查看数据库的归档情况。

 

SQL> archive log list

数据库日志模式            存档模式

自动存档             启用

存档终点            D:\arch

最早的联机日志序列     321

下一个存档日志序列   326

当前日志序列           326

 

可以通过切换日志,查看归档路径下是否有归档日志产生来验证归档路径设置是否正确,可以通过下面的命令切换日志。

 

SQL> alter system switch logfile;

系统已更改。  www.2cto.com  

 

查看归档路径(D:\arch)下是否有归档路径产生。

 

D:\arch>dir/b

ARC0000000326_0764368160.0001

 

可以看到在D:\arch路径下已经产生了归档日志,归档日志的名字受log_archive_format参数限制,可以通过下面的命令查看。

 

SQL> show parameter log_archive_format

NAME                   TYPE         VALUE

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

log_archive_format     string       ARC%S_%R.%T

 

上面产生的归档文件名字为ARC0000000326_0764368160.0001%S也就是0000000326是日志切换号,也就是上文archive log list中的当前日志序列,%R是场景号,%T是线程号,可以理解成是节点号,如果不是RAC环境,%T都是1,还可以在log_archive_format参数值中加上%D%D16进制标识的DBID,如下演示:

 

SQL> alter system set log_archive_format='ARC%S_%R.%T_%D.log' scope=spfile;

系统已更改。  www.2cto.com  

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。

数据库装载完毕。

数据库已经打开。

SQL> alter system switch logfile;

系统已更改。

 

查看归档日志的名字,5AA14A62就是16进制的DBID

 

D:\arch>dir/b

ARC0000000326_0764368160.0001

ARC0000000327_0764368160.0001_5AA14A62.LOG

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值