همانطور که می دانید، ایجاد 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.