一个ORACLE数据库中为什么需要几个归档进程一个不够用吗而且不同的归档进程求详细点的分析。

一个ORACLE数据库中为什么需要几个归档进程一个不够用吗而且不同的归档进程求详细点的分析。,第1张

简单的说就是提高归档的效率,摘抄一段给你。

在默认情况下,一个例程只会启动一个归档进程ARCH。当ARCH进程正在归档一个重做日志文件时,任何其他的进程都不能够访问这个重做日志文件。如果在Oracle数据库中,可以根据需要启动多个归档进程ARCH。在Oracle数据库中,启动多个归档进程时分为手工与自动两个方式。为了提高重做日志文件归档的速度,当用户进程发生比较长时间的等待时, LGWR进程会根据时机情况来自动启动多个归档进程。在Oracle数据库中其最多可以启动十个归档进程。另外如果数据库管理员在部署数据库的时候,估计日志归档作业会影响到数据库的性能,就可以手工来启动多个归档进程。这是通过初始化参数LOG_ARCHIVE_MAX_PROCESSES确定的。可以将这个参数设置为大于1 的数值(注意不能够超过9个归档进程)。如此的话,数据库在创建例程的时候就会启动多个归档进程。不过笔者还是倾向于让数据库系统来自动管理这个进程。数据库管理员最好不要干涉。

原文地址:

h tt p://database ctociocomc n/4 96/934 9996shtml

注意去掉空格

查看一下数据库现有的进程数,是否已经达到参数processes的大小

   -- select count() from v$process;  取得数据库目前的进程数。

   -- select value from v$parameter where name = 'processes'; 取得进程数的上限

(1)查看当前会话数、processes和sessions值,发现session数14和processes值150已经非常接近

SQL> select count() from v$session;

  COUNT()

----------

       146

SQL> show parameter processes

NAME                                 TYPE                   VALUE

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

aq_tm_processes                      integer                0

db_writer_processes                  integer                2

gcs_server_processes                 integer                0

job_queue_processes                  integer                10

log_archive_max_processes            integer                2

processes                            integer                150

(2) Modify the two parameter(processes,sessions)

SQL> alter system set processes=300 scope=spfile;

System altered

SQL> alter system set sessions=335 scope=spfile;

System altered

(3) Let's shutdown and startup database in order to let the two parameter taken effect

SQL> shutdown immediate;

Database closed

Database dismounted

ORACLE instance shut down

SQL> startup        

ORACLE instance started

Total System Global Area 1610612736 bytes

Fixed Size                  2030456 bytes

Variable Size             989856904 bytes

Database Buffers          603979776 bytes

Redo Buffers               14745600 bytes

Database mounted

Database opened

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 102030 - 64bit Production

With the Partitioning, OLAP and Data Mining options

$ sqlplus /nolog

(4) test the result

SQLPlus: Release 102030 - Production on 星期五 12月 9 09:53:13 2011

Copyright (c) 1982, 2006, Oracle  All Rights Reserved

SQL> conn sys/oracle@orcl as sysdba

Connected

SQL> 

--the end

一个方法:通过 sp_trace_create 建立数据库跟踪,可记录执行的任何语句包括存储过程

使用的系统存储过程包括:sp_trace_create-创建跟踪 sp_trace_setevent-设定跟踪事件 sp_trace_setstatus-启用跟踪 具体方法百度一下

pg数据库的常用 *** 作有以下几种:

一、查询

1)查询进程:

select from pg_stat_activity;

说明:

datname表示数据库名

procpid表示当前的SQL对应的PID

query_start表示SQL执行开始时间

current_query表示当前执行的SQL语句

waiting表示是否正在执行,t表示正在执行,f表示已经执行完成

client_addr表示客户端IP地址

2)kill进程:

kill有两种方式,

第一种是:

SELECT pg_cancel_backend(PID);

第二种是:

SELECT pg_terminate_backend(PID);

3)查询连接数

SELECT count() FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;

二、授权

1)sequence授权,跟table授权有区别

grant usage,select on sequence <sequence_name> to <role>;

三、查询size

1、sql查询

postgres=# select pg_size_pretty(pg_database_size('postgres'));

2 、linux du查询

postgres=# SELECT oid from pg_database where datname='postgres';

oid

-------

21360

查看名称为21360的文件的大小即是数据库postgres的大小;

四、解锁,注意要先连接到表所在的database

c &dbname

select distinct arelname,bpid from pg_class a,pg_locks b where aoid=brelation and bgranted=true and arelname like '%&table_name%';

select pg_terminate_backend(&pid);

五、查询哪些表占用的空间大。

SELECT table_schema || '' || table_name AS table_full_name,

pg_size_pretty(pg_total_relation_size('"' || table_schema || '""' || table_name || '"')) AS size

FROM information_schematables

where table_name like '%awr%'

ORDER BY

pg_total_relation_size('"' || table_schema || '""' || table_name || '"') DESC ;

进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义上这也是进程间通信的手段,但是一般都不把这算作“进程间通信”。因为那些通信手段的效率太低了,而人们对进程间通信的要求是要有一定的实时性。

首先,用户在使用用友软件时遇到数据库离线无法打开的情况,可能是由于数据库出现了问题,导致数据库服务无法正常运行。这种情况下,需要对数据库进行诊断和修复,以恢复数据库的正常运行。

可能的原因包括:数据库服务进程被关闭、数据库被破坏、数据库文件损坏、数据库数据丢失等。

针对不同的情况,可以采取不同的修复方法。比如,如果是数据库服务进程被关闭,可以重新启动服务进程;如果是数据库文件损坏,可以使用数据库修复工具进行修复。

此外,为了避免出现数据库离线无法打开的情况,建议定期对数据库进行备份,以便在出现问题时能够恢复数据。同时,也应该注意及时更新数据库软件、安全补丁等,以提高数据库的安全性和稳定性。

以上就是关于一个ORACLE数据库中为什么需要几个归档进程一个不够用吗而且不同的归档进程求详细点的分析。全部的内容,包括:一个ORACLE数据库中为什么需要几个归档进程一个不够用吗而且不同的归档进程求详细点的分析。、查看一下数据库现有的进程数,是否已经达到参数processes的大小、使用C#是否可以实现实时监听数据库日志 读取和分析出数据库变更数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存