如何解决ORACLE 9I高级队列不能及时同步
答案:2 悬赏:0 手机版
解决时间 2021-01-22 13:49
- 提问者网友:活着好累
- 2021-01-22 08:03
如何解决ORACLE 9I高级队列不能及时同步
最佳答案
- 五星知识达人网友:撞了怀
- 2021-01-22 08:51
参考dbms_aqadm.create_queue_table
1.存储参数storage_clause 可以是 MAXTRANS,LOB等
2.sort_list 可以是PRIORITY,enq_time这2个参数或者其中一个。具体可以察看对应的 队列表的数据结构。例如下面的例子
--创建队列表,‘sms_aq_tab’ 队列表名,' sms_aq_tab '队列对象名(充当消息体的对象名称),以下同
dbms_aqadm.create_queue_table('WDZAQTABLE','WDZAQMSG');
--创建具有排序功能的队列表
dbms_aqadm.create_queue_table('WDZSQRTAQTABLE','WDZAQMSG',sort_list => 'PRIORITY,enq_time');
3。消息分组参数 message_grouping 可以是 NONE,或 TRANSACTIONAL
-- message grouping
dbms_aqadm.TRANSACTIONAL CONSTANT BINARY_INTEGER := 1;
dbms_aqadm.NONE CONSTANT BINARY_INTEGER := 0;后者表示一个与事务相关的消息分成1组,在提取消息的时候可以当成一组相关消息来提取。例如:
--创建带带分组功能的消息队列表
dbms_aqadm.create_queue_table('WDZGROUPAQTABLE','WDZAQMSG',
sort_list => 'PRIORITY,enq_time',
message_grouping =>dbms_aqadm.TRANSACTIONAL );
4.multiple_consumers表示消息接受者是否为多个用户。默认是只有1个接收者。如果要多个用户可以接受消息,需要设置=true
--创建多个接收者的消息队列表
dbms_aqadm.create_queue_table('WDZMUTIAQTABLE','WDZAQMSG',sort_list => 'PRIORITY,enq_time',
message_grouping =>dbms_aqadm.TRANSACTIONAL
,multiple_consumers => true);
4.2删除队列表
Exec dbms_aqadm.drop_queue_table(queue_table => 'sms_mt_tab');
Exec dbms_aqadm.drop_queue_table(queue_table => 'sms_mo_tab');
4.3建立队列
建立队列代码如下:
exec dbms_aqadm.create_queue(queue_name=>'sms_mt_queue', queue_table=>'sms_mt_tab');
exec dbms_aqadm.create_queue(queue_name=>'sms_mt_queue_exception', queue_table=>'sms_mt_tab',queue_type=>dbms_aqadm.EXCEPTION_QUEUE);
exec dbms_aqadm.create_queue(queue_name=>'sms_mt_queue_backup', queue_table=>'sms_mt_tab');
1.存储参数storage_clause 可以是 MAXTRANS,LOB等
2.sort_list 可以是PRIORITY,enq_time这2个参数或者其中一个。具体可以察看对应的 队列表的数据结构。例如下面的例子
--创建队列表,‘sms_aq_tab’ 队列表名,' sms_aq_tab '队列对象名(充当消息体的对象名称),以下同
dbms_aqadm.create_queue_table('WDZAQTABLE','WDZAQMSG');
--创建具有排序功能的队列表
dbms_aqadm.create_queue_table('WDZSQRTAQTABLE','WDZAQMSG',sort_list => 'PRIORITY,enq_time');
3。消息分组参数 message_grouping 可以是 NONE,或 TRANSACTIONAL
-- message grouping
dbms_aqadm.TRANSACTIONAL CONSTANT BINARY_INTEGER := 1;
dbms_aqadm.NONE CONSTANT BINARY_INTEGER := 0;后者表示一个与事务相关的消息分成1组,在提取消息的时候可以当成一组相关消息来提取。例如:
--创建带带分组功能的消息队列表
dbms_aqadm.create_queue_table('WDZGROUPAQTABLE','WDZAQMSG',
sort_list => 'PRIORITY,enq_time',
message_grouping =>dbms_aqadm.TRANSACTIONAL );
4.multiple_consumers表示消息接受者是否为多个用户。默认是只有1个接收者。如果要多个用户可以接受消息,需要设置=true
--创建多个接收者的消息队列表
dbms_aqadm.create_queue_table('WDZMUTIAQTABLE','WDZAQMSG',sort_list => 'PRIORITY,enq_time',
message_grouping =>dbms_aqadm.TRANSACTIONAL
,multiple_consumers => true);
4.2删除队列表
Exec dbms_aqadm.drop_queue_table(queue_table => 'sms_mt_tab');
Exec dbms_aqadm.drop_queue_table(queue_table => 'sms_mo_tab');
4.3建立队列
建立队列代码如下:
exec dbms_aqadm.create_queue(queue_name=>'sms_mt_queue', queue_table=>'sms_mt_tab');
exec dbms_aqadm.create_queue(queue_name=>'sms_mt_queue_exception', queue_table=>'sms_mt_tab',queue_type=>dbms_aqadm.EXCEPTION_QUEUE);
exec dbms_aqadm.create_queue(queue_name=>'sms_mt_queue_backup', queue_table=>'sms_mt_tab');
全部回答
- 1楼网友:罪歌
- 2021-01-22 10:20
在每一个运行的oracle8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库,则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库。 二、什么是数据库实例名(instance_name) 数据库实例名则用于和操作系统之间的联系,用于对外部连接时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。例如,要和某一个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下: [code:1:1aaf156970] db_name="orcl" #(不允许修改) db_domain=dbcenter.toys.com instance_name=orcl #(可以修改,可以与db_name相同也可不同) service_names=orcl.dbcenter.toys.com control_file=(............... ......... [/code:1:1aaf156970] 数据库名与实例名之间的关系。 数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。 但在8i、9i的并行服务器结构中,数据库与实例之间不存在一一对应关系,而是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。) 三、操作系统环境变量(oracle_sid) 在实际中,对于数据库实例名的描述有时使用实例名(instance_name)参数,有时使用oracle_sid参数。这两个都是数据库实例名,它们有什么区别呢?(经常弄混) [code:1:1aaf156970] (oracle_sid) os<----------------> oracle 数据库 <--------(instance_name(实例名)) [/code:1:1aaf156970] 上图表示实例名instance_name、oracle_sid与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但instance_name参数是oracle数据库的参数,此参数可以在参数文件中查询到,而oracle_sid参数则是操作系统环境变量。 操作系统环境变量oracle_sid用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用oracle_sid。此参数与oracle_base、oracle_home等用法相同。在数据库安装之后,oracle_sid被用于定义数据库参数文件的名称。如: $oracle_base/admin/db_name/pfile/init$oracle_sid.ora。 定义方法: [code:1:1aaf156970] export oracle_sid=orcl [/code:1:1aaf156970] 如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复上述定义过程,以选择不同实例。 还可以用 [code:1:1aaf156970] [oracle@datacent]$ . oraenv [/code:1:1aaf156970] 来切换不同的oracle_sid来通过操作系统来启动不同的实例(instance)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯