Oracle Community

The social network for Oracle people

Kamran Agayev

Oracle Database Concepts - Chapter 3 Tablespaces, Datafiles, and Control Files

Merhaba arkadaslar. Bu gunden yeni chapter uzerinde tartismalar yapicaz. Sorulariniza ben cevap vermeye calisicam, cevap veremeyince, Tonguc-dan cevap vermesini rica edicem :)

Lutfen, lutfen bu konuyu dokumentasyondan en azi 2 kez okuyun, iyice anlamaqa calisin, anlamadiqiniz noktalari tartisalim. Chapter-e gecmek icin asaqidaki linki kullanin:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/phys...

P.S. gecen hafta trafik kazasi gecirdim, elim azacik sakat, ama her sey normal. Aslinda bu konu ile ilgili kucucuk bir prezentasyon hazirlamaqi dusunmusdum. Bu hafta icinde bunu yapicam inshallah

Reply to This

Replies to This Discussion

Çok geçmiş olsun Kamran, ben de önceki hafta bir kaza geçirdim, moto kurye çarptı bana da, ilginç bir tesadüf olmuş cidden.

Reply to This

Oylemi? Gecmis olsun. Evet ilginc tesaduf :) Sen nasilsin simdi? Benim kolum kesildi iki yerden. Eli sargili geziyorum, amma keyboard ve mouse-a elim ulasiyo :) ve en esas, parmaklarim da normal :) Araba iki kez firlandi. Allahdan karsidan araba gelmiyordu, belki de bu cumleleri yazamaz olucaktim :)
Arabanin resmini, videosunu ve diger ayrintilari bu gunlerde facebook-da paylasicam. Arabani gorunce "Acaba Kamran nasil kurtuldu burdan?" diyiceksiniz hehe

Reply to This

Geçmiş olsun.

Reply to This

Teshekkurler Zeki

Reply to This

çok büyük geçmiş olsun.

Reply to This

Gerçekten de her iki üstada geçmiş olsun.

Reply to This

Hiç ses çıkmadı madem, ben de bir yorum yapim: OMF ve Bigfie tablespace'lerin hayatı kolaylaştırmak üzere tasarlandıklarını ama özellikle yoğun bir sistemde yeni başlayan bir DBA'in gününü kabusa çevirebileceklerini düşünüyorum :)

Reply to This

Öncelikle geçmiş olsun Kamran,umarım en kısa zamanda 10 parmak hızında yazabilirisin.:-)
Sorum şu şekilde:
Using Multiple Tablespaces bölümümde,büyük sistemler için kullanıcı bilgilerini(procedure,package vs...)
ayrı en az 1 TS de tutmak iyi olur diyor.

1-Yani SYSTEM tablespace ini nasıl multiple yapacağız?
2-Bir tablespace de data dictionary ve DB ye ait bilgileri,diğerinde user data şeklinde nasıl ayarlabiliriz.?

(Biraz araştırdım ama TS si group lama var(o da temp de), sanırım onu kastetmiyordur multiple derken)
Teşekkürler.

Reply to This

Merhaba Ugurcan. Teshekkurler, simdi normalim ve 10 parmak hizim yerinde :)

Oracle, data dictionary malumatlarinin olduqu SYSTEM tablespace-den ilave user data-larinin tutunmasi icin diger tablespace kullanmaqi oneriyor ve bunun avantajlarini belirtiyor

Normalde data dictionary malumatlari SYSTEM tablespace-inde tutuluyor. Database yaratirken ilave olarak USERS tablespace-i de yaratiliyor ki, bu user-larin data-larini tutmak icin kullaniliyor
10g database-den onceki versiyonlarda default olarak SYSTEM tablespace PERMANENT TABLESPACE olurdu. Ama 10g versiyonunda default permanent tablespace USERS tablespace-idir. Bunu goruntulemek icin asaqidaki sql-i calistirmak lazim:
SQL> select property_name, property_value from database_properties
WHERE PROPERTY_NAME='DEFAULT_PERMANENT_TABLESPACE';

PROPERTY_NAME PROPERTY_VALUE
------------------------------ --------------------------------------------------
DEFAULT_PERMANENT_TABLESPACE USERS
SQL>

Eger bizde bu SYSTEM ise, o zaman istediyimiz zaman bunu deyise biliriz. Lutfen asaqidaki ornege bakin:
SQL> CREATE TABLESPACE new_default datafile 'c:\default.dbf' size 100M;

Tablespace created.

SQL> ALTER DATABASE DEFAULT TABLESPACE new_default;

Database altered.


SQL> CREATE USER usr_new IDENTIFIED BY test;

User created.

SQL> grant connect, resource to usr_new;

Grant succeeded.

SQL> conn usr_new/test
Connected.
SQL> create table tbl_usr_table (id number);

Table created.


SQL> disc
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Pr
oduction
With the Partitioning, OLAP and Data Mining options
SQL> conn / as sysdba
Connected.

SQL> select tablespace_name from dba_segments
2 where segment_name='TBL_USR_TABLE';

TABLESPACE_NAME
------------------------------
NEW_DEFAULT

SQL>

SQL> select property_name, property_value from database_properties
WHERE PROPERTY_NAME='DEFAULT_PERMANENT_TABLESPACE';

PROPERTY_NAME PROPERTY_VALUE
------------------------------ --------------------------------------------------
DEFAULT_PERMANENT_TABLESPACE NEW_DEFAULT
SQL>


Gorunduyu gibi user yaratinca direkt olarak default hangi tablespace- kullanicaqi gosterilmese, o zaman otomatik olarak default_permanenet_tablespace kullanilacaktir

Dokumentasyona bakarsak:
If not specified explicitly, the DEFAULT_PERMANENT_TABLESPACE is defaulted to the SYSTEM tablespace. This is not the recommended setting. The default permanent tablespace for the database is used as the permanent tablespace for any non-SYSTEM users who are not explicitly assigned a permanent tablespace. If the database default permanent tablespace is set to a system tablespace, then any user who is not explicitly assigned a tablespace uses the system tablespace. Non-SYSTEM users should not be using a system tablespaces to store data. Doing so may result in performance degradation for the database.

Reply to This

Teşekkürler kamran verdiğin bilgiler için.Bizim kodlar pakettler hala SYSTEM tablespace de tabi.
Ben de sanki başka bir TS e bunları taşıyabilirz gibi yanlış yorumladım.Burda vurgulanmak istenen en azından kullancıların kullanabileceği SYSTEM harici permanent birTS tanımlamakmış,bunu kaçırdım.Sanırım iftar dan sonra okumak gerek dokumani :-))

Reply to This

Ortam yine susmus. Ben OMF konusunda bazi misaller gostermek istedim :

Oracle Managed Files:

Yeni database yaradirken, Oracle Managed Files secimi yapib, OMF tipli database kura biliriz. OMF-in en buyuk avantaji, DBA-nin yeni file yaradirken ve ya var olan fayli silerken faylin ismi ve yeri ile ilgilenmemesidir.
Bunu asaqidaki misaldan gore biliriz:


SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_SYSTEM_5BD2N8SD_.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_UNDOTBS1_5BD2N91G_.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_SYSAUX_5BD2N8TC_.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_USERS_5BD2N92X_.DBF

- Tablespace-in ismini gostermek yeter. Faylin adini belirtmeye ihtiyac yok


SQL> create tablespace test;

Tablespace created.


- Tablespace-e datafile eklemek istersek, faylin adini belirtmeye ihtiyac yok


SQL> alter tablespace test add datafile;

Tablespace altered.


SQL> drop tablespace test including contents and datafiles;

Tablespace dropped.

SQL>



-- Asaqidaki neticeden gorunduyu gibi, fayllarin isimleri otomatik Oracle tarafindan verilmisdir

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_SYSTEM_5BD2N8SD_.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_UNDOTBS1_5BD2N91G_.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_SYSAUX_5BD2N8TC_.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_USERS_5BD2N92X_.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_TEST_5BD484G5_.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_TEST_5BD48J1Y_.DBF

6 rows selected.



- Datafile-in boyutunu gostermek olar, gostermesek otomatik 100M-lik fayl yaraticak

SQL> select name, bytes/1000000 M from v$datafile;

NAME M
--- --------
C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_SYSTEM_5BD2N8SD_.DBF 503.31648

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_UNDOTBS1_5BD2N91G_.DBF 26.2144

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_SYSAUX_5BD2N8TC_.DBF 251.65824

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_USERS_5BD2N92X_.DBF 5.24288

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_TEST_5BD484G5_.DBF 104.8576

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\DATAFILE\O1_MF_TEST_5BD48J1Y_.DBF 104.8576


6 rows selected.

SQL>




-- Redo log fayllarin destination-lairni belirtkmek icin parameter file-inda DB_CREAT_ONLINE_LOG_DEST_n parametresini kullaniyoruz:


SQL> show parameter db_create

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string C:\oracle\product\10.2.0\orada
ta
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string


-- Redo log fayllarinin listesini aliyoruz:


SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ONLINELOG\O1_MF_3_5BD2P27B_.LOG
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_3_5BD2P3DP_.LOG

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ONLINELOG\O1_MF_2_5BD2P0FO_.LOG
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_2_5BD2P19R_.LOG

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ONLINELOG\O1_MF_1_5BD2OYBQ_.LOG
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_1_5BD2OZB8_.LOG



6 rows selected.

--Yeni redo log fayli eklemek cok asan basit. Faylin adini belirtmek lazim deyil


SQL> alter database add logfile;

Database altered.


SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ONLINELOG\O1_MF_3_5BD2P27B_.LOG
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_3_5BD2P3DP_.LOG

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ONLINELOG\O1_MF_2_5BD2P0FO_.LOG
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_2_5BD2P19R_.LOG

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ONLINELOG\O1_MF_1_5BD2OYBQ_.LOG
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_1_5BD2OZB8_.LOG

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\ONLINELOG\O1_MF_4_5BD5DC5C_.LOG
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\ONLINELOG\O1_MF_4_5BD5DDWB_.LOG


8 rows selected.

SQL> alter database drop logfile group 4;

Database altered.



-- Control file-larin da isimleri Oracle tarafindan verilmisdir

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\CONTROLFILE\O1_MF_5BD2OVJ3_.CTL
C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TEST\CONTROLFILE\O1_MF_5BD2OVNJ_.CTL

Reply to This

RSS

© 2010   Created by Eddie Awad on Ning.   Create a Ning Network!

Badges  |  Report an Issue  |  Privacy  |  Terms of Service