در هر دو نگارش ۱۲.۱ و ۱۲.۲ پایگاه داده اوراکل این امکان وجود دارد که برای PDB جدید که از روی Seed ایجاد میشود، یک Tablespace جدید ساخته و آن را به عنوان Default Tablespace تنظیم کرد.
در این مستند به بررسی تمایزهای بند Default Tablespace در نگارش ۱۲.۲ و ۱۲.۱ پایگاه داده اوراکل در معماری PDB پرداخته میشود. در این مستند به هر دو معماری OMF و Non-OMF پرداخته میشود. برای پشتیبانی از معماری Non-OMF از بندهای FILE_NAME_CONVERT وPDB_FILE_NAME_CONVERT استفاده میشود.
نگارش ۱۲.۱
با استفاده از دستور زیر یک پایگاه داده اوراکل با نام pdb2 ایجاد میشود.
SQL> CONN / AS SYSDBA
— Oracle Managed Files (OMF) syntax.
SQL> CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdb_adm IDENTIFIED BY Password1DEFAULT TABLESPACE users DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M;
• ابتدا از طریق کاربری SYS به پایگاه داده اوراکل Seed متصل میشود.
• نام پایگاه داده اوراکل pdb2 تنظیم میشود.
• کاربری مدیریتی در سطح پایگاه داده اوراکل pdb با نام pdb_adm و رمز عبور Password1 تنظیم میشود.
• Tablespace پیشفرض این پایگاهداده users نامیده شده و یک فایل به حجم ۱MB برای آن ایجاد میشود. رشد این فایل در هر افزایش به اندازه ۱MB میباشد.
SQL> CONN / AS SYSDBA
— Non-OMF syntax.
SQL> CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdb_adm IDENTIFIED BY Password1
FILE_NAME_CONVERT=(‘/u01/app/oracle/oradata/cdb1/pdbseed/’,’/u01/app/oracle/oradata/cdb1/pdb2/’)
DEFAULT TABLESPACE users DATAFILE ‘/u01/app/oracle/oradata/cdb1/pdb2/users01.dbf’ SIZE 1M AUTOEXTEND ON NEXT 1M;
SQL> ALTER PLUGGABLE DATABASE pdb2 OPEN;
در صورتی که از معماری Non-OMF برای نامگذاری فایلهای داده استفاده شود، از دستور بالا برای ایجاد PDB جدید استفاده خواهد شد. در انتها نیز pdb2 در وضعیت Open قرار داده میشود. اکنون با استفاده از دستور زیر میتوان وضعیت Tablespaces را بررسی کرد.
SQL> CONN / AS SYSDBA
SQL> ALTER SESSION SET CONTAINER = pdb2;
SQL> SELECT tablespace_name
FROM dba_tablespaces
ORDER BY 1;
TABLESPACE_NAME
—————
SYSAUX
SYSTEM
TEMP
USERS
SQL> SELECT property_value
FROM database_properties
WHERE property_name = ‘DEFAULT_PERMANENT_TABLESPACE’;
PROPERTY_VALUE
————–
USERS
در این دستور ابتدا به پایگاه داده اوراکل Seed و سپس به pdb2 متصل میشود. با استفاده از جداول dba_tablespaces و database_properties وضعیت کلیه Tablespaces و همچنین Tablespace پیشفرض پایگاهداده بررسی میشود.
در صورتی که PDB از روی یک User Defined PDB ساخته شود، امکان استفاده از بند Default Tablespace در زمان ایجاد PDB میسر نمیباشد. به خطای زیر توجه شود.
SQL> CONN / AS SYSDBA
SQL> CREATE PLUGGABLE DATABASE pdb3 FROM pdb2
DEFAULT TABLESPACE users2 DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M;
DEFAULT TABLESPACE users2 DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M
*
ERROR at line 2:
ORA-00922: missing or invalid option
SQL> CREATE PLUGGABLE DATABASE pdb3 FROM pdb2
DEFAULT TABLESPACE users;
DEFAULT TABLESPACE users
*
ERROR at line 2:
ORA-00922: missing or invalid option
۱۲.۲
در نگارش ۱۲.۲ فارق از منبعی که PDB از روی آن ساخته میشود، میتوان از بند Default Tablespace استفاده کرد. در صورتی کهپایگاه داده اوراکل از روی Seed ساخته شود، همانند نگارش ۱۲.۱ یک Tablespace جدید ایجاد و به عنوان Default Tablespace معرفی میشود.
SQL> CONN / AS SYSDBA
SQL> CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdb_adm IDENTIFIED BY Password1
DEFAULT TABLESPACE users DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M;
SQL> ALTER PLUGGABLE DATABASE pdb2 OPEN;
اگر منبع یک پایگاهداده User Defined PDB باشد، الزاماً یکی از Tablespaces موجود باید به عنوان Default Tablespace معرفی گردد. با استفاده از دستور زیر ابتدا یک Tablespace جدید ایجاد میگردد.
SQL> CONN / AS SYSDBA
SQL> ALTER SESSION SET CONTAINER = pdb2;
SQL> CREATE TABLESPACE test_ts DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M;
اکنون از روی پایگاه داده اوراکل pdb2 یک PDB جدید ایجاد میشود. ضمنا test_ts به عنوان Default Tablespace معرفی میگردد.
SQL> CONN / AS SYSDBA
SQL> CREATE PLUGGABLE DATABASE pdb3 FROM pdb2 DEFAULT TABLESPACE test_ts;
SQL> ALTER PLUGGABLE DATABASE pdb3 OPEN;
با استفاده از دستور زیر اطلاعات بیشتر در مورد Tablespaces موجود و همچنین Default Tablespaces نمایش داده میشود.
SQL> CONN / AS SYSDBA
SQL> ALTER SESSION SET CONTAINER = pdb3;
SQL> SELECT tablespace_name
FROM dba_tablespaces
ORDER BY 1;
TABLESPACE_NAME
——————————
SYSAUX
SYSTEM
TEMP
TEST_TS
UNDOTBS1
USERS
SQL> SELECT property_value
FROM database_properties
WHERE property_name = ‘DEFAULT_PERMANENT_TABLESPACE’;
PROPERTY_VALUE
————–
TEST_TS
در این نگارش نیز نمیتوان حین ایجاد User Defined PDB از Tablespace جدید برای Default Tablespace استفاده کرد.
SQL> CONN / AS SYSDBA
— Clean up.
SQL> ALTER PLUGGABLE DATABASE pdb3 CLOSE;
SQL> DROP PLUGGABLE DATABASE pdb3 INCLUDING DATAFILES;
SQL> CREATE PLUGGABLE DATABASE pdb3 FROM pdb2
DEFAULT TABLESPACE another_ts DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M;
DEFAULT TABLESPACE another_ts DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M
*
ERROR at line 2:
ORA-00922: missing or invalid option