2008-11-12 14 views
13

क्या ऑरैकल उपयोगकर्ता की डिफ़ॉल्ट स्कीमा को बदलने का कोई तरीका है?ओरेकल सेटिंग प्रति उपयोगकर्ता डिफ़ॉल्ट योजना (सत्र में बदलाव नहीं)

मुझे यह FAQ में मिला कि मैं इसे सत्र में बदल सकता हूं, लेकिन यह वही नहीं है जो मैं चाहता हूं। E.G. लॉग ऑन पर उपयोगकर्ता हमेशा एक और स्कीमा डिफ़ॉल्ट रूप से देखता है।

अग्रिम धन्यवाद।

उत्तर

20

मेरा मानना ​​है कि एक लॉगऑन ट्रिगर काम करना चाहिए:

CREATE OR REPLACE TRIGGER db_logon 
AFTER logon ON DATABASE WHEN (USER = 'A') 
BEGIN 
    execute immediate 'ALTER SESSION SET CURRENT_SCHEMA = B'; 
END; 
+0

हाँ, यह एकमात्र समाधान मैंने पाया था, लेकिन मैं एक बहुत लंबा क्वेरी (जैसे जब (वास्तव में बहुत लंबी सूची उपयोगकर्ता)। किसी भी एक और तरीका बनाने के लिए नहीं करना चाहती? –

+0

आप नहीं बना सका एक मैपिंग टेबल जो उपयोगकर्ता ए को स्कीमा बी पर मैप करती है और उसके बाद उस तालिका को ट्रिगर में क्वेरी करती है? तो WHEN (USER = 'A') को खत्म करें, इस मैपिंग तालिका में उपयोगकर्ता को देखें, और फिर यह तय करें कि आपको वर्तमान को बदलने की आवश्यकता है या नहीं स्कीमा –

+0

दरअसल मैं अब डीबी WHEN (1 = 1) भाग पर लॉगऑन के बाद उपयोग कर रहा हूं, और यह काम करता है, मदद टोनी के लिए धन्यवाद। –

11

किसी कारण टोनी ट्रिगर मेरे लिए काम नहीं किया है। हालांकि, एक ही अवधारणा का उपयोग कर वेब पर मुझे थोड़ा अलग ट्रिगर मिला।

create or replace trigger set_default_schema 
after logon on my_user.schema 
begin 
    execute immediate 'alter session set current_schema=NEW_SCHEMA'; 
end; 

मैं किसी और के पास एक ही समस्या होने पर बस इसे बाहर फेंकना चाहता था।

+0

मुझे और अंतिम के पीछे अर्धविराम हटाने के बाद ही इसे संकलित करने के लिए मिला। .. लेकिन यह अभी भी काम नहीं करता है, लॉग इन करते समय डिफ़ॉल्ट स्कीमा नहीं बदलता है! मुझे लगता है कि मुझे डीबी पर कुछ विशेषाधिकार याद आ रहे हैं! – lexu

1
create or replace trigger AFTER_LOGON_TSFREL 
AFTER LOGON ON "TSFRELEASEAPP".SCHEMA 
BEGIN 
    EXECUTE IMMEDIATE 'ALTER SESSION SET current_schema=TSF_RELEASE'; 
END; 
+0

मेरे पास "melanke" नामक एक उपयोगकर्ता है और "melanke" नामक एक स्कीमा है। अगर मुझे melanke.tb_melanke' से 'select * पूछने के बिना' tb_melanke से 'select * से पूछना है तो मुझे क्या करना है? यह ट्रिगर्स काम नहीं कर रहे हैं। – melanke

+0

ट्रिगर्स को लॉगऑन के बाद स्वयं को एटर सत्र निष्पादित करने का प्रयास करके काम करना चाहिए, अगर यह काम करता है तो सुनिश्चित करें कि आपका ट्रिगर सही विशेषाधिकारों के साथ सेट और संकलित है ... एक और विकल्प होगा (सार्वजनिक) SYNONYMS – Falco

संबंधित मुद्दे