此多媒体陈列厅包含 23 张图像。
数据库软件安装过程 dbca运行过程 sqlplus执行 Oracle 8i完整 … 继续阅读
1、异常现象
[oracle@localhost ~]$ ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.1.1.0.0 Build 078 Linux, x64, 64bit (optimized), Oracle 10 on Jul 28 2010 13:21:11 Copyright (C) 1995, 2010, Oracle and/or its affiliates. All rights reserved. GGSCI (localhost.localdomain) 1> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT-ECP 00:00:00 unknown EXTRACT RUNNING EXT-EDS 00:00:00 unknown EXTRACT RUNNING EXT-XZ 00:00:00 unknown EXTRACT RUNNING P-EDS 00:00:00 unknown EXTRACT RUNNING P-XZ 00:00:00 unknown REPLICAT RUNNING REP-BOS 00:00:00 unknown
2、尝试关闭异常进程重启
GGSCI (localhost.localdomain) 2> stop * Sending STOP request to EXTRACT EXT-ECP ... ERROR: sending message to EXTRACT EXT-ECP (Timeout waiting for message). Sending STOP request to EXTRACT EXT-EDS ... ERROR: sending message to EXTRACT EXT-EDS (Timeout waiting for message). Sending STOP request to EXTRACT EXT-XZ ... ERROR: sending message to EXTRACT EXT-XZ (Timeout waiting for message). Sending STOP request to EXTRACT P-EDS ... ERROR: sending message to EXTRACT P-EDS (Timeout waiting for message). Sending STOP request to EXTRACT P-XZ ... ERROR: sending message to EXTRACT P-XZ (Timeout waiting for message). Sending STOP request to REPLICAT REP-BOS ... ERROR: sending message to REPLICAT REP-BOS (Timeout waiting for message). GGSCI (localhost.localdomain) 3> stop mgr! Sending STOP request to MANAGER ... Request processed. Manager stopped. GGSCI (localhost.localdomain) 4> info all Program Status Group Lag Time Since Chkpt MANAGER STOPPED EXTRACT RUNNING EXT-ECP 00:00:00 unknown EXTRACT RUNNING EXT-EDS 00:00:00 unknown EXTRACT RUNNING EXT-XZ 00:00:00 unknown EXTRACT RUNNING P-EDS 00:00:00 unknown EXTRACT RUNNING P-XZ 00:00:00 unknown REPLICAT RUNNING REP-BOS 00:00:00 unknown GGSCI (localhost.localdomain) 5> kill EXT-ECP ERROR: Manager not currently running. GGSCI (localhost.localdomain) 6> kill EXT-EDS ERROR: Manager not currently running. GGSCI (localhost.localdomain) 7> info all Program Status Group Lag Time Since Chkpt MANAGER STOPPED EXTRACT RUNNING EXT-ECP 00:00:00 unknown EXTRACT RUNNING EXT-EDS 00:00:00 unknown EXTRACT RUNNING EXT-XZ 00:00:00 unknown EXTRACT RUNNING P-EDS 00:00:00 unknown EXTRACT RUNNING P-XZ 00:00:00 unknown REPLICAT RUNNING REP-BOS 00:00:00 unknown GGSCI (localhost.localdomain) 8> exit --使用stop 进程,stop mgr,kill 进程都不能正常关闭这些进程
3、系统系统级别kill相关ogg进程
[oracle@localhost OGG]$ ps -ef|grep /opt/OGG oracle 7479 1 0 Nov10 ? 00:03:31 /opt/OGG/extract PARAMFILE /opt/OGG/dirprm/ext-ecp.prm REPORTFILE /opt/OGG/dirrpt/EXT-ECP.rpt PROCESSID EXT-ECP USESUBDIRS oracle 7480 1 0 Nov10 ? 00:02:30 /opt/OGG/extract PARAMFILE /opt/OGG/dirprm/ext-eds.prm REPORTFILE /opt/OGG/dirrpt/EXT-EDS.rpt PROCESSID EXT-EDS USESUBDIRS oracle 7482 1 0 Nov10 ? 00:03:07 /opt/OGG/extract PARAMFILE /opt/OGG/dirprm/ext-xz.prm REPORTFILE /opt/OGG/dirrpt/EXT-XZ.rpt PROCESSID EXT-XZ USESUBDIRS oracle 7483 1 0 Nov10 ? 00:00:01 /opt/OGG/extract PARAMFILE /opt/OGG/dirprm/p-eds.prm REPORTFILE /opt/OGG/dirrpt/P-EDS.rpt PROCESSID P-EDS USESUBDIRS oracle 7485 1 0 Nov10 ? 00:00:03 /opt/OGG/replicat PARAMFILE /opt/OGG/dirprm/rep-bos.prm REPORTFILE /opt/OGG/dirrpt/REP-BOS.rpt PROCESSID REP-BOS USESUBDIRS oracle 7518 1 0 Nov10 ? 00:00:01 ./server -p 7847 -k -l /opt/OGG/ggserr.log oracle 7677 1 0 Nov10 ? 00:00:15 /opt/OGG/extract PARAMFILE /opt/OGG/dirprm/p-xz.prm REPORTFILE /opt/OGG/dirrpt/P-XZ.rpt PROCESSID P-XZ USESUBDIRS oracle 25261 25112 0 12:48 pts/1 00:00:00 grep /opt/OGG [oracle@localhost OGG]$ kill -9 7479 7480 7482 7483 7485 7518 7677 [oracle@localhost OGG]$ ps -ef|grep /opt/OGG oracle 25264 25112 0 12:48 pts/1 00:00:00 grep /opt/OGG
4、重启所有ogg进程
[oracle@localhost OGG]$ ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.1.1.0.0 Build 078 Linux, x64, 64bit (optimized), Oracle 10 on Jul 28 2010 13:21:11 Copyright (C) 1995, 2010, Oracle and/or its affiliates. All rights reserved. GGSCI (localhost.localdomain) 1> info all Program Status Group Lag Time Since Chkpt MANAGER STOPPED EXTRACT ABENDED EXT-ECP 00:00:00 unknown EXTRACT ABENDED EXT-EDS 00:00:00 unknown EXTRACT ABENDED EXT-XZ 00:00:00 unknown EXTRACT ABENDED P-EDS 00:00:00 unknown EXTRACT ABENDED P-XZ 00:00:00 unknown REPLICAT ABENDED REP-BOS 00:00:00 unknown --进程状态还是异常 GGSCI (localhost.localdomain) 2> start mgr Manager started. GGSCI (localhost.localdomain) 3> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT-ECP 00:00:00 unknown EXTRACT RUNNING EXT-EDS 00:00:00 unknown EXTRACT RUNNING EXT-XZ 00:00:00 unknown EXTRACT RUNNING P-EDS 00:00:00 unknown EXTRACT RUNNING P-XZ 00:00:00 unknown REPLICAT RUNNING REP-BOS 00:00:00 unknown --进程起来了,但是Time Since Chkpt还是不正确 GGSCI (localhost.localdomain) 4> stop ext-ecp Sending STOP request to EXTRACT EXT-ECP ... Request processed. GGSCI (localhost.localdomain) 5> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT STOPPED EXT-ECP unknown 00:00:02 EXTRACT RUNNING EXT-EDS 00:00:00 unknown EXTRACT RUNNING EXT-XZ 00:00:00 unknown EXTRACT RUNNING P-EDS 00:00:00 unknown EXTRACT RUNNING P-XZ 00:00:00 unknown REPLICAT RUNNING REP-BOS 00:00:00 unknown --关闭EXT-ECP测试,状态正常 GGSCI (localhost.localdomain) 6> start ext-ecp Sending START request to MANAGER ... EXTRACT EXT-ECP starting GGSCI (localhost.localdomain) 7> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT-ECP unknown 00:00:14 EXTRACT RUNNING EXT-EDS 00:00:00 unknown EXTRACT RUNNING EXT-XZ 00:00:00 unknown EXTRACT RUNNING P-EDS 00:00:00 unknown EXTRACT RUNNING P-XZ 00:00:00 unknown REPLICAT RUNNING REP-BOS 00:00:00 unknown --Lag异常,等待恢复 GGSCI (localhost.localdomain) 8> stop ext-eds Sending STOP request to EXTRACT EXT-EDS ... Recovery is not complete. This normal stop will wait and checkpoint recovery's work when recovery has finished. To force Extract to stop now, use the SEND EXTRACT EXT-EDS, FORCESTOP command. --因为恢复没有完成导致该提示,可以忽略,等待 GGSCI (localhost.localdomain) 9> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT-ECP unknown 00:00:02 EXTRACT STOPPED EXT-EDS 01:51:12 00:00:01 EXTRACT RUNNING EXT-IM 00:00:00 1059:44:26 EXTRACT RUNNING EXT-XZ 00:00:00 unknown EXTRACT RUNNING P-EDS 00:00:00 unknown EXTRACT RUNNING P-XZ 00:00:00 unknown REPLICAT RUNNING REP-BOS 00:00:00 unknown GGSCI (localhost.localdomain) 10> start ext-eds Sending START request to MANAGER ... EXTRACT EXT-EDS starting GGSCI (localhost.localdomain) 11> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT-ECP 99:53:02 00:00:01 EXTRACT RUNNING EXT-EDS 01:51:12 00:00:10 EXTRACT RUNNING EXT-XZ 00:00:00 unknown EXTRACT RUNNING P-EDS 00:00:00 unknown EXTRACT RUNNING P-XZ 00:00:00 unknown REPLICAT RUNNING REP-BOS 00:00:00 00:00:00 GGSCI (localhost.localdomain) 12> stop ext-xz Sending STOP request to EXTRACT EXT-XZ ... Request processed. GGSCI (localhost.localdomain) 13> start ext-xz Sending START request to MANAGER ... EXTRACT EXT-XZ starting GGSCI (localhost.localdomain) 15> stop p-eds Sending STOP request to EXTRACT P-EDS ... Request processed. GGSCI (localhost.localdomain) 16> start p-eds Sending START request to MANAGER ... EXTRACT P-EDS starting GGSCI (localhost.localdomain) 17> stop p-xz Sending STOP request to EXTRACT P-XZ ... Request processed. GGSCI (localhost.localdomain) 18> start p-xz Sending START request to MANAGER ... EXTRACT P-XZ starting GGSCI (localhost.localdomain) 19> info all Program Status Group Lag Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT-ECP 00:00:00 00:00:01 EXTRACT RUNNING EXT-EDS 00:00:00 00:00:10 EXTRACT RUNNING EXT-IM 00:00:00 1059:45:28 EXTRACT RUNNING EXT-XZ 00:00:00 00:00:07 EXTRACT RUNNING P-EDS 00:00:00 00:00:04 EXTRACT RUNNING P-XZ 00:00:00 00:00:05 REPLICAT RUNNING REP-BOS 00:00:00 00:00:05 --重启所有异常进程,ogg工作正常 GGSCI (localhost.localdomain) 20>
5、总结处理步骤
强制关闭mgr,系统级别kill相关ogg进程,开启ogg主进程,重启相关进程
一、执行的schema不同,操作的对象也不同
C:\Users\XIFENFEI>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期日 11月 20 20:39:06 20 Copyright (c) 1982, 2010, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Productio With the Partitioning, Oracle Label Security, OLAP, Data Mining, Oracle Database Vault and Real Application Testing options SQL> create user xffa identified by xifenfei; 用户已创建。 SQL> grant connect,resource to xffa; 授权成功。 SQL> create user xffb identified by xifenfei; 用户已创建。 SQL> grant connect,resource to xffb; 授权成功。 SQL> conn xffa/xifenfei 已连接。 xffa>create table tmp(str varchar2(50)); 表已创建。 xffa>insert into tmp values 2 ('my name is xffa'); 已创建 1 行。 xffa>commit; 提交完成。 xffa>create or replace procedure definer_proc as 2 begin 3 for x in (select sys_context('userenv', 'current_user') current_user, 4 sys_context('userenv', 'session_user') session_user, 5 sys_context('userenv', 'current_schema') current_sch ema, 6 str 7 from tmp) loop 8 dbms_output.put_line('Current User: ' || x.current_user); 9 dbms_output.put_line('Session User: ' || x.session_user); 10 dbms_output.put_line('Current Schema: ' || x.current_schema); 11 dbms_output.put_line('Tables Value: ' || x.str); 12 end loop; 13 end; 14 / 过程已创建。 xffa>create or replace procedure invoker_proc AUTHID CURRENT_USER as 2 begin 3 for x in (select sys_context('userenv', 'current_user') current_user, 4 sys_context('userenv', 'session_user') session_user, 5 sys_context('userenv', 'current_schema') current_sch ema, 6 str 7 from tmp) loop 8 dbms_output.put_line('Current User: ' || x.current_user); 9 dbms_output.put_line('Session User: ' || x.session_user); 10 dbms_output.put_line('Current Schema: ' || x.current_schema); 11 dbms_output.put_line('Tables Value: ' || x.str); 12 end loop; 13 end; 14 / 过程已创建。 xffa>grant execute on definer_proc to xffb; 授权成功。 xffa>grant execute on invoker_proc to xffb; 授权成功。 xffa>set serveroutput on xffa>exec definer_proc; Current User: XFFA Session User: XFFA Current Schema: XFFA Tables Value: my name is xffa PL/SQL 过程已成功完成。 xffa>exec invoker_proc; Current User: XFFA Session User: XFFA Current Schema: XFFA Tables Value: my name is xffa PL/SQL 过程已成功完成。 xffa>conn xffb/xifenfei 已连接。 xffb>exec xffa.definer_proc; PL/SQL 过程已成功完成。 xffb>set serveroutput on xffb>exec xffa.definer_proc; Current User: XFFA Session User: XFFB Current Schema: XFFA Tables Value: my name is xffa PL/SQL 过程已成功完成。 --除了session是当前用户的,其他都是这个过程所属用户 xffb>exec xffa.invoker_proc; BEGIN xffa.invoker_proc; END; * 第 1 行出现错误: ORA-00942: 表或视图不存在 ORA-06512: 在 "XFFA.INVOKER_PROC", line 3 ORA-06512: 在 line 1 --根据这个提示,很容易知道是tmp表不存在,也就是说明这个没有调用xffa.tmp表 xffb>create table tmp(str varchar2(50)); 表已创建。 xffb>insert into tmp values 2 ('my name is xffb'); 已创建 1 行。 xffb>commit; 提交完成。 xffb>exec xffa.invoker_proc; Current User: XFFB Session User: XFFB Current Schema: XFFB Tables Value: my name is xffb PL/SQL 过程已成功完成。 --这个可以看出当时调用者的时候,执行的完全是当前用户下面的对象
在定义者(definer)权限下,执行的用户操作的schema为定义者,所操作的对象是定义者在编译时指定的对象。
在调用者(invoker)权限下,执行的用户操作的schema为当前用户,所操作的对象是当前模式下的对象。
二、执行的权限不同
xffb>create or replace procedure createtbl_definer as 2 begin 3 execute immediate 'create table xff_definer (id number)'; 4 end; 5 / 过程已创建。 xffb>create or replace procedure createtbl_invoker AUTHID CURRENT_USER as 2 begin 3 execute immediate 'create table xff_invoker (id number)'; 4 end; 5 / xffb>grant execute on createtbl_definer to xffa; 授权成功。 xffb>grant execute on createtbl_invoker to xffa; 授权成功。 xffb>exec createtbl_definer; BEGIN createtbl_definer; END; * 第 1 行出现错误: ORA-01031: 权限不足 ORA-06512: 在 "XFFB.CREATETBL_DEFINER", line 3 ORA-06512: 在 line 1 --提示权限不足,很明显是缺少创建表的权限 xffb>exec createtbl_invoker; PL/SQL 过程已成功完成。 xffb>desc xff_invoker; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER --调用者创建成功 xffb>conn xffa/xifenfei 已连接。 xffa>exec xffb.createtbl_definer; BEGIN xffb.createtbl_definer; END; * 第 1 行出现错误: ORA-01031: 权限不足 ORA-06512: 在 "XFFB.CREATETBL_DEFINER", line 3 ORA-06512: 在 line 1 --定义者同样提示没有权限创建表,通过1中的试验,我们知道 --定义者执行的这个过程定义者的对象,也就是说,是因为xffb无权创建表导致该提示 xffa>exec xffb.createtbl_invoker; PL/SQL 过程已成功完成。 xffa>desc xff_invoker; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER xffa>conn / as sysdba 已连接。 SQL>select owner,table_name from dba_tables where table_name=upper('xff_invoker'); OWNER TABLE_NAME ------------------------------ ------------------------------ XFFB XFF_INVOKER XFFA XFF_INVOKER --xffa用户执行成功,并且在自己的schema下面创建了表,证明了1的正确 SQL>GRANT CREATE TABLE TO XFFB; 授权成功。 SQL>conn xffb/xifenfei 已连接。 xffb>exec createtbl_definer; PL/SQL 过程已成功完成。 xffb>desc xff_definer; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER --说明直接授权是的定义者操作成功,但是角色(resource)不能使其操作成功 xffb>conn xffa/xifenfei 已连接。 xffa>exec xffb.createtbl_definer; BEGIN xffb.createtbl_definer; END; * 第 1 行出现错误: ORA-00955: 名称已由现有对象使用 ORA-06512: 在 "XFFB.CREATETBL_DEFINER", line 3 ORA-06512: 在 line 1 --因为定义者执行的是过程创建者的对象,因为XFFB.CREATETBL_DEFINER已经创建成功
在定义者(definer)权限下,当前用户的权限为角色无效情况下所拥有的权限。
在调用者(invoker)权限下,当前用户的权限为当前所拥有的权限(含角色)。
三、执行的效率不同
在定义者(definer)权限下,过程被静态编译静态执行(相对而言),所执行sql语句在共享区池中是可被共享使用的
在调用者(invoker)权限下,过程静态编译,但动态执行,虽然执行的语句相同,但不同用户执行,其sql语句在共享池中并不能共享。
参考:http://www.itpub.net/thread-935634-1-1.html
17813235971 |
QQ 咨询 |