SQL> CREATE MATERIALIZED VIEW mv_vcard_last_hlrlist refresh fast as
select vcard.username,
vcard.nick_name,vcard.pcode,hlrlist.region,
vcard.birth_year, vcard.icon, vcard.descr, last.state,
vcard.HLR_CITY, vcard.BIRTH_MONTH, vcard.BIRTH_DAY
from hlrlist ,last ,vcard
where vcard.username = last.username and vcard.hlr_city = hlrlist.hlr_id
and vcard.status = 0 and last.state='Online' ;
2 3 4 5 6 7 8 and vcard.status = 0 and last.state='Online'
*
ERROR at line 8:
ORA-12052: cannot fast refresh materialized view IMPS.MV_VCARD_LAST_HLRLIST
begin
DBMS_MVIEW.EXPLAIN_MVIEW('select vcard.username,vcard.nick_name,vcard.pcode,hlrlist.region,vcard.birth_year, vcard.icon, vcard.descr, last.state,vcard.HLR_CITY, vcard.BIRTH_MONTH, vcard.BIRTH_DAY from hlrlist ,last ,vcard where vcard.username = last.username and vcard.hlr_city = hlrlist.hlr_id');
END;
SELECT CAPABILITY_NAME, POSSIBLE, MSGTXT
FROM MV_CAPABILITIES_TABLE
WHERE CAPABILITY_NAME LIKE 'REFRESH%';
CAPABILITY_NAME P
------------------------------ -
MSGTXT
--------------------------------------------------------------------------------
REFRESH_COMPLETE Y
REFRESH_FAST N
REFRESH_FAST_AFTER_INSERT N
the SELECT list does not have the rowids of all the detail tables
CAPABILITY_NAME P
------------------------------ -
MSGTXT
--------------------------------------------------------------------------------
REFRESH_FAST_AFTER_ONETAB_DML N
see the reason why REFRESH_FAST_AFTER_INSERT is disabled
REFRESH_FAST_AFTER_ANY_DML N
see the reason why REFRESH_FAST_AFTER_ONETAB_DML is disabled
REFRESH_FAST_PCT N
PCT is not possible on any of the detail tables in the materialized view
·¢ÏÖÊÇÒòΪûÓаüÀ¨¸÷¸ö±íµÄrowid
ÓÚÊǸÄΪ:
CREATE MATERIALIZED VIEW mv_vcard_last_hlrlist refresh fast as
select hlrlist.rowid arowid,last.rowid browid,vcard.rowid crowid, vcard.username,
vcard.nick_name,vcard.pcode,hlrlist.region,
vcard.birth_year, vcard.icon, vcard.descr, last.state,
vcard.HLR_CITY, vcard.BIRTH_MONTH, vcard.BIRTH_DAY
from hlrlist ,last ,vcard
where vcard.username = last.username and vcard.hlr_city = hlrlist.hlr_id and last.state='Online' ;
³É¹¦½¨Á¢¸ÃÎﻯÊÓͼ
CREATE MATERIALIZED VIEW users REFRESH FAST START WITH SYSDATE NEXT trunc(SYSDATE + 1) WITH PRIMARY KEY AS SELECT * FROM users@test.com;
SQL> exec dbms_mview.refresh('USERS','FAST');
begin dbms_mview.refresh('USERS','FAST'); end;
ORA-12008: error in materialized view refresh path
ORA-01008: not all variables bound
ORA-02063: preceding line from CNCYY
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2254
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2460
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2429
ORA-06512: at line 1
µ«ÊÇ
SQL> EXEC DBMS_MVIEW.REFRESH('USERS', 'COMPLETE');
PL/SQL procedure successfully completed
ȷûÎÊÌâÄØ?
fastˢеÄÏÞÖÆ
ËùÓÐÀàÐ͵ĿìËÙË¢ÐÂÎﻯÊÓͼ¶¼±ØÐëÂú×ãµÄÌõ¼þ£º
1.ÎﻯÊÓͼ²»Äܰüº¬¶Ô²»Öظ´±í´ïʽµÄÒýÓã¬ÈçSYSDATEºÍROWNUM£»
2.ÎﻯÊÓͼ²»Äܰüº¬¶ÔLONGºÍLONG RAWÊý¾ÝÀàÐ͵ÄÒýÓá£
Ö»°üº¬Á¬½ÓµÄÎﻯÊÓͼ£º
1.±ØÐëÂú×ãËùÓпìËÙË¢ÐÂÎﻯÊÓͼ¶¼Âú×ãµÄÌõ¼þ£»
2.²»ÄܰüÀ¨GROUP BYÓï¾ä»ò¾Û¼¯²Ù×÷£»
3.Èç¹ûÔÚWHEREÓï¾äÖаüº¬ÍâÁ¬½Ó£¬ÄÇÃ´Î¨Ò»Ô¼Êø±ØÐë´æÔÚÓÚÁ¬½ÓÖÐÄÚ±íµÄÁ¬½ÓÁÐÉÏ£»
4.Èç¹û²»°üº¬ÍâÁ¬½Ó£¬ÄÇôWHEREÓï¾äûÓÐÏÞÖÆ£¬Èç¹û°üº¬ÍâÁ¬½Ó£¬ÄÇôWHEREÓï¾äÖÐÖ»ÄÜʹÓÃANDÁ¬½Ó£¬²¢ÇÒÖ»ÄÜʹÓá°£½¡±²Ù×÷¡£
5.FROMÓï¾äÁбíÖÐËùÓбíµÄROWID±ØÐë³öÏÖÔÚSELECTÓï¾äµÄÁбíÖС£
6.FROMÓï¾äÁбíÖеÄËùÓÐ±í±ØÐ뽨Á¢»ùÓÚROWIDÀàÐ͵ÄÎﻯÊÓͼÈÕÖ¾¡£
²é¿´È«ÎÄ×òÌìÒ»¸öÅóÓѸøÎÒ½²ËûµÄDBÒ»Ö±±¨ora-3136£¬´øÀ´µÄºó¹û¾ÍÊǿͻ§²»Äܵǽ£¬·¢ÏÖËû°²×°ÁË10g 10.2.0.1 for linux£¬Ã»ÓÐÓÃÁ¬½Ó³Ø£¬Á¬½ÓÊýÒ²²»ÊǺܶ࣬processÊÇ200£¬²¢Ã»Óб¨Á¬½ÓÒç³ö´íÎ󣬵«½ø³ÌÊýÒ»Ö±ÔÚ200ÒÔÉÏ£¬²émetalink£º
*Note: 345197.1
1. set INBOUND_CONNECT_TIMEOUT_<listener name> = 0 in listener.ora
2. set SQLNET.INBOUND_CONNECT_TIMEOUT = 0 in sqlnet.ora of server.
3. stop and start both listener and data base.
4. Re-run the Workflow Configuration Assistant
¿´ÁËһϣ¬ÒòΪÊÇ10g£¬ÔÚnetwork/admin/Ŀ¼ÏÂʲôÎļþ¶¼Ã»ÓУ¬ÊÖ¹¤°ïËû´´½¨ÁËlistener.oraÓësqlnet.ora£¬È»ºó°ÑINBOUND_CONNECT_TIMEOUT_<listener name>ÓëSQLNET.INBOUND_CONNECT_TIMEOUT ¶¼ÉèÖÃΪ60£¬ÎÊÌâ½â¾ö¡£
ÎÒÏȲ鿴¸Ã½ø³ÌµÄ½ø³ÌºÅ:
ps -ef|grep lgwr
daizy 27680 1 0 09:24 ? 00:00:00 ora_lgwr_dzy
½ø³ÌºÅΪ27680
È»ºóÓÃtopÀ´²é¿´niceÖµ:
top -p27680
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27680 daizy 33 0 384m 15m 14m S 0.0 1.6 0:00.53 oracle
¿ÉÒÔ¿´µ½NIֵΪ:0
ÔÙÓÃreniceÀ´ÐÞ¸Ä:
renice 18 27680
ÔÙÓÃtopÀ´¿´:
top -p27680
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27680 daizy 33 18 384m 15m 14m S 0.0 1.6 0:00.53 oracle
ÕâʱºòNI±ä³ÉÁË18
Õâ¸öÐÞ¸ÄniceÖµÊÇ¿´ÁËeygleµÄÒ»¸ö"LGWRÓëAIXÉϵĽø³ÌÓÅÏȼ¶","""Óû§µÄÊÂÎñ¼°Ìá½»·Ç³£Æµ·±£¬´óԼÿÃëÒªÖ´ÐÐ20000¸öÊÂÎñ£¬Ã¿¸öÊÂÎñ¶¼ÐèÒª¶ÀÁ¢Ìá½»¡£
ÔÚѹÁ¦²âÊÔÇé¿öÏ£¬Óû§·¢ÏÖ×îÖÕµÄÊý¾Ý¿âÆ¿¾±³öÏÖÔÚLGWRÉÏ¡£
×îÏÔÖøµÄµÈ´ýÊÇLOG FILE SYNC£¬×îÖÕ·¢ÏÖÎÊÌâ³öÔÚLGWR½ø³Ì£¬ÓÉÓڸýø³Ì»î¶¯¹ýÓÚÆµ·±£¬¸Ã½ø³ÌÔÚϵͳÉϵÄniceÖµ±»µ÷ÖÁ68£¬AIXÉÏȱʡ½ø³ÌniceֵΪ60£¬niceÖµÔ½¸ß±íʾÓÅÏȼ¶Ô½µÍ¡£
¾¹ýreniceÖ®ºó£¬ÏµÍ³ÐÔÄָܻ´Õý³£¡£"(http://www.eygle.com/archives/2007/03/)
Õâ¸ö»¹ÊDZȽÏÓÐÓÃ,¿ÉÒÔÔÚÈÕ־дæ²»¹ýÀ´µÄʱºòÈÃÈÕÖ¾ÓÅÏÈÅźó
²é¿´È«ÎÄÆô¶¯ÊµÀýhangµÄÒ»ÀýµÄÕï¶Ï
Êý¾Ý¿â±»ÈËÎÞÒâ¶Ï¿ªµçÔ´¡£
1¡¢Æô¶¯Êý¾Ý¿âʱHANGס£ºALERTÈÕ־ͣÔÚÒÔϵÄÐС£
RECO started with pid=7
CJQ0 started with pid=8
QMN0 started with pid=9
Sun May 27 11:22:28 2007
starting up 1 shared server(s) ...
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
Sun May 27 11:22:28 2007
ALTER DATABASE MOUNT
Sun May 27 11:22:35 2007
Successful mount of redo thread 1, with mount id 2423313207.
Sun May 27 11:22:35 2007
Database mounted in Exclusive Mode.
Completed: ALTER DATABASE MOUNT
Sun May 27 11:22:35 2007
ALTER DATABASE OPEN
Sun May 27 11:22:35 2007
Beginning crash recovery of 1 threads
Sun May 27 11:22:35 2007
Started first pass scan
Sun May 27 11:22:36 2007
Completed first pass scan
0 redo blocks read, 0 data blocks need recovery
Sun May 27 11:22:36 2007
Started recovery at
Thread 1: logseq 78153, block 3, scn 2110.630842439
Recovery of Online Redo Log: Thread 1 Group 3 Seq 78153 Reading mem 0
Mem# 0 errs 0: /dev/ora/redolog3
Sun May 27 11:22:36 2007
Ended recovery at
Thread 1: logseq 78153, block 3, scn 2110.630862440
0 data blocks read, 0 data blocks written, 0 redo blocks read
Crash recovery completed successfully
Sun May 27 11:22:36 2007
Thread 1 advanced to log sequence 78154
Thread 1 opened at log sequence 78154
Current log# 2 seq# 78154 mem# 0: /dev/ora/redolog2
Successful open of redo thread 1.
Sun May 27 11:22:36 2007
LOG_CHECKPOINT_INTERVAL was set when MTTR advisory was switched on.
Sun May 27 11:22:36 2007
SMON: enabling cache recovery
Æô¶¯µ½mountģʽÏ£¬
SQL> oradebug setmypid
Statement processed.
SQL> oradebug unlimit
Statement processed.
SQL> oradebug hanganalyze 3
Hang Analysis in /disk1/ora9i/920/admin/ora9i/udump/ora9i_ora_1202.trc
SQL>
traceÎļþÄÚÈÝÈçÏ£º
*** SESSION ID:(12.4) 2007-05-27 10:34:21.904
*** 2007-05-27 10:34:21.903
==============
HANG ANALYSIS:
==============
Open chains found:
Other chains found:
Chain 1 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/3/1/0xb7a8fc98/957/LGWR wait for redo copy>
Chain 2 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/8/1/0xb7a915c0/967/wakeup time manager>
Chain 3 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/9/3/0xb7a924d8/989/No Wait>
Chain 4 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/12/4/0xb7a92ee8/1202/No Wait>
Extra information that will be dumped at higher levels:
[level 5] : 4 node dumps -- [SINGLE_NODE] [SINGLE_NODE_NW] [IGN_DMP]
[level 10] : 7 node dumps -- [IGN]
¿ÉÒÔ¿´µ½ÕâÀïÓÐÒ»¸öµÈ´ý£ºLGWR wait for redo copy£¬Õï¶ÏÓ¦ÓëundoÓйء£
ÓÚÊÇÉèÖÃevents 10015,¶ÔÓÚ¸ÃeventsµÄ½âÊÍ£ºUndo Segment Recovery
event="10015 trace name context forever,level 10"
5. ÔÚÉú³ÉµÄTRACE ÎļþÄÚÈÝÈçÏ£º
KCRA: buffers claimed = 0/0, eliminated = 0
Acquiring rollback segment SYSTEM
Recovering rollback segment _SYSSMU5$
Recovering rollback segment _SYSSMU6$
Recovering rollback segment _SYSSMU7$
Recovering rollback segment _SYSSMU8$
Recovering rollback segment _SYSSMU9$
Recovering rollback segment _SYSSMU10$
ÕâÀï¿ÉÒÔ·¢ÏÖ´Ó_SYSSMU5$ÔÚ×örecoverʱhangסÁË¡£
ÄÇô¿ÉÒÔ½«´Ëundo segment offline,ÓÚÊÇÎÒÃÇʹÓÃÒþº¬²ÎÊýÀ´´ò¿ªÊý¾Ý¿â£¬µ±È»Õâ¸ö¹ý³ÌlogÐèÒªreset
_ALLOW_RESETLOGS_CORRUPTION = TRUE
_OFFLINE_ROLLBACK_SEGMENTS=(_SYSSMU5$)
ÔÙ´ò¿ªÊý¾Ý¿â£¬OK¡£
ref: http://cc59.itpub.net/post/1845/293645
ÓÖ·¢ÏÖÒ»¸ö²»×ßË÷ÒýµÄÓï¾ä,Ò»¸ö³¤µÄsqlÌõ¼þºÜ¼òµ¥type=4
µ«ÊÇ¿ª·¢ÈËÔ±ÔÚдµÄʱºòûÓп´Õâ¸ötypeÔÚ±íÀïµÄÀàÐÍÊÇchar(1),½á¹û¸ÃÓï¾äÔÚsp±¨±íµÄSQL ordered by ReadsÀï¾ÍÓÐËù±íÏÖ:
CPU Elapsd Old
Physical Reads Executions Reads per Exec %Total Time (s) Time (s) Hash Value
--------------- ------------ -------------- ------ -------- --------- ----------
1,308,056 7 186,865.1 91.5 190.04 1222.70 1623835478
Èÿª·¢¸ÄΪtype='4'¾ÍºÃÁË
ͨ¹ýsqlplus "/as sysdba"µÇ¼ÐÅÏ¢ÎÒÃÇ¿ÉÒÔÖªµÀ£¬sqlplusÈÏΪoracleÊý¾Ý¿â²¢Ã»Óйرա£
oracleµÄ½ø³Ì¶¼²»´æÔÚÁË£¬µ«sqlplusΪʲôÈÏΪoracleûÓйرÕÄØ£¿ËüÊǸù¾ÝʲôÀ´Åжϵģ¿
4¡¢²é¿´´ËʱµÄ¹²ÏíÄÚ´æ¶ÎÇé¿ö
[oracle@rep ~]$ ipcs -as
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x91c11414 491531 oracle 640 142606336 10
------ Semaphore Arrays --------
key semid owner perms nsems
0xeddca300 360448 oracle 640 154
------ Message Queues --------
key msqid owner perms used-bytes messages
´ÓÉÏÃæµÄÐÅÏ¢¿ÉÒÔ¿´³ö£¬oracle֮ǰռÓõĹ²ÏíÄÚ´æ¶ÎºÍÐźŶζ¼»¹ÔÚ£¬¶øsqlplusÊǸù¾ÝÕâЩÐÅÏ¢À´ÅжÏÊý¾Ý¿âÊÇ·ñ¹Ø±ÕµÄ¡£
ÎÒÃÇËäÈ»killÁËoracleµÄ½ø³Ì£¬µ«ÊDz¢Ã»ÓÐÇå³ýÆä¶ÔÓ¦µÄ¹²ÏíÄÚ´æ¶ÎºÍÐźŶΡ£
ÔÒòÕÒµ½µÄ£¬ÏÂÃæ¾ÍÊÇÇå³ý¹²ÏíÄÚ´æ¶ÎºÍÐźŶÎÁË¡£
Çå³ý¹²ÏíÄÚ´æ¶Î£º
ÒªÇå³ýoracle¹²ÏíÄÚ´æ¶Î£¬±ØÐ뱣֤ûÓÐÈκÎÁ¬½ÓÁ¬½Óµ½oracleÊý¾Ý¿âÉÏ£¬·ñÔòÇå³ý¹²ÏíÄÚ´æ¶Î»áʧ°Ü¡£
ÎÒÃÇÓñ©Á¦·½·¨Ç¿ÖÆÉ±ËÀÁ¬½Óµ½oracleµÄ½ø³Ì£º
[root@rep ~]# ps -ef|grep ora|awk '{print $2}'|xargs kill -9
[root@rep ~]# su - oracle
[oracle@rep ~]$ ipcrm -m 491531
Çå³ýÐźŶΣº
[oracle@rep ~]$ ipcrm -s 360448
²é¿´´Ëʱ¹²ÏíÄÚ´æµÈÐÅÏ¢£º
[oracle@rep ~]$ ipcs -as
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
´ÓÉÏÃæÐÅÏ¢¿´µ½£¬¹²ÏíÄÚ´æ¶ÎºÍÐźŶÎÒѾ±»Çå³ý¡£
5¡¢Æô¶¯oracle
Çå³ýÍêÐźŶκó£¬ÎÒÃÇÔÙÓÃsysµÇ¼Êý¾Ý¿â£¬¾Í»á·¢ÏÖ£¬sqlplusÒѾÈÏΪÊý¾Ý¿âÊǹرյÄÁË¡£
´ËʱÎÒÃÇ¿ÉÒÔÕý³£Æô¶¯Êý¾Ý¿â£º
[oracle@rep ~]$ sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on D??¨²¨¢¨´ 7?? 28 14:17:46 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
idle> startup
ORACLE instance started.
Total System Global Area 135337420 bytes
Fixed Size 452044 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
ÆäʵÕâÖÖÇé¿öÏ£¬ÎÒÃÇÖ»ÐèÒªÇå³ýÐźŶξͿÉÒÔÕý³£Æô¶¯Êý¾Ý¿â£¬µ«ÎªÁ˸ü³¹µ×Ò»µã£¬ÎÒÃÇÑ¡ÔñÁ˰ѹ²ÏíÄÚ´æÒ²Ò»²¢Çå³ý¡£
Ò»°ãÓöµ½ÕâÖÖÇé¿öÓÐÁ½ÖÖ½â¾ö·½·¨£º
1¡¢Ö±½ÓÖØÆôOS
2¡¢Çå³ý¹²ÏíÄÚ´æºÍÐźÅÁ¿
×îºó¼òµ¥×ܽáһϣº
1¡¢oracle½ø³ÌÖÕÖ¹²»´ú±íÊý¾Ý¿â¹Ø±Õ
2¡¢oracle½ø³ÌÒì³£ÖÐֹʱҪ¼°Ê±Çå³ý¶ÔÓ¦µÄ¹²ÏíÄÚ´æ¶ÎºÍÐźŶÎ
3¡¢sqlplusÊǸù¾ÝÐźŶÎÀ´ÅжÏoracleÊý¾Ý¿âÊÇ·ñÊǹرյÄ
ref: http://space6212.itpub.net/post/12157/317871
Ò»´Îµ÷ÕûÓÅ»¯¹ý³Ì×ܽá
ƽ̨£ºwindows 2000 server sp3
Êý¾Ý¿â£ºOracle 9.0.1.1.1
1. Ôڸ߷åʱ¶Î£¬ÏµÍ³¸ß¸ºÔصÄÇé¿öÏÂÓÃstatspackÒ»¸öСʱ×öÒ»´ÎϵͳµÄ¿ìÕÕ¡£¶Ôstatspack²úÉúµÄ±¨¸æ×¢ÒâÆäÖеÄTop 5 Wait Events¡£¾ßÌå¿ÉÒԲο¼eygleдµÄstatspaceʹÓÃÖ¸ÄÏ¡£±¾ÀýµÄµÈ´ýʼþÖ÷ÒªÊÇdb file scattered read¡¢buffer busy waitsºÍdb file sequential read¡£
2. ¶ÔÓÚdb file scattered readÖ÷ÒªÊÇÓÉÓÚÈ«±íɨÃèÔì³ÉµÄ£¬db file sequential read˵Ã÷µ±Ç°ÏµÍ³¸ºÔغܸ߻òÕßcboʹÓÃÁ˲»ºÏÊʵÄË÷Òý¡£Í¨¹ý¶¨Ê±£¨2ÌìÒ»´ÎÔÚÍíÉÏ12µãÖ´ÐÐdbms_stats.gather_schema_stats('')¹ý³Ì£©Í³¼ÆschemaÐÅÏ¢²¢Óùý³Ì
dbms_support.start_trace_in_session
dbms_support.stop_trace_in_session
¸ú×Ù¿Í»§¶ËµÄ»á»°£¬ÓÃtkprof·ÖÎö¸ú×ÙÎļþ£º
tkprof sys=no sort=prsdsk£¬exedsk£¬fchdsk
ͨ¹ý·ÖÎöÊä³öÎļþ²¢»ñµÃÆäÖÐЧÂʵÍϵÄsqlÓï¾ä£¬È»ºó¶ÔÕâЩsqlÓï¾ä½øÐе÷Õû¡£
3. Ò»°ã¿ÉÒÔͨ¹ýÔÚ±íÉϼÓÉϱØÒªµÄË÷ÒýÀ´Ïû³ýÈ«±íɨÃ裬²¢×¢Òâµ÷Õû³õʼ»¯²ÎÊýdb_file_multiblock_read_countºÍoptimizer_index_cost_adj¡£ÕâÁ½¸ö²ÎÊýÓ°ÏìCBOÑ¡ÔñµÄÖ´Ðмƻ®¡£Èç¹ûÏ£ÍûCBO¸üÇãÏòÓÚʹÓÃË÷Òý£¬¿ÉÒÔ¼ÓÌáʾ/*+first_rows*/¡£
4. ¾ÉÏÊöµ÷Õûºó£¬¿Í»§ÈÔÈ»±§Ô¹ÔÚÓ¦ÓóÌÐòÖвéѯij¸ö±¨±íµÄʱºò·Ç³£Âý£¬ÐèÒª2¸öСʱÒÔÉÏ¡£¶ÔsqlÓï¾ä·ÖÎöºó£¬·¢Ïָñ¨±íµÄsqlÓï¾äÊDzéѯһ¸öǶÌ×ÊÓͼ£¬½á¹¹´óÖÂÈçÏ£º
create or replace view vw_v1 as select c1,c2,c3 from t1;
create or replace view vw_v2 as select c1,sum(c2),sum(c3) from vw_v1 group by c2,c3;
create or replace view vw_v3 as select *from vw_v2 union select *from vw_other;
¿Í»§¶Ë²éѯµÄʱºòÊÇselect *from vw_v3 where c1 = :b1;
ÆäÖÐt1±íÊǸö·ÖÇø±í£¬´ó¸ÅÓÐ4ǧÍòÐУ¬Ã¿¸öÔÂÔö³¤1ǧÍòÐС£¶ÔsqlÓï¾ä·ÖÎöºóÈÏΪÐÔÄÜÎÊÌâÖ÷ÒªÊÇÓÉÓÚÊÓͼvw_v2ÖжÔt1µÄgroup by c2,c3Ôì³ÉµÄ£¬Òò¶øµ÷ÕûÈçÏ£º
create or replace view vw_v2 as select c1,sum(c2),sum(c3) from vw_v1 where c1 = pg_arg.sf_get_c1() group by c2,c3;
ÔÚgroup byǰ¼ÓÈëwhere c1 = pg_arg.sf_get_c1()£¬pg_argÊÇpl/sql°ü£¬ÔÚÖ´ÐиòéѯǰÐèÒªÖ´ÐÐpg_arg.sp_set_c1(c1)¹ý³ÌÉèÖÃc1²ÎÊý¡£Í¨¹ýÕâÑùµÄµ÷ÕûºÍ¸Ä±ä¿ÉÒ԰ѲéѯµÄºÄʱ¼õÉÙµ½10·ÖÖÓÒÔÄÚ¡£
5. ͬʱÓû§Ò²ÔÚ±§Ô¹µ¹ÅÌ£¨Ö÷ÒªÊDzåÈ롢ɾ³ý²Ù×÷£©Ê±·Ç³£»ºÂý£¬200È˵ĵ¥Î»ÐèÒª2¸öСʱ²ÅÄܵ¼Èëµ½Êý¾Ý¿âÖС£¸Ã²Ù×÷Ö÷ÒªÊÇ´ó±í£¨·ÖÇø±í£¬Ã¿¸öÔÂÔö¼Ó1000ÍòÌõ¼Ç¼£¬×ÜÐÐÊýÏÖʱÔÚ4ǧÍòÐÐ×óÓÒ£©µÄ²åÈëɾ³ý²Ù×÷£¬ÔÚsqlplusÀïÃæÖ´ÐвåÈë²Ù×÷£¬¸ß·åʱºò¸üÊÇ´ïµ½ÁË30Ãë²ÅÄܲåÈëÒ»Ìõ¼Ç¼¡£Í¨¹ýalter table modify partition freelists ;Ôö´ó¿ÕÏÐÁбíµÄÊýÄ¿ºó¶ÔÐÔÄܵÄÌá¸ß°ïÖú²»´ó£»Í¬Ê±ÔÚ²åÈëµÄʱºò¼Ó/*+append*/Ìáʾ£¬¶ÔÐÔÄܵÄÌá¸ßÒ²ÊǺÜÓÐÏÞ£¨ÔÀ´Á½¸öСʱµÄ²Ù×÷ÔÚÒ»¸öСʱÎåÊ®·ÖÖÓÍê³É£¬»ù±¾ÉÏû¶à´óµÄ×÷Óã©¡£¶Ô´ó±í½á¹¹·ÖÎöºó£¬·¢ÏÖÔÚ±íÉϽ¨Á¢ÁËÈ«¾Ö·ÖÇøË÷Òý£¬°Ñ¸ÃÈ«¾Ö·ÖÇøË÷Òýɾ³ý²¢½¨Á¢ÆÕͨË÷ÒýºóINSERTÓï¾ä¿ÉÒÔ¼´Ê±ÏìÓ¦¡£ÁíÍâÔÚ²åÈëÊý¾ÝµÄʱºòÓÃÅúÁ¿²åÈëµÄ·½Ê½½øÐвåÈ룺
/*ÈçÏÂËùʾ:
Ïȶ¨ÒåÊý×é±äÁ¿
È»ºó°ÑÊý¾ÝÒ»´ÎÐÔfetch³öÀ´
×îºóÓÃforallÒ»´ÎÐÔ²åÈëµ½±íÖÐ*/
TYPE t_jzny IS TABLE OF char(6);
b_jzny t_jzny;
v_rowcount NUMBER;
CURSOR cur_bulk
IS
SELECT ny
FROM
WHERE ROWNUM <= 6;
¡¡¡¡¡¡¡
-- ³õʼ»¯Êý×é
OPEN cur_bulk;
FETCH cur_bulk
BULK COLLECT INTO b_jzny;
CLOSE cur_bulk;
¡¡¡¡¡¡¡¡¡
FORALL v_i IN 1 .. v_rowcount
Insert into
¡¡¡¡¡..
values
(
¡¡¡¡.
B_jzny(v_i);
¡¡¡¡..
)
¾ÒÔÉϵ÷Õûºó£¬200ÈË×óÓҵĵ¹Å̲Ù×÷¿ÉÒÔ´ÓÔÀ´µÄ2¸öСʱÌá¸ßµ½10·ÖÖÓÒÔÄÚ¡£ÊÕµ½Á¢¸Í¼ûÓ°µÄЧ¹û¡£
6. С½á£ºÐÔÄܵ÷ÕûÒ»°ãÊÇͨ¹ýstatspack£¬²úÉú·ÖÎö¸ú×ÙÎļþÀ´¶¨Î»Ð§ÂʵÍϵÄsqlÓï¾ä¡£È»ºóͨ¹ý¸÷ÖÖÊֶΣ¬±ÈÈç¿ÉÒÔ¼ÓÈëºÏÊʵÄË÷Òý£¬Ìí¼ÓºÏÊʵÄhintÀ´µ÷Õû²éѯÓï¾ä£»ÓÃalter index monitoring usage;¸ú×ÙûÓÐʹÓõÄË÷Òý²¢°ÑÕâЩË÷Òýɾ³ý¡¢µ÷ÕûЧÂʵÍϵÄË÷Òý£¨ÓÈÆäʹ¶Ô´ó±íÉϵÄË÷Òý£©¡¢¼Ó/*+append*/Ìáʾ¡¢ÅúÁ¿²åÈëµÈÊֶε÷ÕûDMLÓï¾ä¡£
http://www.itpub.net/adv/banner.php?areaid=2&posid=2
²é¿´È«ÎÄ
With the Partitioning, OLAP and Data Mining options
Export done in UTF8 character set and UTF8 NCHAR character set
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user ORCL
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user ORCL
About to export ORCL's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
EXP-00056: ORACLE error 4021 encountered
ORA-04021: timeout occurred while waiting to lock object
ORA-06512: at "SYS.DBMS_METADATA", line 1511
ORA-06512: at "SYS.DBMS_METADATA", line 1548
ORA-06512: at "SYS.DBMS_METADATA", line 1864
ORA-06512: at "SYS.DBMS_METADATA", line 3707
ORA-06512: at "SYS.DBMS_METADATA", line 3689
ORA-06512: at line 1
EXP-00000: Export terminated unsuccessfully
ÏÈÓÃsysÖ´ÐÐÏÂÃæ½Å±¾£º
@?/rdbms/admin/catmeta.sql
È»ºóÖ´ÐУº
select owner,object_name,object_type,status from dba_objects where status='invalid';
¿´¿´ÓÐûÓÐÎÞЧµÄ£¬Èç¹ûûÓÐÔòÔÙµ¹³ö
Èç¹ûÓУ¬Ôò°´²½ÖèÖ´ÐÐÏÂÃæµÄ
1. sql> conn / as sysdba
2. sql> startup migrate
3. sql> @/oraclehome/rdbms/admin/catpatch.sql
4. sql> select comp_id, comp_name, version, status from dba_registry;
Õâ¸öʱºòÓ¦¸ÃûÓÐÎÊÌâÁË
½ñÌì²éѯһ¸öÔËÓª¿âµÄuser_jobs,·¢ÏÖjob¶¼Í£Ö¹ÁË,δִÐÐ,ÐÞ¸ÄÁËһЩÕâ¸ö²ÎÊý,jobÓÖ¿ÉÒÔÖ´ÐÐÁË!
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 0;
µÈ2~3·ÖÖÓ£¬ÖØÐÂÉèÖÃ
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 5;
´ËʱPMON»áÖØÆðCJQ0½ø³Ì
ref: http://www.eygle.com/archives/2004/11/job_can_not_execute_auto.html
µ«ÊÇuptime¿´
1:38pm up 361 day(s)
Õâ¸ö·þÎñÆ÷Æô¶¯²Å361Ìì,δµ½eygle˵µÄ497Ìì,µ«ÊÇjob½ø³ÌȴͦÁË,ÓÐµãÆæ¹Öѽ!
×î³õÓÉ howard_zhang ·¢²¼
ÏÖÔÚÒ»¸ö½ÚµãÊÇÕâ¸ö´íÎóRAC1
Wed Aug 8 13:49:19 2007
WARNING: inbound connection timed out (ORA-3136)
Wed Aug 8 13:49:19 2007
WARNING: inbound connection timed out (ORA-3136)
Wed Aug 8 13:49:19 2007
WARNING: inbound connection timed out (ORA-3136)
ÁíÍâÒ»¸öCONNECT²»ÔÊÐíµÇ½µÄ½Úµã´íÎóÈçÏÂ:RAC2
ARC1: Failed to archive thread 2 sequence 200 (19504)
Wed Aug 8 11:43:10 2007
ARC2: Failed to archive thread 2 sequence 200 (19504)
Wed Aug 8 11:43:10 2007
ARC3: Failed to archive thread 2 sequence 200 (19504)
¹ØÓÚORA-3136,ÔÚmetalinkÓÐÈçϵĽâ¾ö·½°¸£º
1.set INBOUND_CONNECT_TIMEOUT_ =0 in listener.ora
2. set SQLNET.INBOUND_CONNECT_TIMEOUT = 0 in sqlnet.ora of server.
3. stop and start both listener and database.
Æäʵlistener×öÒ»ÏÂreload¾Í¿ÉÒÔÁË¡£
ARC1: Failed to archive thread 2 sequence 200 (19504)
ÕâÖ»ÊǸ澯¶øÒÑ£¬¿ÉÒÔºöÂÔ£¬¹Ø¼üÒª¿´Ò»ÏÂÕýÔÚarchive 200µÄ½ø³ÌÔڵȴýʲô£¿
Õâ¸öÎÊÌâÒ²ÓпÉÄÜÊǹ鵵ÈÕÖ¾µÄÄ¿±êÂúÁË!
½ÓÉÏ:
ÎÒµÄÂß¼standbyÅäÖÃ:
http://wayw009.spaces.live.com/blog/cns!73fba3701ddca
otnÉÏlogical standby: http://blog.oracle.com.cn/html/11/t-26311.html
1. ÑéÖ¤ÊÇ·ñ´æÔÚ±íûÓÐÖ÷¼ü
select owner,table_name from dba_logstdby_not_unique
where (owner,table_name) not in
(select distinct owner,table_name from dba_logstdby_unsupported)
and bad_column='Y';
2. ÑéÖ¤
SELECT SUPPLEMENTAL_LOG_DATA_PK AS PK_LOG,
SUPPLEMENTAL_LOG_DATA_UI AS UI_LOG
FROM V$DATABASE;
PK_ UI_
--- ---
NO NO
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;
ÔÙÑéÖ¤
SELECT SUPPLEMENTAL_LOG_DATA_PK AS PK_LOG,
SUPPLEMENTAL_LOG_DATA_UI AS UI_LOG
FROM V$DATABASE;
PK_LOG UI_LOG
------ ------
YES YES
3. Ϊprimary databaseÌí¼Ó²¿·Ö²ÎÊý
alter system set log_archive_dest_3='location=/opt/oracle/standby_redo valid_for=(standby_logfiles,standby_role) db_unique_name=primary' scope=both;
alter system set log_archive_dest_state_3=enable scope=both;
alter system set UNDO_RETENTION=3600 scope=both;
4. alter database recover managed standby database cancel;
(Õâ¸öÓ¦¸ÃÔÚ±¸·ÝÊý¾Ý¿âÀïÃæÖ´ÐÐ)
(¼Çס:ÔÚbuild֮ǰһ¶¨ÒªÏÈcancel ÎïÀístandby,·ñÔòÖ´ÐÐ"alter database recover to logical standby cncimps"ʱ»á×ÜÊÇûÓзµ»Ø)
5. ÔÚprimary databaseÉϽ¨Á¢logminer×Öµä
exec dbms_logstdby.build;
6. alter database recover to logical standby cncimps;
(Õâ¸öÓ¦¸ÃÔÚ±¸·ÝÊý¾Ý¿âÀïÃæÖ´ÐÐ)
ÎÒÕâÀïÔÀ´db_name¾ÍÊÇcncimps,ËùÒÔÕâÑùºódb_nameû±ä,Ò²¾Í²»ÓÃÔÙÖØÐÂÐÞ¸ÄpaswordÎļþÁË(Èç¹ûºÍÔÀ´µÄ²»Ò»ÖÂ,ÄÇô¾ÍÐèÒªÖØ½¨passwordÎļþ)
7. standbyÒ²ÕâôÐÞ¸Ä:
alter system set log_archive_dest_3='location=/opt/oracle/standby_redo valid_for=(standby_logfiles,standby_role) db_unique_name=standby' scope=both;
alter system set log_archive_dest_state_3=enable scope=both;
alter system set UNDO_RETENTION=3600 scope=both;
8. shutdown immediate (shutdown standby)
9. startup mount
alter database open resetlogs;
Êý¾Ý¿âÒѸü¸Ä
(11) ¿ªÊ¼Ó¦ÓÃredo
Èç¹û֮ǰûÓÐʹÓÃstandby redo log file,ÕâÀï»á³ö´í
SQL> alter database start logical standby apply immediate;
alter database start logical standby apply immediate
*µÚ1ÐгöÏÖ´íÎó
ORA-16239: ÓÉÓÚûÓб¸ÓÃÖØ×öÈÕÖ¾, IMMEDIATEÑ¡Ïî²»¿ÉÓÃ
10. Ìí¼Óredo log
alter database add standby logfile group 4 '/opt/oracle/oradata/cncimps/standbyredo04.log' size
alter database add standby logfile group 5 '/opt/oracle/oradata/cncimps/standbyredo05.log' size
alter database add standby logfile group 6 '/opt/oracle/oradata/cncimps/standbyredo06.log' size
alter database add standby logfile group 7 '/opt/oracle/oradata/cncimps/standbyredo07.log' size
11. Ìí¼ÓtempÊý¾ÝÎļþ
alter session disable guard;
alter tablespace temp add tempfile '/opt/oracle/oradata/cncimps/temp03.dbf' size
alter session enable guard;
12. ²âÊÔ
¿ÉÒÔÓÃÕâ¸öÀ´¹éµµµ±Ç°ÈÕÖ¾
alter system archive log current;
ÔÚ²âÊÔµÄʱºò,ºÃÏñÒª»¨·ÑºÜ³¤Ê±¼äÀ´Ó¦ÓÃÈÕÖ¾
Èç¹ûÓ¦ÓÃÈÕÖ¾,±¸¿âÀïµÄalertÎļþ»áÓÐÏÂÃæµÄÏà¹ØÐÅÏ¢
Some indexes or index [sub]partitions of table SYSTEM.LOGMNR_USER$ have been marked unusable
Indexes of table SYSTEM.LOGMNR_ATTRCOL$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_ATTRIBUTE$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_CCOL$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_CDEF$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_COL$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_COLTYPE$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_DICTIONARY$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_ICOL$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_IND$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_INDCOMPART$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_INDPART$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_INDSUBPART$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_LOB$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_LOBFRAG$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_OBJ$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_TAB$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_TABCOMPART$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_TABPART$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_TABSUBPART$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_TS$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_TYPE$ have been rebuilt and are now usable
Indexes of table SYSTEM.LOGMNR_USER$ have been rebuilt and are now usable
LSP2 started with pid=29, OS id=18066
Wed Jul 25 09:57:26 2007
LOGMINER: Begin mining logfile: /opt/oracle/standby_redo/1_386_607103080.dbf
Wed Jul 25 09:57:26 2007
LOGMINER: Turning ON Log Auto Delete
LOGSTDBY Apply process P005 started with pid=32 OS id=18072
LOGSTDBY Apply process P004 started with pid=31 OS id=18070
LOGSTDBY Apply process P006 started with pid=33 OS id=18074
LOGSTDBY Apply process P007 started with pid=34 OS id=18076
LOGSTDBY Apply process P008 started with pid=35 OS id=18078
LOGSTDBY Analyzer process P003 started with pid=30 OS id=18068
Wed Jul 25 09:57:28 2007
LOGMINER: End mining logfile: /opt/oracle/standby_redo/1_386_607103080.dbf
Wed Jul 25 09:57:28 2007
LOGMINER: Begin mining logfile: /opt/oracle/standby_redo/1_387_607103080.dbf
Wed Jul 25 09:57:28 2007
LOGMINER: End mining logfile: /opt/oracle/standby_redo/1_387_607103080.dbf
Wed Jul 25 09:57:28 2007
LOGMINER: Begin mining logfile: /opt/oracle/standby_redo/1_388_607103080.dbf
Wed Jul 25 09:57:28 2007
LOGMINER: End mining logfile: /opt/oracle/standby_redo/1_388_607103080.dbf
Wed Jul 25 09:57:28 2007
LOGMINER: Begin mining logfile: /opt/oracle/archivelog/1_389_607103080.dbf
Wed Jul 25 09:57:28 2007
LOGMINER: End mining logfile: /opt/oracle/archivelog/1_389_607103080.dbf
Wed Jul 25 09:57:28 2007
LOGMINER: Begin mining logfile: /opt/oracle/oradata/cncimps/standbyredo05.log
Wed Jul 25 09:57:28 2007
Thread 1 advanced to log sequence 3
Current log# 2 seq# 3 mem# 0: /opt/oracle/oradata/cncimps/redo02.log
½¨Á¢ÎïÀístandby¿ÉÒÔÓÃrman,Ò²¿ÉÒÔÓÃÀ䱸·Ý,ʹÓÃÀ䱸·Ý¿ÉÒÔ²ÎÕÕhttp://www.itpub.net/showthread.php?s=&threadid=666617
ÎÒµÄÕâ¸öʵÑéÊÇÓÃrmanÀ´½¨Á¢standby
ÎÒÖ÷ÒªÊDzο¼ÏÂÃæ¸öÎĵµ½øÐеÄ
http://hi.baidu.com/space6212/blog/item/249d5b230cfa4a4c9358071e.html
http://blog.tom.com/blog/read.php?bloggerid=133149&blogid=61256
Ò»Ò»¶¨ÒªÖ÷¿âºÍ±¸¿â¶¼°²×°ºÃºóÔÙÆô¶¯listener
²¢ÇÒtnsnameÖеÄservice¿´³õʼ»¯²ÎÊýµÄserver_names
ÎÒ¾ÍдһÏÂ,ÎÒÔÚ°²×°physical standbyµÄһЩ²½Öè
»·¾³:
Sid_name_ cncimps
Cnc17: primary
Cnc18: standby
1. µ±È»ÊÇÒªÈÃÊý¾Ý¿â´¦ÔÚforce logging״̬
Alter database force logging;
2. µ±È»ÒªÈÃÊý¾Ý¿â´¦ÔÚarchive״̬
Startup mount
Alter database archivelog
3. ÔÚÖ÷¿â´´½¨standby redo logÔÚÖ÷¿âÉϽ¨Á¢standby log£¬´óСÓëÖ÷¿âÁª»úÈÕÖ¾´óСһÑù£¬×éÊýÖÁÉÙ´ó1£¨Õâ¸öÊÇ¿ÉÑ¡£¬ÊÇΪÁ˽ÇÉ«Çл»·½±ã£©
alter database add standby logfile group 4 '/opt/oracle/oradata/cncimps/standbyredo04.log' size 50m;
alter database add standby logfile group 5 '/opt/oracle/oradata/cncimps/standbyredo05.log' size 50m;
alter database add standby logfile group 6 '/opt/oracle/oradata/cncimps/standbyredo06.log' size 50m;
alter database add standby logfile group 7 '/opt/oracle/oradata/cncimps/standbyredo07.log' size 50m;
ÕâЩÈÕÖ¾²éѯv$logÊÇ¿´²»µ½×´Ì¬µÄ,ÐèÒª²éѯv$logfile²ÅÄÜ·¢ÏÖ
orapwd file=orapwcncimps password=oracle entries=10
4. ³õʼ»¯²ÎÊý:
cncimps.__db_cache_size=771751936
cncimps.__java_pool_size=16777216
cncimps.__large_pool_size=16777216
cncimps.__shared_pool_size=251658240
cncimps.__streams_pool_size=0
*.audit_file_dest='/opt/oracle/admin/cncimps/adump'
*.background_dump_dest='/opt/oracle/admin/cncimps/bdump'
*.COMPATIBLE='10.2.0.1'
*.control_files='/opt/oracle/oradata/cncimps/control01.ctl','/opt/oracle/oradata/cncimps/control02.ctl','/opt/oracle/oradata/cncimps/control03.ctl'
*.core_dump_dest='/opt/oracle/admin/cncimps/cdump'
*.db_block_size=8192
*.db_file_multiblock_read_count=8
*.db_recovery_file_dest_size=21474836480
*.dispatchers='(protocol=TCP)','(ADDRESS=(PROTOCOL=TCP)(DISPATCHERS=2))'
*.job_queue_processes=10*.open_cursors=600
*.pga_aggregate_target=254803968
*.processes=500
*.REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE'
*.sessions=555
*.sga_max_size=1610612736
*.sga_target=1073741824
*.shared_servers=6
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/opt/oracle/admin/cncimps/udump'
*.local_listener='PRIMARY'
*.db_domain=''
*.FAL_CLIENT='primary'
*.FAL_SERVER='standby'
*.DB_UNIQUE_NAME='primary'
*.SERVICE_NAMES=primary ##Ö¸¶¨ÁËÕâ¸öservice_names,ÄÇôÔÚtnsÀïÖ¸¶¨µÄserver_name¾ÍÖ»ÄÜÊÇËü,·ñÔòÁ¬½Ó²»ÉÏ,µ±È»Ò²¿ÉÒÔ²»Ö¸¶¨,ȱʡÊÇdb_name+db_domain
*.db_name='cncimps'
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.db_recovery_file_dest='/opt/oracle/flash_recovery_area'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
##primaryºÍstandbyÊÇÖ¸Ö÷±¸ÀïÃæÖ¸¶¨µÄdb_unique_name,Èç¹ûÓжą̀¿ÉÒÔÖ¸¶¨¶à¸ö
*.LOG_ARCHIVE_DEST_1='LOCATION=/opt/oracle/archivelog/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary'
*.LOG_ARCHIVE_DEST_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
##×¢ÒâÕâÀïµÄserviceÊÇtnsnames.oraÀïÃæ¶¨ÒåµÄÄܵ½´ïstandbyµÄtnsÅäÖÃ
*.LOG_ARCHIVE_DEST_STATE_1='ENABLE'
*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'
*.LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'
*.LOG_ARCHIVE_MAX_PROCESSES=4
*.log_file_name_convert='/opt/oracle/oradata/cncimps/','/opt/oracle/oradata/cncimps/'
ÕâЩ·ÛºìÉ«µÄ²¿·Ö¶¼ÊÇ×östandbyÌØ±ðÐèҪעÒâµÄµØ·½
5. rman±¸·ÝÊý¾Ý¿â
$ORACLE_HOME/bin/rman target /
backup database format='/home/oracle/backup/%U_%s.bak';
sql "Alter System Archive Log Current";
Backup filesperset 10 ArchiveLog all format='/home/oracle/backup/arc%U_%s.bak';
ÔÚ×örman±¸·Ý֮ǰ×îºÃɾ³ý¹ýÆÚµÄ±¸·Ý
crosscheck backupset
delete obsolete
delete expired backup;
change archivelog all crosscheck ;
delete archivelog all;
delete expired archivelog all;
6. »ñÈ¡standbyµÄ¿ØÖÆÎļþ
ÓÃsysÓû§½øÈëÊý¾Ý¿â
alter database create standby controlfile as '/home/oracle/backup/standby.ctl';
7. ½«¿ØÖÆÎļþ¸´ÖƵ½ÐèÒªµÄλÖÃ
[oracle@cnc18 backup]$ cp standby.ctl /opt/oracle/oradata/cncimps/control01.ctl
[oracle@cnc18 backup]$ cp standby.ctl /opt/oracle/oradata/cncimps/control02.ctl
[oracle@cnc18 backup]$ cp standby.ctl /opt/oracle/oradata/cncimps/control03.ctl
8. ÐÞ¸ÄstandbyµÄinitÎļþ
*.DB_UNIQUE_NAME='standby' ##ÔÚ´ÓµÄÖ¸¶¨´ÓµÄunique name
*.SERVICE_NAMES=standby
*.FAL_CLIENT='standby'
*.FAL_SERVER='primary' ##Õâ2¸ö²ÎÊýºÍÖ÷¿âµÄÏà·´
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/opt/oracle/archivelog/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
*.LOG_ARCHIVE_DEST_2='SERVICE=primary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'
*.STANDBY_FILE_MANAGEMENT =AUTO
*.log_file_name_convert='/opt/oracle/oradata/cncimps/','/opt/oracle/oradata/cncimps/'
9. ½¨Á¢±¸¿âÃÜÂëÎļþ
orapwd file=orapwcncimps password=oracle entries=10
×¢Òâ : ÕâÒ»²½Õâ¸öpasswordÒ»¶¨ÒªºÍÖ÷¿âµÄpasswordÒ»ÖÂ,·ñÔòÈÝÒ׳öÏÖora-12154µÄÎÊÌâ,Èç¹ûÖ÷¿âµÄ¼Ç²»×¡,Ö÷¿âÒ²¿ÉÒÔÖØ½¨,·½·¨Ò»ÑùµÄ
10. È»ºó´´½¨ÏàÓ¦µÄÎļþ¼Ð
mkdir -p /u01/oracle/admin/primary/{adump,bdump,cdump,udump}
11. »Ö¸´Êý¾Ý¿âµ½±¸¿âÀï
Æô¶¯±¸¿âµ½nomount״̬
Sqlplus / as sysdba
Startup nomount
Alter database mount standby database
Rman»Ö¸´Êý¾Ý¿â
restore datatase;
restore archivelog all;
recover database; ##Õâ²½ÐèÒª×ö,·ñÔòÔÚalter database openµÄʱºò²»ÄÜ´ò¿ªÊý¾Ý¿â,˵system.dbfÓÐÎÊÌâ
(
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-16004: backup database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/opt/oracle/oradata/cncimps/system01.dbf'
)
12. ·Ö±ðÔÚÖ÷±¸¿âÀïÃæÐÞ¸Ätnsnames.ora
cat $ORACLE_HOME/network/admin/tnsnames.ora
primary =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 61.135.171.17)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = cncimps)
)
)
standby =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 61.135.171.19)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)
13. Æô¶¯±¸¿â
startup nomount;
alter database mount standby database;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Ò²¿ÉÒÔ°´ÕÕÏÂÃæµÄ·½Ê½À´´ò¿ª±¸¿âÀ´½øÐÐÊý¾Ý²éѯ,²éѯºó°´ÉÏÃæµÄ·½Ê½Æô¶¯±¸¿â,¾ÍÓÖ¿ÉÒÔ»Ö¸´ÁË
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
alter database open;
14. ¼ì²éÎïÀístandbyÇé¿ö
1£©ÔÚ±¸¿â¼ì²éµ±Ç°µÄarchivelog
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
15. È»ºó¿ÉÒÔÔÚÖ÷¿âÀï²åÈëÊý¾ÝÀ´²âÊÔ
16. SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
Database altered.
SQL> ALTER DATABASE OPEN;
½ñÌìÔÚ10.2.0.1 for linuxÉÏexpʱ³öÏÖÏÂÃæ´íÎó:
EXP-00091: Exporting questionable statistics.
Õâ¸öÎÊÌâ¿ÉÒÔÔÚEXPµÄ²ÎÊýÖмӲÎÊýSTATISTICS=none¾Í¿ÉÒÔ½â¾ö
½ñÌìÔËÐÐÒ»ÌõsqlÓï¾ä,20¶à·ÖÖÓÁË»¹ÊÇûÓзµ»Ø,Êý¾ÝҲûÓÐÊ²Ã´ÌØÊâµÄµØ·½,ÓÚÊÇÎÒ°ÑÕâ¸öÓû§Ïµĸ÷¸ö±íÖØÐ·ÖÎöÁËÒ»ÏÂ,ÔÙÖ´ÐиÃÓï¾ä,·¢Ïֺܿì»ñµÃÁ˽á¹û!!
ÔÚÕâÀï¼Ç¼һÏÂ
dbms_utility.analyze_schema(schema=>'SCOTT',method=>'ESTIMATE',estimate_percent=>10,method_opt=>'FOR ALL INDEXES');
ORA-01779: cannot modify a column which maps to a non-key-preserved table
ÀýÈ磬ʹÓÃÒÔϵĸüвéѯ¾Í»á³öÏָôíÎó¡£
CREATE TABLE test1 ( id integer primary key, num integer );INSERT INTO test1 VALUES (1,0);
INSERT INTO test1 VALUES (2,0);
INSERT INTO test1 VALUES (3,0);
INSERT INTO test1 VALUES (4,0);
CREATE TABLE test2 ( id integer, num integer, upd integer );
INSERT INTO test2 VALUES (1,10, 0);
INSERT INTO test2 VALUES (2,20, 1);
UPDATE ( SELECT t1.id id1, t1.num num1, t2.id id2, t2.num num2
FROM test1 t1, test2 t2 WHERE t1.id=t2.id AND t2.upd=1 )
SET num1=num2; ORA-01779: cannot modify a column which maps to a non-key-preserved table
Õâ¸ö´íÎóµÄÒâ˼ÊÇ£¬×Ó²éѯµÄ½á¹ûÖУ¬¸üÐÂÊý¾ÝÔ´(test2)µÄÄÚÈݲ»Î¨Ò»£¬µ¼Ö±»¸üжÔÏó(test1)ÖеÄÒ»ÐпÉÄܶÔÓ¦Êý¾ÝÔ´(test2)ÖеĶàÐС£ ±¾ÀýÖУ¬test2±íµÄid²»Î¨Ò»£¬Òò´Ëtest2±íÖпÉÄÜ´æÔÚidÏàͬµ«ÊÇnum²»ÏàͬµÄÊý¾Ý£¬ÕâÖÖÊý¾ÝÊÇÎÞ·¨ÓÃÀ´¸üРtest1 µÄ¡£
½â¾ö·½·¨¾ÍÊDZ£Ö¤Êý¾ÝÔ´µÄΨһÐÔ£¬ÀýÈç±¾ÀýÖпÉÒÔΪtest2.id´´½¨Ò»¸öΨһË÷Òý£º
CREATE UNIQUE INDEX test2_idx_001 ON test2 (id);Ö®ºóÉÏÃæµÄ¸üоͿÉÒÔÖ´ÐÐÁË¡£
ÁíÍâÒ²¿ÉÒÔÇ¿ÖÆ Oracle Ö´ÐУ¬·½·¨ÊǼÓÉÏ BYPASS_UJVC ×¢ÊÍ¡£
UPDATE( SELECT /*+ BYPASS_UJVC */ t1.id id1, t1.num num1, t2.id id2, t2.num num2
FROM test1 t1, test2 t2
WHERE t1.id=t2.id AND t2.upd=1 )
SET num1=num2;
BYPASS_UJVCµÄ×÷ÓÃÊÇÌø¹ýOracleµÄ¼ü¼ì²é¡£ ÕâÑùËäÈ»Äܹ»Ö´ÐÐÁË£¬µ«ÊÇÈç¹ûtest2ÖдæÔÚ²»Î¨Ò»µÄÊý¾Ý£¬test1¾Í»á±»¸üжà´Î¶øµ¼ÖÂÒâÏë²»µ½µÄ½á¹û¡£
»·¾³£º
AIX5L+HACMP+ORACLE9I
·ÖÎöalert£¬Ã»Óз¢ÏÖ´íÎó£º
Fri Apr 27 17:08:05 2007
Thread 1 advanced to log sequence 612
Current log# 2 seq# 612 mem# 0: /oracle2/oracle/oradata/mssdb2/redo02.log
Fri Apr 27 17:08:05 2007
ARC0: Evaluating archive log 1 thread 1 sequence 611
ARC0: Beginning to archive log 1 thread 1 sequence 611
Creating archive destination LOG_ARCHIVE_DEST_1: '/oracle2/oracle/oradata/oraclearchivelog/1_611.dbf'
ARC0: Completed archiving log 1 thread 1 sequence 611
Fri Apr 27 17:18:52 2007
Shutting down instance: further logons disabled
Shutting down instance (immediate)
License high water mark = 117
Waiting for dispatcher 'D000' to shutdown
All dispatchers and shared servers shutdown
Fri Apr 27 17:20:49 2007
ALTER DATABASE CLOSE NORMAL
Fri Apr 27 17:20:49 2007
SMON: disabling tx recovery
SMON: disabling cache recovery
Fri Apr 27 17:20:49 2007
Shutting down archive processes
Archiving is disabled
Fri Apr 27 17:20:49 2007
ARCH shutting down
Fri Apr 27 17:20:49 2007
ARCH shutting down
Fri Apr 27 17:20:49 2007
ARC1: Archival stopped
Fri Apr 27 17:20:49 2007
ARC0: Archival stopped
Fri Apr 27 17:20:49 2007
Thread 1 closed at log sequence 612
Successful close of redo thread 1.
Fri Apr 27 17:20:50 2007
Completed: ALTER DATABASE CLOSE NORMAL
Fri Apr 27 17:20:50 2007
ALTER DATABASE DISMOUNT
Completed: ALTER DATABASE DISMOUNT
ARCH: Archiving is disabled
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
ARCH: Archiving is disabled
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Fri Apr 27 17:22:39 2007
¼ì²éhacmpµÄÈÕÖ¾£¬·¢ÏÖ³ö´íʱ¿ÌhacmpÕýÔÚÖ´ÐÐÇл»£º
hacmpµÄoutÎļþ£º
:server_restart[144] :server_restart[144] odmget -qmonitor=ora2_db and name=NOTIFY_METHOD HACMPmonitor
:server_restart[144] cut -d" -f2
:server_restart[144] grep value =
NOTIFY=
:server_restart[146] :server_restart[146] cut -d -f1
:server_restart[146] echo
NOTIFY_SCRIPT=
:server_restart[146] [[ -n ]]
:server_restart[162] :server_restart[162] odmget -qmonitor=ora2_db and name=CLEANUP_METHOD HACMPmonitor
:server_restart[162] cut -d" -f2
:server_restart[162] egrep value =
CLEANUP=/hacmpscript/ora2stop-db.sh
:server_restart[163] :server_restart[163] cut -d -f1
:server_restart[163] echo /hacmpscript/ora2stop-db.sh
CLEANUP_SCRIPT=/hacmpscript/ora2stop-db.sh
:server_restart[163] [[ -n /hacmpscript/ora2stop-db.sh ]]
:server_restart[163] [[ -x /hacmpscript/ora2stop-db.sh ]]
:server_restart[167] dspmsg scripts.cat 9334 server_restart: Calling user specified cleanup method /hacmpscript/ora2stop-db.shn server_restart /hacmpscript/ora2stop-db.sh
server_restart: Calling user specified cleanup method /hacmpscript/ora2stop-db.sh
:server_restart[168] /hacmpscript/ora2stop-db.sh
:server_restart[168] ODMDIR=/etc/objrepos
SQL*Plus: Release 9.2.0.1.0 - Production on Wed May 9 16:26:13 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> Connected.
SQL> Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
¼ì²éhacmpµÄtest½Å±¾£¬Ã»Óз¢ÏÖÎÊÌ⣺
test-db-mssdb2.shµÄÄÚÈÝ£º
#!/bin/sh
#
# Copyright (c) MDCL Inc. All Rights Reserved.
# Created by Li Han Guang 2006.01.16
#
# Should return 0 if the service was start succesfully; otherwise,
# return non-zero
#
# check the following process:
# ora_smon_$sid
# ora_pmon_$sid
# ora_dbw0_$sid
# ora_lgwr_$sid
# ora_reco_$sid
# database connection
ORACLE_SID="mssdb2"
ORACLE_HOME=/oracle2/oracle/product/9.2.0
ORA_USER="oracle2"
#ISQL=svrmgrl
ISQL="sqlplus /nolog"
LOG_FILE="/tmp/test_mssdb2.log"
#
# log messages, need var $LOG_FILE
#
log()
{
echo [`date +"%Y-%m-%d %H:%M:%S"`] $1 >> $LOG_FILE
echo [`date +"%Y-%m-%d %H:%M:%S"`] $1
}
get_status()
{
str=$1
# ps -ef | cut -c52- | grep $str | grep -v grep > /dev/null 2>&1
ps -ef | grep $str | grep -v grep > /dev/null 2>&1
STATUS=$?
case $STATUS in
0) return 0;;
*) return 1;;
esac
}
#
#checks for smon process
#
check_smon()
{
sid=$1
get_status ora_smon_$sid
return $?
}
#
#checks for pmon process
#
check_pmon()
{
sid=$1
get_status ora_pmon_$sid
return $?
}
#
#checks for dbw0 process
#
check_dbw0()
{
sid=$1
get_status ora_dbw0_$sid
return $?
}
#checks for lgwr process
#
check_lgwr()
{
sid=$1
get_status ora_lgwr_$sid
status=$?
return ${status}
}
#
#checks for reco process
#
check_reco()
{
sid=$1
get_status ora_reco_$sid
return $?
}
####################################
# start to check oracle processes
####################################
#checks for database connection
#
su - $ORA_USER -c "${ISQL} > /tmp/$$.out 2> /tmp/$$.err " <
select sysdate from dual;
exit;
EOF
grep SYSDATE /tmp/$$.out >/dev/null 2>&1
if test "$?" -ne 0
then
# cat /tmp/$$.*
log "ORACLE: Cannot connect to database for ORACLE_SID=${ORACLE_SID}."
exit 1
else
log "Oracle instance ${ORACLE_SID} can be connected"
fi
rm -f /tmp/$$.*
check_smon ${ORACLE_SID}
if test "$?" -ne 0
then
log "ORACLE: ora_smon_${ORACLE_SID} is NOT running."
exit 1
else
log "ORACLE: ora_smon_${ORACLE_SID} is running"
fi
check_pmon ${ORACLE_SID}
if test "$?" -ne 0
then
log "ORACLE: ora_pmon_${ORACLE_SID} is NOT running."
exit 1
else
log "ORACLE: ora_pmon_${ORACLE_SID} is running"
fi
check_dbw0 ${ORACLE_SID}
if test "$?" -ne 0
then
log "ORACLE: ora_dbw0_${ORACLE_SID} is NOT running."
exit 1
else
log "ORACLE: ora_dbw0_${ORACLE_SID} is running"
fi
check_lgwr ${ORACLE_SID}
if test "$?" -ne 0
then
log "ORACLE: ora_lgwr_${ORACLE_SID} is NOT running."
exit 1
else
log "ORACLE: ora_lgwr_${ORACLE_SID} is running"
fi
check_reco ${ORACLE_SID}
if test "$?" -ne 0
then
log "ORACLE: ora_reco_${ORACLE_SID} is NOT running."
exit 1
else
log "ORACLE: ora_reco_${ORACLE_SID} is running"
fi
exit 0
¸ù¾ÝhacmpµÄtest½Å±¾¼ì²étest½Å±¾¶ÔÓ¦µÄÈÕÖ¾778500.out·¢ÏÖÁ¬½ÓÊý¾Ý¿â´æÔÚÎÊÌ⣺
SQL*Plus: Release 9.2.0.1.0 - Production on Fri Apr 27 17:12:32 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> ERROR:
ORA-12540: TNS:internal limit restriction exceeded
SQL> SP2-0640: Not connected
SQL>
¼ÌÐø¼ì²éORACLEÊý¾Ý¿âµÄ¼àÌýÈÕÖ¾LISTERNER.LOG£¬·¢ÏÖÈçÏ´íÎó£º
27-APR-2007 17:10:33 * (CONNECT_DATA=(SID=mssdb2)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.192.139.194)(PORT=40707)) * establish * mssdb2 * 12500
TNS-12500: TNS:listener failed to start a dedicated server process
TNS-12540: TNS:internal limit restriction exceeded
TNS-12560: TNS:protocol adapter error
TNS-00510: Internal limit restriction exceeded
IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable
27-APR-2007 17:12:25 * 12502
TNS-12502: TNS:listener received no CONNECT_DATA from client
No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.192.139.202)(PORT=1521)))
27-APR-2007 17:14:43 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=Unicom_ora2)(USER=oracle2))(COMMAND=stop)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=153092352)) * stop * 0
TNSLSNR for IBM/AIX RISC System/6000: Version 9.2.0.1.0 - Production on 27-APR-2007 17:22:47
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
×îºó·ÖÎö¸ÃÎÊÌâÒýÆðµÄ¿ÉÄÜÔÒò£º
Ò»¡¢ AIX²Ù×÷ϵͳ²ÎÊýmaxuproc£º
Ö´ÐÐÏàÓ¦µÄ¼ì²é£¬·¢ÏָòÎÊýʹÓõÄĬÈÏÖµ£¬ÐèÒªµ÷Õû£º
$ lsattr -El sys0|grep maxuproc
maxuproc 128 Maximum number of PROCESSES allowed per user True
¶þ¡¢ ORACLEÊý¾Ý¿âµÄ²ÎÊýPROCESSESºÍPGA_AGGREGATE_TARGET
Ö´ÐÐÏàÓ¦µÄ¼ì²é,·¢ÏÖ¸Ã2¸ö²ÎÊý¶¼ÎªÄ¬ÈÏÖµ£¬ÐèÒªµ÷Õû£º
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 2
processes integer 150
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 25165824
»ã×ܽ¨Ò飬Ìá½»¿Í»§¡£