क्या कोई भी निम्नलिखित समस्या का कारण बनने के लिए मेरे 12 सी लैपटॉप-इंस्टॉलेशन के साथ क्या गलत हो सकता है, इस बारे में कुछ प्रकाश डाल सकता है?ओरेकल 12 सी में डेटाडर्नी में मेरा plsql कोड क्यों गुम है?
संक्षेप में: सभी कोड मैं अपने स्कीमा में बनाने है और क्रियान्वित किया जा सकता है, लेकिन नहीं देखा जा सकता या संपादित किसी भी आईडीई में, या dba_source के माध्यम से।
सबसे पहले: मैं डीबीए नहीं हूं, और न ही मैं कभी भी रहूंगा, हालांकि मेरे पास कुछ डीबीए-समझ है।
मैं ओरेकल-डेवलपर हूं। तो मैं 12 सी स्थापित करते समय बेवकूफ चीजों के सभी प्रकार कर सकता था।
मैंने अपने लैपटॉप पर ओरेकल डेटाबेस 12 सी एंटरप्राइज़ संस्करण 12.1.0.1.0 64 बिट स्थापित किया है।
1 कंटेनर डेटाबेस।
1 प्लग करने योग्य डेटाबेस।
जब मैं किसी भी आईडीई (पीएल/एसक्यूएल डेवलपर। एसक्यूएल डेवलपर, ...) में अपने प्लग करने योग्य डेटाबेस में लॉग इन करता हूं तो मेरी सभी ऑब्जेक्ट्स पसंद के आईडीई के 'ब्राउज़र' में दिखाई देती हैं।
हालांकि, जब मैं एक plsql- आधारित ऑब्जेक्ट जैसे संकुल/प्रक्रियाओं/कार्यों/प्रकारों को खोलने (स्रोत के स्रोत को खोलने का प्रयास करता हूं), तो मैं नहीं कर सकता।
एक अपवाद ट्रिगर्स है। उन्हें देखा और संपादित किया जा सकता है।
plsql डेवलपर (10.0.5.1710) मुझे बताता है (उदाहरण के लिए): "/ * पैकेज ईआरओ $ यूटीएल का स्रोत उपलब्ध नहीं है * /"
एसक्यूएल डेवलपर (4.0.3.16) बस मुझे दिखाता है: "बनाएं या बदलें"।
वस्तुओं को सामान्य रूप से सामान्य रूप से उपयोग किया जा सकता है।
पहले तो मैंने सोचा था कि
"plsql डेवलपर बस 12C के लिए अभी तक तैयार नहीं है" लेकिन फिर मैंने देखा कि sqldev ही करता है, तो ....
मैं डेटाबेस/datadictionary ही जाँच की।
[email protected]>CREATE OR REPLACE PROCEDURE hi_there
2 AS
3 BEGIN
4 dbms_output.put_line ('Hello World');
5 END;
6/
Procedure created.
अब तक तो अच्छा:
मैं एक साधारण प्रक्रिया पैदा करते हैं।
क्या यह अस्तित्व में है, और काम करता है?
[email protected]>exec hi_there
Hello World
PL/SQL procedure successfully completed.
स्पष्ट रूप से यह करता है।
अब, user_objects अपने अस्तित्व के बारे में पता है?
[email protected]>SELECT object_name||' - '||object_type object
2 FROM user_objects
3 WHERE object_name = 'HI_THERE';
OBJECT
-----------------------------------------------------------
HI_THERE - PROCEDURE
1 row selected.
हाँ! महान!
अब, मुझे अपने स्रोत दिखाने
[email protected]>SELECT *
2 FROM user_source
3 WHERE name = 'HI_THERE'
4 ;
no rows selected
मुझे माफ करना? क्या मैंने नाम याद किया?
[email protected]>SELECT *
2 FROM user_source
3 ;
no rows selected
सं।
[email protected]>SELECT DISTINCT
2 owner
3 FROM dba_source
4 order by owner
5 ;
OWNER
-------------------------------
APEX_040200
CTXSYS
DBSNMP
DVF
DVSYS
FLOWS_FILES
GSMADMIN_INTERNAL
LBACSYS
MDSYS
OLAPSYS
ORACLE_OCM
ORDPLUGINS
ORDSYS
OUTLN
SYS
SYSTEM
WMSYS
XDB
18 rows selected.
मैं हार रहा हूँ
नई जानकारी:
मुझे नहीं लगता कि यह समस्या से संबंधित है
dba_source मेरे स्रोत या तो की किसी भी प्रदर्शित नहीं करता है , लेकिन मुझे इसका उल्लेख करना चाहिए था:
यह विंडोज लैपटॉप पर चल रहा है।
विंडोज 8.1 अधिक सटीक होना चाहिए।
@ लालिट
आपको यहां एक बिंदु लगता है।
dbms_metadata सही ढंग से मेरी सभी वस्तुओं का कोड उत्पन्न करता है।
[email protected]>SELECT dbms_metadata.get_ddl ('PROCEDURE'
2 ,'HI_THERE'
3 ,'ERO'
4 ) statement
5 FROM dual;
STATEMENT
---------------------------------------------------------------
CREATE OR REPLACE EDITIONABLE PROCEDURE "ERO"."HI_THERE"
AS
BEGIN
dbms_output.put_line ('Hello World');
END;
1 row selected.
1 लेकिन किसी भी तरह datadictionary विचारों को मेरा कोड नहीं दिख रहा है।
@all
विचारों जांच करते हुए, हर समय इसे weirder हो जाता है।
नीचे का सारांश: dba_source मेरे कोड के अस्तित्व के बारे में नहीं जानता है, लेकिन स्रोत कोड जो dba_source बनाता है !!
लैरी रहस्यमय तरीके से चलता है!
dba_source का स्रोत है:
CREATE OR REPLACE
VIEW dba_source
AS
SELECT OWNER, NAME, TYPE, LINE, TEXT, ORIGIN_CON_ID
FROM INT$DBA_SOURCE
;
सुंदर सीधे आगे: सिर्फ दृश्य INT $ DBA_SOURCE से हर पंक्ति चुनें।
तो, यदि विचारों में कुछ भी गलत है, तो यह इस (या गहरे) में होना चाहिए।
आइए क्वेरी उस दृश्य, प्रणाली के रूप में प्रवेश SYSDBA PDB पर के रूप में
मुझे पता है (क्योंकि स्पष्ट रूप से मेरी ERO खाता दृश्य के इस तरह के सीधे क्वेरी नहीं कर सकता), मुझे पता है, मैं चाहिए कभी नहीं के रूप में लॉग इस तरह, लेकिन, डेटाबेस शुरू कर दिया ;-) तो, मुझे लगता है कि इस कभी नहीं
[email protected]>SELECT s.text
2 FROM INT$DBA_SOURCE s
3 WHERE s.name = 'HI_THERE'
4 ORDER BY s.line
5 ;
no rows selected
ठीक है, के रूप में उम्मीद। क्योंकि यह मूल रूप से dba_source जैसा ही है।
आईएनटी $ DBA_SOURCE दृश्य क्या करता है?
CREATE OR REPLACE
VIEW int$dba_source
(owner
,name
,type
,type#
,line
,text
,sharing
,origin_con_id
)
AS
SELECT u.name
, o.name
, DECODE(o.type#
, 7, 'PROCEDURE'
, 8, 'FUNCTION'
, 9, 'PACKAGE'
,11, 'PACKAGE BODY'
,12, 'TRIGGER'
,13, 'TYPE'
,14, 'TYPE BODY'
,22, 'LIBRARY'
,87, 'ASSEMBLY'
,'UNDEFINED'
)
, o.type#
, s.line
, s.source
, DECODE(bitand(o.flags, 196608)
,65536 , 1
,131072, 1
,0
)
, TO_NUMBER(sys_context('USERENV', 'CON_ID'))
FROM sys."_CURRENT_EDITION_OBJ" o
, sys.source$ s
, sys.user$ u
WHERE o.obj# = s.obj#
AND o.owner# = u.user#
AND ( o.type# IN (7, 8, 9, 11, 12, 14, 22)
OR ( o.type# = 13
AND o.subname IS NULL
)
)
UNION ALL
SELECT u.name
, o.name
, 'JAVA SOURCE'
, o.type#
, s.joxftlno
, s.joxftsrc
, DECODE(bitand(o.flags, 196608)
,65536 , 1
,131072, 1
,0
)
, TO_NUMBER(sys_context('USERENV', 'CON_ID'))
FROM sys."_CURRENT_EDITION_OBJ" o
, x$joxscd s
, sys.user$ u
WHERE o.obj# = s.joxftobn
AND o.owner# = u.user#
AND o.type# = 28
;
ठीक है!
मुझे यह मिलता है। तो मूल रूप से उपयोगकर्ताओं से वस्तुओं तक और वहां से स्रोत में शामिल हो जाते हैं।
और फिर ऑब्जेक्ट को किसी प्रकार का होना चाहिए।
शायद मेरी वस्तुओं का 'प्रकार' गलत है?
पहला सवाल क्या,
[email protected]>SELECT u.user#
2 FROM sys.user$ u
3 WHERE u.name = 'ERO'
4 ;
USER#
---------------
111
1 row selected.
मैं एक usernumber मिल गया है है मेरे उपयोगकर्ता # इसलिए मैं कर रहा हूँ ...
अब वस्तु मौजूद है, और यदि ऐसा है तो, अपने obj #, प्रकार और SUBNAME क्या है (जहां-खंड में सामान)?
[email protected]>SELECT o.obj#
2 , o.name
3 , o.type#
4 , NVL(o.subname,'<<NULL>>') subname
5 FROM sys."_CURRENT_EDITION_OBJ" o
6 WHERE o.owner# = 111
7 AND o.name = 'HI_THERE'
8 ;
OBJ# NAME TYPE# SUBNAME
------ --------- ----- ---------
97193 HI_THERE 7 <<NULL>>
1 row selected.
हाँ, यह मौजूद है।
और प्रकार/उपनाम संयोजन वह है जो कहां से खंडित है।
तो समस्या sys.source $ में होनी चाहिए।
जाहिर है कि एक स्रोत वितरित नहीं करता है ....
[email protected]>SELECT s.source
2 FROM sys.source$ s
3 WHERE s.obj# = 97193
4 ORDER BY s.line
5 ;
SOURCE
---------------------------------------------
PROCEDURE hi_there
AS
BEGIN
dbms_output.put_line ('Hello World');
END;
5 rows selected.
क्या ????
स्रोत वहां है।
मैंने अभी-दृश्य-स्रोत के प्रत्येक भाग को चेक किया है। और यह ठीक से जांचता है।
तो दृश्य के चयन विवरण को मेरी प्रक्रिया का स्रोत बनाना चाहिए।
लेकिन अगर ऐसा होता है, तो दृश्य से चयन करना भी चाहिए।
इसलिए, हालांकि मैं जानता हूँ कि यह नहीं मुझे मेरे sourcecode दे सकते हैं (क्योंकि दृश्य doen't), मैं जांच करेंगे अगर मैं चयन बयान दृश्य का स्रोत है कि से चयन क्या होता है
[email protected]>SELECT SOURCE
2 FROM (
3 SELECT u.name u_name
4 , o.name o_name
5 , DECODE(o.type#
6 , 7, 'PROCEDURE'
7 , 8, 'FUNCTION'
8 , 9, 'PACKAGE'
9 ,11, 'PACKAGE BODY'
10 ,12, 'TRIGGER'
11 ,13, 'TYPE'
12 ,14, 'TYPE BODY'
13 ,22, 'LIBRARY'
14 ,87, 'ASSEMBLY'
15 ,'UNDEFINED'
16 )
17 , o.type#
18 , s.line
19 , s.source
20 , DECODE(bitand(o.flags, 196608)
21 ,65536 , 1
22 ,131072, 1
23 ,0
24 )
25 , TO_NUMBER(sys_context('USERENV', 'CON_ID')) u_env
26 FROM sys."_CURRENT_EDITION_OBJ" o
27 , sys.source$ s
28 , sys.user$ u
29 WHERE o.obj# = s.obj#
30 AND o.owner# = u.user#
31 AND ( o.type# IN (7, 8, 9, 11, 12, 14, 22)
32 OR ( o.type# = 13
33 AND o.subname IS NULL
34 )
35 )
36 UNION ALL
37 SELECT u.name
38 , o.name
39 , 'JAVA SOURCE'
40 , o.type#
41 , s.joxftlno
42 , s.joxftsrc
43 , DECODE(bitand(o.flags, 196608)
44 ,65536 , 1
45 ,131072, 1
46 ,0
47 )
48 , TO_NUMBER(sys_context('USERENV', 'CON_ID'))
49 FROM sys."_CURRENT_EDITION_OBJ" o
50 , x$joxscd s
51 , sys.user$ u
52 WHERE o.obj# = s.joxftobn
53 AND o.owner# = u.user#
54 AND o.type# = 28
55 )
56 WHERE o_name = 'HI_THERE'
57 ORDER BY line
58 ;
SOURCE
----------------------------------------------------------------------
PROCEDURE hi_there
AS
BEGIN
dbms_output.put_line ('Hello World');
END;
5 rows selected.
वहाँ कुछ नीदरलैंड के राज्य में सड़ा हुआ :-(
मैं इसे गैर-प्लग करने योग्य डेटाबेस के साथ विंडोज पर 12.1.0.2.0 64-बिट एंटरप्राइज़ संस्करण पर पुन: उत्पन्न नहीं कर सकता। आप वैसे भी 12.1.0.2 तक अपग्रेड करना चाहते हैं - इसमें बहुत अच्छी सुविधाएं और फिक्स हैं और इसे 12.1.0.1 से अधिक लंबे समय तक समर्थित किया जाएगा। मुझे नहीं पता कि इससे आपकी समस्या हल हो जाएगी लेकिन यह कम से कम इसे कम कर सकती है। –
क्या आप मेरे उत्तर में उल्लिखित विकल्प का प्रयास कर सकते हैं। –
क्या आपके पास कोई * _ स्रोत या अन्य समानार्थी शब्द हैं जो गलत जगह पर इंगित कर रहे हैं? (स्ट्रॉस पर क्लचिंग, स्पष्ट रूप से ...) –