نکاتی در مورد حداکثر طول کاراکتر ORACLE_SID

همانطور که می دانید، متغیر محیطی 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>

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.