۲ مطلب با کلمه‌ی کلیدی «grant sysdba» ثبت شده است

برگشت به یک زمان خاص بدون بک‌آپ - Oracle Flashback

دامیومنت

Setup and Maintenance for Oracle Flashback Database

مقدمه

اوراکل با استفاده از فایلهای redo می‌تواند تا زمانی که فایلهای redo برای داده‌های موردنظر شما دوباره‌نویسی نشده باشند بدون داشتن backup دیتاهای حذف شده شما را برگرداند.

SQL> drop user mahdi cascade;
User dropped.
SQL> create user mahdi identified by qwerty512;
User created.
SQL> grant dba, connect to mahdi;
Grant succeeded.
SQL> connect mahdi
Enter password:
Connected.
SQL> password
Changing password for MAHDI
Old password:
New password:
Retype new password:
Password changed
SQL> create table t1(id number, name varchar2(20));
Table created.
SQL> insert into t1 values(1, 'mohammad');
1 row created.
SQL> insert into t1 values(2, 'mahdi');
1 row created.
SQL> insert into t1 values(3, 'mohsen');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from t1;
ID         NAME
---------- --------------------
1 mohammad
2 mahdi
3 mohsen
SQL> delete from t1 where id=2;
1 row deleted.
SQL> commit;
Commit complete.
SQL> select * from t1;
ID NAME
---------- --------------------
1 mohammad
3 mohsen
SQL> SELECT * FROM t1 AS OF TIMESTAMP TO_TIMESTAMP('2015-05-12 16:55', 'YYYY-MM-
DD HH24:MI:SS');
ID         NAME
---------- --------------------
1 mohammad
3 mohsen
SQL> SELECT * FROM t1 AS OF TIMESTAMP TO_TIMESTAMP('2015-05-12 16:50', 'YYYY-MM-
DD HH24:MI:SS');
no rows selected
SQL> SELECT * FROM t1 AS OF TIMESTAMP TO_TIMESTAMP('2015-05-12 16:51', 'YYYY-MM-
DD HH24:MI:SS');
ID         NAME
---------- --------------------
1 mohammad
2 mahdi
3 mohsen

نکته: توجه داشته باشید اگر بخواهید محدودیتی برای flashback نداشته باشید فقط در صورتی که هارد پرسرعت و فضای کافی ذخیره‌سازی در اختیار دارید می‌توانید دیتابیس را در حالت archive قرار دهید. برای قرار دادن دیتابیس در حالت archive می‌توانید به صورت زیر عمل کنید:

SQL> connect sys as sysdba
Enter password:
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 3240239104 bytes
Fixed Size 2407880 bytes
Variable Size 1879048760 bytes
Database Buffers 1342177280 bytes
Redo Buffers 16605184 bytes
Database mounted.

نکته: در موقع flashback می‌توانید از دستوراتی نظیر where نیز استفاده کنید:

SQL> SELECT * FROM mahdi.t1 AS OF TIMESTAMP TO_TIMESTAMP('2015-05-12 16:51', 'YY
YY-MM-DD HH24:MI:SS') WHERE id>0;
ID         NAME
---------- --------------------
1 mohammad
2 mahdi
3 mohsen

ذخیره اطلاعات

برای ذخیره اطلاعات می‌توانید به شکل زیر عمل کنید:

SQL> create table t3(id number, name varchar2(20));
Table created.
SQL> INSERT INTO T3 SELECT * FROM mahdi.t1 AS OF TIMESTAMP TO_TIMESTAMP('2015-05
-12 16:51', 'YYYY-MM-DD HH24:MI:SS');
3 rows created.
SQL> select * from t3;
ID         NAME
---------- --------------------
1 mohammad
2 mahdi
3 mohsen
SQL> commit
2 ;
Commit complete.

پیداکردن اختلاف بین ۲ جدول

برای اینکار می‌توانید از minus به شکل زیر استفاده کنید:

SQL> select * from t3 minus select * from mahdi.t1;
ID         NAME
---------- --------------------
2 mahdi

نکته: minus یعنی مجموعه اول را از مجموعه دوم کم کن و خروجی را نمایش بده.

س: اگر ساختار جدول تغییر کرد می‌توان با استفاده از flashback اطلاعات را بازیابی کرد؟

ج: خیر، چون فیلدهایی که در اون بازه زمانی در redo موجود بوده‌اند با ساختار مشخصی از جدول ثبت شده‌اند و اگر بخواهیم در یک جدولی که ساختار یکسانی با آنچه ثبت شده است اطلاعات را ذخیره کنیم به مشکل برخواهیم خورد چون اطلاعات دیگر منطبق بر CTL فایل‌ها نیست.

س: وقتی flashback را enable می‌کنیم اجازه میدیم که flashback از redo فایل archive بگیره؟ 

ج: بله

۲۲ ارديبهشت ۹۴ ، ۱۷:۰۳ ۰ نظر
مهدی غفاری

عمومی‌کردن بانک‌اطلاعاتی برای استفاده سایرکاربران

یه وقتایی هست که می‌خوایم دیتابیس رو ببریم رو حالتی که از نظر عموم کاربران در دسترس نیست در واقع دیتابیس تو این حالت open ایت ولی فقط برای ادمین‌های قدرمتند اوراکل open است. اصطلاحاً به این ادمین‌ها ادمین‌های restrictED گفته می‌شود.(یعنی ادمین‌هایی که می‌خوان با دسترسی مشخص به دیتابیس وصل بشوند)

با زدن دستور زیر دیتابیس ما به حالت restrict می‌رود:حالت یواشکی  (روی کاربران جاری اثر ندارد و هیچ کس به جز خود شما و کاربر SYS دسترسی به دیتابیس را ندارد)

alter system enable restricted session;

اگر خواستیم از این حالت خارج بشیم به شکل زیر عمل می‌کنیم:

alter system disable restricted session;

س: چه کاربرانی می‌توانند تو مد restric به دیتابیس وصل بشوند؟

ج: فقط کاربرانی که role زیر را داشته باشند می‌توانند به دیتابیس وصل شوند:

grant sysdba to [USER];

نکته: role کاربر system به صورت پیش‌فرض dba و role کاربر sys به صورت پیش‌فرض sysdba است:

system = dba
sys = sysdba

بردن به حالت یواشکلی (روی کاربران جاری اثر ندارد و فقط مدیران(role dba) دسترسی دارند):

alter system quiesce restricted;

خارج کردن از این حالت:

alter system unquiesce;
۱۲ ارديبهشت ۹۴ ، ۱۱:۵۲ ۰ نظر
مهدی غفاری