همانطور که می دانید، ایجاد hard link برای یک فایل در محیط لینوکس، دستیابی به آن فایل را از چندین مسیر مختلف ممکن می سازد. مثال زیر را ببینید:
مثال: myfile1 با شماره inodeای برابر با 4475276، در مسیر u01/ قرار دارد:
[root@ol7 u01]# cd /u01/
[root@ol7 u01]# ls -li myfile1
4475276 -rw-r–r–. 1 root root 15 Oct 3 10:25 myfile1
با دستور زیر، لینک سختی را برای myfile1 در مسیر u02/ ایجادمی کنیم(ایجاد لینک سخت در پارتیشنهای مختلف امکان پذیر نمی باشد.):
[root@ol7 ~]# ln /u01/myfile1 /u02/myfile1
[root@ol7 ~]# ls -li /u02/myfile1
4475276 -rw-r–r–. 2 root root 15 Oct 3 10:25 /u02/myfile1
برای ازاد کردن فضای فایل سیستم، باید همه این لینکهای سخت را از بین برد و با حذف یکی از این دو فایل، inode و محتویات فایل کماکان باقی خواهند ماند:
[root@ol7 ~]# rm -rf /u01/myfile1
[root@ol7 ~]# ls -li /u02/myfile1
4475276 -rw-r–r–. 1 root root 15 Oct 3 10:25 /u02/myfile1
این مسئله در محیط اوراکل و برای دیتافایلها هم صادق خواهد بود. مثال زیر ببینید:
مثال:در ابتدا دیتافایلی را ایجاد کرده و سپس برای این دیتافایل، hard linkای را ایجاد می کنیم:
SQL> create tablespace tbs01 datafile ‘/u01/datafile01.dbf’ size 100k;
Tablespace created.
[oracle@ol7 ~]$ ln /u01/datafile01.dbf /u02/datafile01.dbf
در ادامه با انداختن بانک اطلاعاتی، دیتافایل را حذف می کنیم:
[oracle@ol7 ~]$ sqlplus “/as sysdba”
SQL> shut abort
ORACLE instance shut down.
[oracle@ol7 ~]$ rm -rf /u01/datafile01.dbf
با استارت مجدد instance، دیتابیس با خطا متوقف خواهد شد:
[oracle@ol7 ~]$ sqlplus “/as sysdba”
SQL*Plus: Release 12.2.0.1.0 Production on Wed Oct 3 10:54:58 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 8622624 bytes
Variable Size 306187744 bytes
Database Buffers 201326592 bytes
Redo Buffers 8151040 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 5 – see DBWR trace file
ORA-01110: data file 5: ‘/u01/datafile01.dbf’
با تغییر نام دیتافایل به لینک دوم فایل، دیتابیس در حالت open قرار خواهد گرفت:
SQL> alter database rename file ‘/u01/datafile01.dbf’ to ‘/u02/datafile01.dbf’;
Database altered.
SQL> alter database open;
Database altered.
جناب مهندس یوسف زاده ضمن عرض تشکر از زحمات شما، خواهش میکنم در خصوص خطای ora01110 در صورتی که تعداد دیتا فایلها بیش از ۵۰ تا باشد هم توضیح دهید . چون rename کردن تک تک این تعداد دیتا فایل زمان بر است . سپاسگزارم.