همانطور که می دانید، متغیر محیطی ORACLE_SID، نام instance اوراکل را مشخص می کند:
[oracle@Primary ~]$ echo $ORACLE_SID
sid
SQL> select INSTANCE_NAME from v$instance;
INSTANCE_NAME
—————-
sid
در این متن نکاتی را در مورد حداکثر طول کاراکتر ORACLE_SID و نام instance ارائه خواهیم کرد.
در زمان کار با ابزار netmgr، امکان استفاده از sid با طول بیشتر از 8 کاراکتر وجود ندارد و در صورت تنظیم با خطای زیر مواجه خواهیم شد:
این در صورتی است که در زمان ایجاد دیتابیس، مقدار sid نمی تواند بیشتر 12 کاراکتر باشد:
نکته مهمتر مسئله آنکه حداکثر طول ستون 16 بایت در نظر گرفته شده است:
SQL> desc v$instance
Name Null? Type
—————————————– ——– —————————-
INSTANCE_NAME VARCHAR2(16)
در این شرایط، مقدار ORACLE_SID را به بیشتر از 16 کارکتر تنظیم می کنید تا رفتار دیتابیس را در این حالت بررسی کنیم:
export ORACLE_SID=sid0123456789sid
SQL> startup pfile=’/home/oracle/p.ora’;
ORACLE instance started.
Total System Global Area 2701128640 bytes
Fixed Size 9139136 bytes
Variable Size 620756992 bytes
Database Buffers 2063597568 bytes
Redo Buffers 7634944 bytes
Database mounted.
Database opened.
SQL> select INSTANCE_NAME from v$instance;
INSTANCE_NAME
—————-
sid0123456789sid
همانطور که مشاهده می کنید، با تنظیم نام instance به 16 کارکتر هم instance استارت شده است.
ستون instance از ویوی v$thread هم نام instance را نمایش می دهد:
SQL> select INSTANCE from v$thread;
INSTANCE
————————–
sid0123456789sid
نوع داده این ستون (VARCHAR2(80 می باشد:
SQL> desc v$thread;
Name Null? Type
——————— ——– —————————-
INSTANCE VARCHAR2(80)
با توجه به این مسئله، این بار نام instance را به تعداد کاراکترهای بیشتری تنظیم می کنیم(40 کاراکتر):
export ORACLE_SID=sid0123456789sidsid0123456789sid12345678
SQL> startup pfile=’/home/oracle/p.ora’;
ORA-00600: internal error code, arguments: [OSDEP_INTERNAL], [], [], [], [], [], [], [], [], [], [], []
ORA-27302: failure occurred at: slsid1
ORA-27303: additional information: Unable to get environment variable ORACLE_SID
با این تنظیمات، instance استارت نخواهد شد. با آزمون و خطا، خواهیم دید که نام instance تا 30 کاراکتر را هم می پذیرد:
[oracle@Primary ~]$ export ORACLE_SID=sid0123456789sidsid0123456789s
ORACLE instance started.
Total System Global Area 2701128640 bytes
Fixed Size 9139136 bytes
Variable Size 620756992 bytes
Database Buffers 2063597568 bytes
Redo Buffers 7634944 bytes
Database mounted.
Database opened.
SQL> select INSTANCE from v$thread;
INSTANCE
——————————————————————————–
sid0123456789sidsid0123456789s
با این تنظیمات، نام instance در ویوی v$instance قابل رویت نیست:
SQL> select INSTANCE_NAME from v$instance;
INSTANCE_NAME
—————-
SQL>