ORA-00054: রিসোর্স ব্যস্ত এবং NOWAIT নির্দিষ্ট বা সময়সীমা সমাপ্তির সাথে অর্জন


193

আমি যখন কোনও টেবিল আপডেট করি তখন কেন আমি এই ডাটাবেস ত্রুটি পাচ্ছি?

লাইন 1 এ ত্রুটি: ORA-00054: উত্সে ব্যস্ত এবং NOWAIT নির্দিষ্ট বা সময়সীমা সমাপ্তির সাথে অর্জন


22
আপনি যদি বিবৃতি পোস্ট করেন যা ত্রুটির দিকে পরিচালিত করে তবে এটি সাধারণত সহায়তা করে
গ্যারি মায়ারস

উত্তর:


222

আপনার টেবিলটি ইতিমধ্যে কিছু প্রশ্নের দ্বারা লক করা আছে। উদাহরণস্বরূপ, আপনি "আপডেটের জন্য নির্বাচন করুন" নির্বাহ করেছেন এবং এখনও অন্য কোনও নির্বাচন করা প্রশ্নের সাথে প্রতিশ্রুতিবদ্ধ / রোলব্যাকড এবং বরখাস্ত করেন নি। আপনার ক্যোয়ারি কার্যকর করার আগে কমিট / রোলব্যাক করুন।


47
আমি এটিতে 'অন্য সেশনে' যুক্ত করব একটি সাধারণ দৃশ্যটি হ'ল আপনি কোনও সরঞ্জামে আপডেটটি পরীক্ষা করেছেন, এসকিউএল বিকাশকারী বা টোড বলুন এবং তারপরে এটি অন্য কোথাও চালানোর চেষ্টা করেছেন যখন প্রথম সেশনে এখনও লকটি রয়েছে। সুতরাং আপনি পুনরায় আপডেটটি চালানোর আগে আপনাকে অন্য সেশনের প্রতিশ্রুতিবদ্ধ / রোলব্যাক করতে হবে।
অ্যালেক্স পুল

1
সম্ভবত কোনও প্রশ্নের চেয়ে ডিএমএল (সন্নিবেশ / মুছুন / আপডেট করুন)। এবং অন্য একটি অধিবেশন। যেহেতু জিজ্ঞাসা করা লোকটি নবাগত মনে হচ্ছে উত্তরটি সঠিক হতে পারে। তবে আপনি কোনও প্রোডাকশন সিস্টেমে অন্যান্য ব্যবহারকারীর পক্ষে প্রতিশ্রুতিবদ্ধ না।
আর্টুরো হার্নান্দেজ

4
ঠিক আছে, টোডে আমাকে কী সমস্যাটি করিয়েছিল: আমি যখন কোনও সারি মুছতে চাইছিলাম তখন আমার সহকর্মী আমার মতো একই টেবিলে ছিলেন এবং তাই আমি এটি মুছতে পারিনি। যখন সে অন্য টেবিলের দিকে চলে গেল আমি সারিগুলি মুছতে সক্ষম হয়েছি। এটি সেখানে কাউকে সাহায্য করতে পারে। তবে এটি কেবলমাত্র যদি আপনি টেবিলের ভিতরে টোডের সাথে কাজ করেন, এবং কোয়েরির জন্য নয়।
ডেটাডিড

সম্প্রতি আমাদের স্টেজিং সার্ভারে উপস্থিত হয়েছে (ওয়েবস্পিয়ারে স্প্রিং অ্যাপ্লিকেশন)। সমাধানটি ছিল "একশব্দ" ডাটাবেস আপডেট স্ক্রিপ্টকে ছোট ছোট টুকরো করে আলাদা করে ত্রুটি-কারণজনিত বিবৃতিগুলিকে একটি পৃথক আপডেট পরিষেবাদিতে সরানো যা একটি পৃথক লেনদেন ব্যবহার করে: @ ট্রান্সজেকশনাল (প্রচার = প্রচার)
আরএকিআরইএস_এনইউ

102

এখান থেকে ORA-00054: সম্পদ ব্যস্ত এবং নির্দিষ্ট NOWAIT সঙ্গে অর্জন

আপনি বর্গক্ষেত্র, ব্যবহারকারীর নাম, মেশিন, পোর্ট তথ্য সন্ধান করতে পারেন এবং সংযোগটি ধারণ করে এমন আসল প্রক্রিয়াতে যেতে পারেন

SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,
S.MACHINE,S.PORT , S.LOGON_TIME,SQ.SQL_FULLTEXT 
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S, 
V$PROCESS P, V$SQL SQ 
WHERE L.OBJECT_ID = O.OBJECT_ID 
AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR 
AND S.SQL_ADDRESS = SQ.ADDRESS;

5
আমাকে জিজ্ঞাসা থেকে s.port অপসারণ করতে হয়েছিল তবে এটি আমাকে অপরাধী খুঁজে পেতে দেয়
সিবস্টার

তালা ক্ষণস্থায়ী সুতরাং যদি সন্নিবেশ আসে, আপনি অবিলম্বে প্রতিশ্রুতিবদ্ধ। এটি এই কোয়েরিতে প্রদর্শিত হবে না। আপনি যদি 'ডিডিএল' জারি করেন তবে ত্রুটিটি পেতে পারেন। লেনদেন খোলা আছে যখন। আমার পোস্টটি নীচে দেখুন his এটি প্রায় কাজ করা সত্যিই সহজ।
বব

4
আমি ওপি-র মতো একই সমস্যা পেয়েছি, তবে আপনার উল্লিখিত কোনও সারণী আমি দেখতে পাচ্ছি না (ভি $ লকED_OBJECT থেকে * নির্বাচন করুন, উদাহরণস্বরূপ, ORA-00942 প্রদান করুন: সারণী বা দর্শন বিদ্যমান নেই)। কোন ধারনা?
র্যান্ডম_ফরেস্ট_ফ্যান্যাটিক

3
পরিচালনার দৃষ্টিভঙ্গি দেখার জন্য আপনার কাছে পর্যাপ্ত অধিকার নাও থাকতে পারে।
njplumridge

সমস্যার ফলোআপ S.Port: 11.2 ডক্সটি Portক্ষেত্র হিসাবে উল্লেখ V$Sessionকরেছে তবে আমার জন্য 11.1 ব্যবহার S.Portকরা অবৈধ। এটি কি 11.2 এর জন্য যুক্ত করা হয়েছিল, সম্ভবত?

63

ওরাকল সেশনটি হত্যা করুন

সক্রিয় সেশন তথ্য যাচাই করতে নীচে কোয়েরি ব্যবহার করুন

SELECT
    O.OBJECT_NAME,
    S.SID,
    S.SERIAL#,
    P.SPID,
    S.PROGRAM,
    SQ.SQL_FULLTEXT,
    S.LOGON_TIME
FROM
    V$LOCKED_OBJECT L,
    DBA_OBJECTS O,
    V$SESSION S,
    V$PROCESS P,
    V$SQL SQ
WHERE
    L.OBJECT_ID = O.OBJECT_ID
    AND L.SESSION_ID = S.SID
    AND S.PADDR = P.ADDR
    AND S.SQL_ADDRESS = SQ.ADDRESS;

মত হত্যা

alter system kill session 'SID,SERIAL#';

(উদাহরণস্বরূপ alter system kill session '13,36543',;)

তথ্যসূত্র http://abeytom.blogspot.com/2012/08/finding- and-fixing-ora-00054-resource.html


5
কী উত্তর দরকার তা সহ এই উত্তরটি উত্সাহিত করা উচিত। আমার কাছে থাকা অ্যাকাউন্টটি সহ আমার কাছে রয়েছে CONNECTএবং RESOURCEতবে যা প্রয়োজন তা নয় ORA-00942: table or view does not exist। এই থ্রেডটি পড়া প্রত্যেকেরই SYSঅ্যাকাউন্ট থাকবে না ।
vapcguy

আপনি যদি নির্বাচিত কলাম 'এস.এস.এস.এস.এস.আর' যুক্ত করেন তবে আপনিও জানতে পারবেন কোন ব্যবহারকারী সেই লেনদেনটি চালাচ্ছিলেন এবং সেশনটি হত্যার আগে আপনি ব্যবহারকারীর সাথে চেক করতে চাইলে এটি কার্যকর হবে।
নরসিমহা

যদি সেশনটি স্থগিত করা হয়, তবে alter system kill session '13,36543'সময়সীমা শেষ হবে এবং অধিবেশনটি মারা যাবে না। সেক্ষেত্রে
অ্যান্ড্রু স্পেন্সার

ব্যবহার করে একটি টেবিলে তথ্য ঢোকাতে যদিও একটি connection objectমধ্যে pythonআমি কিছু ত্রুটি আছে। তারপরে python scriptসঠিকভাবে বন্ধ না করে বন্ধ হয়ে যায় connection object। যখন আমি অন্য সেশনে টেবিলটি ফেলে দেওয়ার চেষ্টা করি তখন আমি "LOCKWAIT" ত্রুটি পাচ্ছি। আমি যখন চেষ্টা kill sessionকরি তখন পর্যাপ্ত প্রাইভেলিজ নেই। এ থেকে মুক্তি পেতে আর কী করা যায়?
sjd

17

এই সমস্যার চারপাশে খুব সহজ কাজ রয়েছে।

যদি আপনি আপনার সেশনে একটি 10046 ট্রেস চালান (গুগল এটি ... ব্যাখ্যা করার জন্য খুব বেশি)। আপনি দেখতে পাবেন যে কোনও ডিডিএল অপারেশন করার আগে ওরাকল নিম্নলিখিত কাজগুলি করে:

লক ট্যাবলেট 'ট্যাবলেট'-এর অপেক্ষা নেই

সুতরাং অন্য সেশনে যদি খোলা লেনদেন হয় তবে আপনি একটি ত্রুটি পান। ঠিক আছে ... ড্রাম রোল দয়া করে। ডিডিএল এর আগে আপনার নিজের লক ইস্যু করুন এবং 'না অপেক্ষা' ছেড়ে দিন।

বিশেষ দ্রষ্টব্য:

যদি আপনি বিভাজন / পার্টিশনগুলি বাদ দিচ্ছেন তবে ওরাকল কেবলমাত্র পার্টিশনটিকে লক করে রাখবে। - সুতরাং আপনি কেবল পার্টিশন সাব-পার্টিশনটি লক করতে পারেন।

সুতরাং ... নিম্নলিখিত পদক্ষেপগুলি সমস্যার সমাধান করে।

  1. তালিকায় 'টেবিলে নাম' লক করুন; - আপনি 'অপেক্ষা' করবেন (বিকাশকারীরা এই ঝুলন্ত কল করে)। খোলা লেনদেন সহ অধিবেশন অবধি কমিট করে। এটি একটি সারি। সুতরাং আপনার আগে বেশ কয়েকটি সেশন হতে পারে। তবে আপনি ত্রুটিযুক্ত হবে না।
  2. ডিডিএল কার্যকর করুন। আপনার ডিডিএল তখন NO WAIT দিয়ে একটি লক চালাবে run তবে আপনার সেশনটি লকটি অর্জন করেছে qu সুতরাং আপনি ভাল।
  3. ডিডিএল স্বয়ংক্রিয়ভাবে কমিট করে। এটি লকগুলি মুক্ত করে।

টেবিলটি লক থাকাকালীন ডিএমএলের বিবৃতিগুলি 'অপেক্ষা' করবে বা বিকাশকারীরা এটিকে 'হ্যাঙ্গ' বলবে।

আমি এই কোডটিতে এটি ব্যবহার করি যা একটি কাজ থেকে পার্টিশনগুলি ফেলে দেয়। এটা ঠিক কাজ করে। এটি এমন একটি ডাটাবেসে যা ক্রমাগত কয়েকশো সন্নিবেশ / সেকেন্ডের হারে সন্নিবেশ করানো হয়। কোনও ত্রুটি নেই।

যদি আপনি ভাবছেন। 11 জি-তে এটি করা। আমি অতীতেও 10 জি আগে এটি করেছি।


3
ঠিক আছে, এটা ভুল। 11 গ্রামে, সেট_ডিডিএল_টাইমআউট ব্যবহার করুন, এটি কেবল 11 জি তে উপলব্ধ। ওরাকল ডিডিএল করার আগে একটি প্রতিশ্রুতি দেয়, তাই এটি লকটি প্রকাশ করে। 11 গ্রামে, আপনি আপনার ডিডিএল অপেক্ষা করতে পারেন। আমি এখন এটি করছি। ঠিকভাবে কাজ করে.
বব

3
11 গ্রামে আপনার লক টেবিলের নামটি এক্সক্লুসিভ মোডে ব্যবহার করা উচিত;
কামিল রোমান

1
আপনি যদি ব্যাচের চাকরি থেকে ORA-00054 পেয়ে থাকেন তবে এটি সত্যই কার্যকর, তবে আমার সন্দেহ হয় যে বেশিরভাগ লোক এখানে অবতরণ করছে (ওপি এবং আমার সহ) কিছুটা উন্নয়ন করছে এবং একই সারণীতে সেশন খোলা রেখে দিয়েছে তারা ' ড্রপ এবং পুনরায় তৈরি করার চেষ্টা করছি। KILL SESSIONএই লোকদের জন্য সঠিক উত্তর।
অ্যান্ড্রু স্পেন্সার

@ Bob 11g এবং পুরানো উপায় উভয়ের জন্য উদাহরণ কোডটি দুর্দান্ত হবে। সিনট্যাক্স কী set_ddl_timeoutএবং এটি কী হওয়া উচিত?
vapcguy

1
এই 11g উপর আমার জন্য কাজ @vapcguy: ALTER SYSTEM SET ddl_lock_timeout=20;দেখতে ডক্স
rshdev

13

রিসোর্সটি ব্যস্ত থাকাকালীন এই ত্রুটি ঘটে। আপনার প্রশ্নের কোনও রেফারেন্সিয়াল বাধা আছে কিনা তা পরীক্ষা করে দেখুন। অথবা এমনকি আপনি যে সারণীগুলি ক্যোয়ারীতে উল্লেখ করেছেন তা ব্যস্ত থাকতে পারে। তারা অন্য কোনও কাজের সাথে জড়িত থাকতে পারে যা অবশ্যই নীচের প্রশ্নের ফলাফলগুলিতে তালিকাভুক্ত হবে:

SELECT * FROM V$SESSION WHERE STATUS = 'ACTIVE'

এসআইডি খুঁজুন,

SELECT * FROM V$OPEN_CURSOR WHERE SID = --the id

1
প্রত্যেকেরই এই মতামতগুলিতে অ্যাক্সেস থাকবে না। আমি পেতে ORA-00942: table or view does not exist
ভ্যাপকুই

এই জাতীয় ক্ষেত্রে, ডিবি অ্যাডমিনরা সেই তথ্য সরবরাহের জন্য দায়বদ্ধ।
অরুনচুনাইভেনডন

সর্বদা না। আমাকে কোডটি বের করার চেষ্টা করতে হয়েছিল এবং এর চারপাশে কাজ করতে হয়েছিল এবং আমার বা আমার পরিষেবা অ্যাকাউন্টের এই অধিকারগুলি থাকবে না।
ভ্যাপকুই

7

এটি তখন ঘটে যখন কোনও টেবিল পরিবর্তনের জন্য ব্যবহৃত একটি ব্যতীত অন্য একটি সেশনে কোনও ডিএমএল (আপডেট / ডিলিট / সন্নিবেশ করানো) এর কারণে সম্ভবত একটি লক থাকে। আপনি যদি একটি নতুন সিস্টেম বিকাশ করে থাকেন তবে সম্ভবত আপনি বা আপনার দলের কেউ আপডেট স্টেটমেন্ট জারি করেছেন এবং আপনি কোনও ফলাফল ছাড়াই সেশনটি মেরে ফেলতে পারেন। বা আপনি অধিবেশনটি খোলা আছে তা জানার পরে আপনি এই অধিবেশন থেকে প্রতিশ্রুতিবদ্ধ হতে পারেন।

আপনার যদি কোনও এসকিউএল অ্যাডমিন সিস্টেমে অ্যাক্সেস থাকে তবে আপত্তিজনক সেশনটি খুঁজে পেতে এটি ব্যবহার করুন। এবং সম্ভবত এটি হত্যা।

আপনি ভি $ সেশন এবং ভি $ লক এবং অন্যান্য ব্যবহার করতে পারেন তবে আমি আপনাকে পরামর্শ দিচ্ছি যে কীভাবে সেই অধিবেশনটি সন্ধান করতে হবে এবং তারপরে কীভাবে এটি হত্যা করা যায়।

একটি উত্পাদন ব্যবস্থায়, এটি সত্যই নির্ভর করে। ওরাকল 10 গ্রাম বা তার বেশি বয়সীদের জন্য, আপনি নির্বাহ করতে পারেন

LOCK TABLE mytable in exclusive mode;
alter table mytable modify mycolumn varchar2(5);

একটি পৃথক সেশনে তবে এটি খুব বেশি সময় নেয় ক্ষেত্রে নিম্নলিখিতটি প্রস্তুত রাখুন।

alter system kill session '....

এটি আপনার কী সিস্টেমে রয়েছে তার উপর নির্ভর করে, পুরানো সিস্টেমগুলি প্রতিবার প্রতিশ্রুতিবদ্ধ না হওয়ার সম্ভাবনা বেশি। দীর্ঘস্থায়ী লক থাকতে পারে বলে এটি একটি সমস্যা। সুতরাং আপনার লকটি কোনও নতুন লক আটকাতে পারে এবং এমন একটি লকের জন্য অপেক্ষা করতে পারে যে কখন ছেড়ে যাবে কখন কে জানে। এজন্য আপনার অন্যান্য বিবৃতি প্রস্তুত রয়েছে। অথবা আপনি এখানে PLSQL স্ক্রিপ্টগুলি সন্ধান করতে পারেন যা স্বয়ংক্রিয়ভাবে অনুরূপ কাজ করে।

সংস্করণ 11 গ্রামে একটি নতুন পরিবেশের পরিবর্তনশীল রয়েছে যা একটি অপেক্ষা করার সময় সেট করে। আমি মনে করি এটি সম্ভবত আমি বর্ণিত মতো কিছু কাজ করে। মনে রাখবেন যে লকিংয়ের সমস্যাগুলি চলে না।

ALTER SYSTEM SET ddl_lock_timeout=20;
alter table mytable modify mycolumn varchar2(5);

অবশেষে সিস্টেমে এই ধরণের রক্ষণাবেক্ষণের জন্য খুব কম ব্যবহারকারী না পাওয়া পর্যন্ত অপেক্ষা করা ভাল।


এবং আপনি alter system kill session '....যদি পরিচালনা দর্শনগুলিতে অ্যাক্সেস না পান তবে আপনি কীভাবে সেশনটিকে হত্যা করবেন তা খুঁজে বের করবেন?
vapcguy

যে আমি জানি না।
আর্টুরো হার্নান্দেজ

7

আমার ক্ষেত্রে, আমি নিশ্চিত ছিলাম যে এটি আমার নিজস্ব একটি সেশন যা ব্লক করছে। সুতরাং, নিম্নলিখিতগুলি করা নিরাপদ ছিল:

  • আমি এর সাথে আপত্তিজনক সেশনটি পেয়েছি:

    SELECT * FROM V$SESSION WHERE OSUSER='my_local_username';

    সেশনটি নিষ্ক্রিয় ছিল , তবে এটি এখনও কোনওভাবে লকটি ধরেছিল। দ্রষ্টব্য, আপনার ক্ষেত্রে আপনার অন্য কোনও WHERE শর্ত ব্যবহার করার প্রয়োজন হতে পারে (যেমন চেষ্টা করুন USERNAMEবা MACHINEক্ষেত্রগুলি)।

  • সেশনটি মেরে IDএবং SERIAL#উপরে অর্জিত:

    alter system kill session '<id>, <serial#>';

@ থের্মজ দ্বারা সম্পাদিত: পূর্ববর্তী ওপেন-সেশন কোয়ের কোনওটি যদি এটিকে চেষ্টা করে না। এই কোয়েরিটি সেশন মারার সময় সিনট্যাক্স ত্রুটিগুলি এড়াতে আপনাকে সহায়তা করতে পারে:

  • SELECT 'ALTER SYSTEM KILL SESSION '''||SID||','||SERIAL#||''' immediate;' FROM V$SESSION WHERE OSUSER='my_local_username_on_OS'

পূর্ববর্তী ওপেন-সেশনের কোয়েরিতে যদি কেউ কাজ না করে তবে এটি ব্যবহার করে দেখুন।
থার্মজ

5

সেশন অধিবেশন প্রক্রিয়া পরীক্ষা করে দেখুন এবং এটি হত্যা। এটি স্বাভাবিক অবস্থায় ফিরে আসে।

এসকিউএল এর নীচে আপনার প্রক্রিয়াটি খুঁজে পাবেন

SELECT s.inst_id,
   s.sid,
   s.serial#,
   p.spid,
   s.username,
   s.program FROM   gv$session s
   JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id;

তারপরে এটি মেরে ফেলুন

ALTER SYSTEM KILL SESSION 'sid,serial#'

অথবা

কিছু উদাহরণ যা আমি অনলাইনে পেয়েছি তার উদাহরণ আইডির পাশাপাশি সিস্টেম কিল সেশন '130,620, @ 1' পরিবর্তন করতে হবে বলে মনে হয়;


4

আপনার সমস্যা দেখে মনে হচ্ছে আপনি ডিএমএল এবং ডিডিএল ক্রিয়াকলাপ মেশাচ্ছেন। এই URL টি দেখুন যা এই সমস্যাটি ব্যাখ্যা করে:

http://www.orafaq.com/forum/t/54714/2/



3

আমি কেবল একটি টেবিল তৈরি করার সময় এই ত্রুটিটি পরিচালনা করতে সক্ষম হয়েছি! কোনও টেবিলটিতে স্পষ্টতই কোন বিতর্ক সমস্যা ছিল যা এখনও বিদ্যমান ছিল না। CREATE TABLEবক্তব্য অন্তর্ভুক্ত CONSTRAINT fk_name FOREIGN KEYএকটি সুন্দরভাবে-জনবহুল টেবিল উল্লেখ দফা। আমি বাধ্য ছিলাম:

  • তৈরি টেবিল বিবৃতি থেকে বিদেশী কী ধারাটি সরান
  • এফকে কলামে একটি আইএনডেক্স তৈরি করুন
  • এফকে তৈরি করুন

আমি ঠিক একই সমস্যা। আমি ddl স্টেটমেন্ট থেকে fk সংজ্ঞা সরিয়ে দেওয়ার পরে আমি টেবিলটি তৈরি করতে সক্ষম হয়েছি, কিন্তু কলামে সূচি তৈরি করার পরেও আমি এটি যুক্ত করতে পারছি না।
ভাদ্পিপ

আমি এটি সমাধান করতে সক্ষম হয়েছিল। প্রথমে, আমি একটি novalidateক্লজ যুক্ত করেছি alter table add constraint। এটি কোনওভাবে এটি চালাতে দেয় তবে এটি লক করে দেয়। তারপরে আমি কোন অধিবেশনটি লক করে তা সন্ধানের জন্য সেশন তালার দিকে তাকালাম। এবং তারপরে আমি সেই অধিবেশনটিকে হত্যা করেছিলাম।
ভাদিপ

3

আমার যখন 2 টি স্ক্রিপ্ট চলছিল তখন আমার এই ত্রুটিটি ঘটেছিল। আমার ছিল:

  • একটি এসকিউএল * প্লাস সেশনটি স্কিমা ব্যবহারকারী অ্যাকাউন্ট ব্যবহার করে সরাসরি সংযুক্ত হয়েছে (অ্যাকাউন্ট # 1)
  • অন্য একটি এসকিউএল * প্লাস সেশনটি আলাদা স্কিমা ব্যবহারকারী অ্যাকাউন্ট (অ্যাকাউন্ট # 2) ব্যবহার করে সংযুক্ত হয়েছে, তবে প্রথম অ্যাকাউন্ট হিসাবে একটি ডেটাবেস লিঙ্ক জুড়ে সংযুক্ত হচ্ছে

আমি একটি টেবিল ড্রপ চালিয়েছি, তারপরে অ্যাকাউন্ট 1 হিসাবে টেবিল তৈরি। আমি অ্যাকাউন্ট # 2 এর সেশনে একটি টেবিল আপডেট চালিয়েছি। পরিবর্তন করেনি। অ্যাকাউন্ট # 1 হিসাবে টেবিল ড্রপ / তৈরি স্ক্রিপ্ট পুনরায় চালিত। drop table xকমান্ডটিতে ত্রুটি হয়েছে ।

আমি COMMIT;অ্যাকাউন্ট 2 # এর এসকিউএল * প্লাস সেশনে চালিয়ে এটি সমাধান করেছি ।


আপনার যদি কোনও টেবিল ফেলে দেওয়ার অনুমতি না থাকে তবে আপনি কী করবেন? খারাপ উত্তর
শকির হুসেন

1
শকির, এটি আমার যখন ঘটেছিল তখন আমি যা করছিলাম তার একটি উদাহরণ - সমস্যাটির সমাধান নয় - যা আমার একেবারে শেষ লাইনে ছিল - চলমান এ COMMIT;। এমনকি আপনি যদি কোনও টেবিলও ফেলে রাখতে না পারেন তবে আপনাকে প্রথমে এই সমস্যাটিতে ফেলতে পারে এমন কোনও কিছু পরিবর্তনের অনুমতি নেই।
vapcguy

-2

আমিও একই ইস্যুর মুখোমুখি। এই ত্রুটিটি সমাধান করার জন্য প্রোগ্রামারকে কিছুই করতে হবে না। আমি আমার ওরাকল ডিবিএ দলকে জানিয়েছি। তারা সেশনটি মেরেছিল এবং কবজির মতো কাজ করেছে।


1
কাউকে এখনও কিছু করতে হবে। ডিবিএ টিম কী করতে হবে তা না জানলে এবং একটি সেশনটি কীভাবে হত্যা করা যায়? খারাপ উত্তর।
vapcguy

1
ডিবিএ যদি সেশন হত্যা করতে না জানে তবে তিনি কাজ করতে অনুপযুক্ত
শকির হুসেন

এটির ভুল এড়াতে প্রত্যেকের জন্য সময়ে সময়ে সিনট্যাক্সের একটি রিফ্রেশার প্রয়োজন।
vapcguy

-5

শশির লিঙ্কটি দিয়ে দেওয়া সমাধানটি সেরা ... ডিবিএ বা অন্য কারও সাথে যোগাযোগ করার প্রয়োজন নেই

একটি ব্যাকআপ করুন

create table xxxx_backup as select * from xxxx;

সমস্ত সারি মুছুন

delete from xxxx;
commit;

আপনার ব্যাকআপ sertোকান।

insert into xxxx (select * from xxxx_backup);
commit;

10
মোছা / কাটা কাটা পরিবর্তনযোগ্য নয়। বিপুল সংখ্যক মুছে ফেলা পারফর্মেন্সের বিশাল প্রভাব রয়েছে। এটা সত্যিই খারাপ।
বব

আমি ভেবেছিলাম এটি একটি সাধারণ প্যাটার্ন।
শন জিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.