الانتقال إلى المحتوى

كيف يمكن عمل أسكيمة مطابقة لأسكيمة أخرى ؟


hanyfreedom

Recommended Posts

احنا علشان نعمل جدول مطابق لجدول اخر فبنعمل كود ذى كده - على سبيل المثال :-

create table employees2 as select*from employees;



طيب لو احنا عاوزيين نعمل ذى الفكرة اللى فاتت بس على أسكيمة مش جدول ...... يعنى يبقى عندنا أسكيمة hr2 مطابقة تماماً لأسكيمة hr و بها نفس ال objects اللى موجوده فى الاصلية - اللى هى ال hr - فدى تبقى أيه كودها ؟

و شكراً

رابط هذا التعليق
شارك

rem -----------------------------------------------------------------------
rem Filename:   cr8like.sql
rem Purpose:	Script to create a new user (with privs) like an existing
rem			 database user. User data will not be copied.
rem Date:	   02-Nov-1998
rem Author:	 Frank Naude, Oracle FAQ
rem Updated:	Konstantin Krivosheyev - 7 Dec 2002
rem Updated:	Frank Naude - 18 Dec 2003, 2 Dec 2004
rem -----------------------------------------------------------------------

set pages 0 feed off veri off lines 500

accept oldname prompt "Enter user to model new user to: "
accept newname prompt "Enter new user name: "
-- accept psw	 prompt "Enter new user's password: "

-- Create user...
select 'create user &&newname identified by values '''||password||''''||
-- select 'create user &&newname identified by &psw'||
   ' default tablespace '||default_tablespace||
   ' temporary tablespace '||temporary_tablespace||' profile '||
   profile||';'
from   sys.dba_users 
where  username = upper('&&oldname');

-- Grant Roles...
select 'grant '||granted_role||' to &&newname'||
   decode(ADMIN_OPTION, 'YES', ' WITH ADMIN OPTION')||';'
from   sys.dba_role_privs
where  grantee = upper('&&oldname');  

-- Grant System Privs...
select 'grant '||privilege||' to &&newname'||
   decode(ADMIN_OPTION, 'YES', ' WITH ADMIN OPTION')||';'
from   sys.dba_sys_privs
where  grantee = upper('&&oldname');  

-- Grant Table Privs...
select 'grant '||privilege||' on '||owner||'.'||table_name||' to &&newname;'
from   sys.dba_tab_privs
where  grantee = upper('&&oldname');  

-- Grant Column Privs...
select 'grant '||privilege||' on '||owner||'.'||table_name||
   '('||column_name||') to &&newname;'
from   sys.dba_col_privs
where  grantee = upper('&&oldname');  

-- Tablespace Quotas...
select 'alter user '||username||' quota '||
   decode(max_bytes, -1, 'UNLIMITED', max_bytes)||
   ' on '||tablespace_name||';'
from   sys.dba_ts_quotas
where  username = upper('&&oldname'); 

-- Set Default Role...
set serveroutput on
declare
 defroles varchar2(4000);
begin
 for c1 in (select * from sys.dba_role_privs 
		  where grantee = upper('&&oldname')
			and default_role = 'YES'
 ) loop
  if length(defroles) > 0 then
	 defroles := defroles||','||c1.granted_role;
  else
	 defroles := defroles||c1.granted_role;
  end if;
 end loop;
 dbms_output.put_line('alter user &&newname default role '||defroles||';');
end;
/

 

رابط هذا التعليق
شارك

أخى العزيز مودى

أنا مش فاهم انت تقصد ايه بكودك ...... أنا عملت copy و paste لكودك فى اسكيمة ال system و أسكيمة ال hr و بعد كده شوفت كل ال users من خلال :-

select USERNAME,ACCOUNT_STATUS from dba_users;



ولاقيت ان مفيش user مكرر ..... و كل اللى لاحظته الأسكيمة الجديدة اللى اسمها MGMT_VIEW ....... فهل هذه الأسكيمة هى الأسكيمة المنسوخة من الأسكيمة التى قمت بتنفيذ كودك فيها ؟ ..... و أذا كان فما هى الطريقة التى تمكننى من التحكم فى أسم الاسكيمة المنسوخة ؟
فممكن لو سمحت تبقى تكتب توضيح مع الكود اللى كتبته علشان الرؤية عندى توضح أكتر .

و شكراً

رابط هذا التعليق
شارك

ممكن بعد انشاء اليوزر الجديد تعمل export لليوزر القديم وبعد كده تعمل import لها فى اليوزر الجديد
imp user/pass@db file=xxx.dmp fromuser=olduser touser=newuser

رابط هذا التعليق
شارك

أخى العزيز Essamshabeeb
انا لا أعرف كيف أترجم كودك ..... انا قمت بعمل مستخدم جديد بأسم hr2 بكلمة سر pshr2 و أديته الصلاحيات الازمة ..... والأن كيف اكتب كودك واين بالطريقة المناسبة لنقل محتويات المستخدم hr والذى كلمة مروره pshr الى المستخدم الجديد hr2 الذى كلمة مروره pshr2

و شكراً منتظر الرد .......

رابط هذا التعليق
شارك

العزيز هانى من الـ command mode
1- تعمل export للمستخدم القديم hr عن طريق التالى :-
exp system/manager@orcl file=c:\hr.dmp owner=hr log=hr.log
2- تعمل امبورت فى اليوزر الجديد كما يلى
imp system/manager@orcl file=c:\hr.dmp fromuser=hr touser=hr2 log=h2.log
وموفق ان شاء الله

رابط هذا التعليق
شارك

أخى الكريم Essamshabeeb
وبارك الله فيك
الطريقة نجحت بالفعل
شكراً جزيلاً لك .

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية