分析解决数据库锁Waiting for table metadata lock

分析解决数据库锁Waiting for table metadata lock,第1张

参考:

>

Oracle数据库可以运行在 种模式下:归档模式(archivelog)和非归档模式(noarchivelog)

归档模式可以提高Oracle数据库的可恢复性 生产数据库都应该运行在此模式下 归档模式应该和相应的备份策略相结合 只有归档模式没有相应的备份策略只会带来麻烦

本文简单介绍如何启用和关闭数据库的归档模式

shutdown normal或shutdown immediate关闭数据库

[oracle@jumper oracle]$ sqlplus / as sysdba

SQLPlus: Release Production on Sat Oct : :

Copyright (c) Oracle Corporation   All rights reserved

Connected to:

Oracle i Enterprise Edition Release Production

With the Partitioning option

JServer Release Production

SQL> shutdown immediate;

Database closed

Database di ounted

ORACLE instance shut down

启动数据库到mount状态

SQL> startup mount;

ORACLE instance started

Total System Global Area  bytes

Fixed Size                   bytes

Variable Size              bytes

Database Buffers           bytes

Redo Buffers                 bytes

Database mounted

启用或停止归档模式

如果要启用归档模式 此处使用

alter database archivelog 命令

SQL> alter database archivelog;

Database altered

SQL> alter database open;

Database altered

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /opt/oracle/oradata/conner/archive

Oldest online log sequence    

Next log sequence to archive  

Current log sequence          

如果需要停止归档模式 此处使用

alter database noarchivelog 命令

SQL> shutdown immediate;

Database closed

Database di ounted

ORACLE instance shut down

SQL> startup mount;

ORACLE instance started

Total System Global Area  bytes

Fixed Size                   bytes

Variable Size              bytes

Database Buffers           bytes

Redo Buffers                 bytes

Database mounted

SQL> alter database noarchivelog;

Database altered

SQL> alter database open;

Database altered

SQL> archive log list;

Database log mode              No Archive Mode

Automatic archival             Enabled

Archive destination            /opt/oracle/oradata/conner/archive

Oldest online log sequence    

Current log sequence          

修改相应的初始化参数

Oracle g之前 你还需要修改初始化参数使数据库处于自动归档模式

在pfile/spfile中设置如下参数

log_archive_start = true

重启数据库此参数生效 此时数据库处于自动归档模式

也可以在数据库启动过程中 手工执行

archive log start

lishixinzhi/Article/program/Oracle/201311/17704

3 恢复目录

31恢复目录的概念

恢复目录是由RMAN使用、维护的用来放置备份信息的仓库。RMAN利用恢复目录记载的信息去判断如何执行需要的备份恢复 *** 作。

恢复目录可以存在于ORACLE数据库的计划中。

虽然恢复目录可以用来备份多个数据库,建议为恢复目录数据库创建一个单独的数据库。

恢复目录数据库不能使用恢复目录备份自身。

32建立恢复目录

第一步,在目录数据库中创建恢复目录所用表空间:

SQL> create tablespace rman_ts datafile 'd:\oracle\oradata\rman\rman_tsdbf' size 20M;

表空间已创建。

第二步,在目录数据库中创建RMAN 用户并授权:

SQL> create user rman identified by rman default tablespace rman_ts temporary tablespace temp quota unlimited on rman_ts;

用户已创建。

SQL> grant recovery_catalog_owner to rman ;

授权成功。

SQL> grant connect, resource to rman ;

授权成功。

第三步,在目录数据库中创建恢复目录

C:\>rman catalog rman/rman

恢复管理器:版本81600 - Production

RMAN-06008:连接到恢复目录数据库

RMAN-06428:未安装恢复目录

RMAN>create catalog tablespace rman_ts;

RMAN-06431:恢复目录已创建

注意:虽然使用RMAN不一定必需恢复目录,但是推荐使用。因为恢复目录记载的信息大部分可以通过控制文件来记载,RMAN在恢复数据库时使用这些信息。不使用恢复目录将会对备份恢复 *** 作有限制。

33使用恢复目录的优势

可以存储脚本;

记载较长时间的备份恢复 *** 作;

4 启动RMAN

RMAN为交互式命令行处理界面,也可以从企业管理器中运行。

为了使用下面的实例,先检查环境符合:

the target database is called "his" and has the same TNS alias

user rman has been granted "recovery_catalog_owner "privileges

目标数据库的连接用户为internal帐号,或者以其他SYSDBA类型帐号连接

the recovery catalog database is called "rman" and has the same TNS alias

the schema containing the recovery catalog is "rman" (same password)

在使用RMAN前,设置NLS_DATE_FORMAT 和NLS_LANG环境变量,很多RMAN LIST命令的输出结果是与日期时间相关的,这点在用户希望执行以时间为基准的恢复工作也很重要。

下例是环境变量的示范:

NLS_LANG= SIMPLIFIED CHINESE_CHINAZHS16GBK

NLS_DATE_FORMAT=DD-MON-YYYY HH24:MI:SS

为了保证RMAN使用时能连接恢复目录,恢复目录数据库必须打开,目标数据库至少要STARTED(unmount),否则RMAN会返回一个错误,目标数据库必须置于归档模式下。

41使用不带恢复目录的RMAN

设置目标数据库的 ORACLE_SID ,执行:

% rman nocatalog

RMAN> connect target

RMAN> connect target internal/<password>@his

42使用带恢复目录的RMAN

% rman rman_ts rman/rman@rman

RMAN> connect target

% rman rman_ts rman/rman@rman target internal/<password>@his

43使用RMAN

一旦连接到目标数据库,可以通过交互界面或者事先存储的脚本执行指定RMAN命令, 下面是一个使用RMAN交互界面的实例:

RMAN> resync catalog;

RMAN-03022:正在编译命令:resync

RMAN-03023:正在执行命令:resync

RMAN-08002:正在启动全部恢复目录的 resync

RMAN-08004:完成全部 resync

使用脚本的实例:

RMAN> execute script alloc_1_disk;

创建或者替代存储的脚本:

RMAN> replace script alloc_1_disk {

2> allocate channel d1 type disk;

3> }

5注册或者注销目标数据库

51注册目标数据库

数据库状态:

恢复目录状态:打开

目标数据库:加载或者打开

目标数据库在第一次使用RMAN之前必须在恢复目录中注册:

第一步,启动恢复管理器,并且连接目标数据库:

C:\>rman target internal/oracle@his catalog rman/rman@rman

恢复管理器:版本81600 - Production

RMAN-06005:连接到目标数据库:HIS (DBID=3021445076)

RMAN-06008:连接到恢复目录数据库

第二步,注册数据库:

RMAN> register database;

RMAN-03022:正在编译命令:register

RMAN-03023:正在执行命令:register

RMAN-08006:注册在恢复目录中的数据库

RMAN-03023:正在执行命令:full resync

RMAN-08002:正在启动全部恢复目录的resync

RMAN-08004:完成全部resync

52注销目标数据库

RMAN提供了一个注销工具,叫DBMS_RCVCAT工具包,请注意一旦注销了该目标数据库,就不可以使用恢复目录中含有的备份集来恢复数据库了。

为了能注销数据库,需要获得数据库的标识码(DB_ID)和数据库键值(DB_KEY)。其中连接目标数据库时将会获得DB_ID。

C:\>rman target internal/oracle@his catalog rman/rman@rman

恢复管理器:版本81600 - Production

RMAN-06005:连接到目标数据库:HIS (DBID=3021445076)

RMAN-06008:连接到恢复目录数据库

其中DBID=3021445076,利用DBID=3021445076查询数据库键值码:

连接到目标数据库,查询db表:

SQL> select from db;

DB_KEY DB_ID CURR_DBINC_KEY

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

1 3021445076 2

获得DB_KEY=1,这样,该目标数据库DB_KEY=1,DBID=3021445076,利用两个值使用DBMS_RCVCAT工具包就可以注销数据库:

SQL> execute dbms_rcvcatunregisterdatabase(1,3021445076);

PL/SQL 过程已成功完成。

至此,注销数据库 *** 作完成。

请采纳。

Oracle10g数据库的4种存储形式

数据库的存在一定需要有永久性存储方式和介质。Oracle自然也不例外,在Oracle10g中,有4种存储形式,分别是 *** 作系统文件,裸分区,自动存储管理,集群系统OCFS(RAC)。下面分别说一下这4种存储形式。 1 *** 作系统文件。 这种是大家最常用的方式了,也是非商业运行模式(比如开发或者开发阶段的测试环境)下最常用的形式。当大家安装Oracle的时候,如果选用了 *** 作系统文件的存储形式,那么就会把Oracle的数据存储在 *** 作系统中,以文件的形式存在。就好像我们玩某些单机版游戏,你的存档就是 *** 作系统的文件一样。用文件形式存储数据,带来的优点就是易于数据库移动。比如你把Oracle的数据文件直接copy到一台电脑上,就可以很快复制出一个一样的数据库系统出来。在文件的读写的时候, *** 作系统通常会提供缓存形式进行读写,避免过多读写硬盘对磁盘造成很大伤害。所以用 *** 作系统文件形式存储数据,等于先天性获得了 *** 作系统的缓存功能。

2 裸分区。裸分区就是把数据库直接写在磁盘上,不再经过 *** 作系统这一层,Oracle专门来对这个分区进行读写。因为没有了 *** 作系统这一层,所以读写起来的速度和性能是质一般的飞跃的,在某些对Oracle读写非常频繁的数据库应用中,采用裸分区形式存储数据甚至可以提高30%以上的性能。当然,如果数据存储是采用的 *** 作系统文件,如果在Unix下采用RAID对于文件读写 *** 作频繁的情况下也是一个可以提高性能的手段。

3 自动存储管理。 自动存储管理通常也被称为ASM,是在Oracle 10g以后才提供的一种新的存储形式。这种存储形式貌似是前两种存储形式的折中。既不是用的host *** 作系统的文件系统,也不是裸分区的形式直接由Oracle读写。而是可以看作为一种Oracle特有的文件系统形式。在ASM上可以存储数据文件,控制文件,日志文件等等,在ASM中,这些也是以文件的形式存在的,只不过这个时候的文件格式是Oracle自有的ASM形式。在Linux中和ASM有点相似的就是LVM(逻辑Volume管理),也是可以看作是一种自有的新的文件系统形式。

4 集群系统OCFS(RAC)。RAC的全称是什么呢,就是Real Application Cluster,是一种在集群的环境下实现共享的一种数据库存储形式。在通常我们的数据库,如果是单机版的数据库,当数据文件磁盘不能访问,那么这个数据库就挂掉了。如果是集群共享数据库的话,其中一种方法就是在某个节点存放数据文件,其余的数据库都通过NFS或者Samba来进行共享,虽然数据库的数据处理能力得到了很大的提高,不过如果这个存储节点挂掉的话,同样数据库也就宕掉了。而OCFS则是一种无断点恢复的存储形式,在整体给人的感觉就是每台数据服务器都有自己的文件系统,但是这些文件系统又仿佛只是同一个文件系统,因为数据更新或者其他的 *** 作都是很统一的。即使某台电脑挂了,其余的服务器照样运行,不会出现数据库的异常,而如果想新加入一台服务器也是很简单的事。特别适合于商用的7X24这种服务形式。

Oracle10g中的4种数据存储方式都介绍完了,我们最常用的自然是第一种形式,不过后面三种形式在商用环境下比较多。特别在大型商用对可靠性要去很高应用中,第四种RAC形式的使用是比较多的。当然,这里只是很简要的介绍了一下几个文件系统的概念。如果要仔细了解的话,当然是要好好查阅Oracle技术手册了。

数据库mount状态是加载控制文件,让度实例和数据库相关联。

nomount状态:启动实例。

Readingthefilefrom$ORACLE_HOME/dbsinthefollowingorder:

从环境变量下dbs目录按如下顺序读取初始化文件:

-firstspfileSIDora

首先,读取spfile实例名ora

-ifnotfoundthen,spfileora

若未发现文件则读取spfileora

-ifnotfoundthen,initSIDora

若未发现文件则读取init实例名ora

SpecifyingthePFILEparameterwithSTARTUPoverridesthedefaultbehavior

扩展资料

后台进程是数据库和 *** 作系统进行交互的通道,后台进程的命名由ORACLE_SID决定,ORACLE根据ORACLE_SID来寻找参数文件启动实例。

是Oracle数据库为保持最佳性能和协调多用户请求而设置的,主要有DBWR(将DatabaseBufferCache数据写入DataFiles)、LGWR(将RedoLogBuffer数据写入RedoLogFiles)、CKPT(协调数据文件、控制文件和重做日志。

将SystemChangeNumber即SCN写入到控制文件和数据文件头部,促使DBWR、LGWR执行)、SMON(SystemMonitor,3方面作用:instancerecovery实例故障数据恢复、合并空闲碎片空间、回收临时段)、PMON(用户例程意外终止时处理事务。

如回退事务、释放锁及其他资源等)、ARCH(将RedoLogFiles写入ArchiveLogFiles)、CJQ0(jobqueuecoordinator)、RVWR(recoverwriter,为flashbackdatabase提供日志记录)等进程。

以上就是关于分析解决数据库锁Waiting for table metadata lock全部的内容,包括:分析解决数据库锁Waiting for table metadata lock、一个关于oracle在dos里面运行的问题、如何启动或关闭数据库的归档模式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9296629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存