Anda di halaman 1dari 24

Harder, Better, Faster, Stronger

 About ZyK

 Resources

 To live a full life

 Page views
o 138,642 hits

 Calendar
Tháng Ba 2009
T2 T3 T4 T5 T6 T7 CN
« Tháng 10   Tháng 4 »
  1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31  
 Catagories
                            

 ZyK News
o Lịch trình chuyến đi Ủng Hộ Miền Trung

o Duyên phận đấy nhé!!!

o Hướng về miền Trung bão lũ…

o Cánh buồm nâu & bờ cát trắng

o Gửi em một góc mùa thu

o Nắm tay vs Ái ân

o Bức thư tình kake ^ ^


o Tuyển 02 Chuyên viên Quản trị CSDL Oracle

 Flickr Photos
More Photos
  Oracle Technology
o Oracle Announces Significant Acceleration of Oracle® Database 11g Release 2

Transparent Data Encryp 21/09/2010

o Andy Mendelsohn General Session Highlights Customer Benefits of Upgrading to

Oracle® Database 11g a21/09/2010

o Oracle Introduces Exadata Database Machine X2-820/09/2010

o Oracle and Simba Technologies Announce Availability of New Release of MDX

Provider for Oracle OLAP 20/09/2010

o Leading Research Firm Names Oracle the Leader in Worldwide Embedded Database

Management Systems 18/09/2010

o Netmania Gains Capability to Process 10 Million E-Tax Transactions Per Month by

Upgrading to Oracle08/09/2010

o Oracle Delivers World Record Price/Performance Result with TPC-C

Benchmark 17/08/2010

o Oracle Sets World Record Result on SAP® Sales and Distribution-Parallel Standard

Application Bench28/06/2010

o Metcash upgrades to Oracle Database 11g; Improves Performance by

300% 25/06/2010

o Oracle® Application Express Release 4.0 Now Available  23/06/2010

Oracle Database 9i- Basic Architecture


25/03/2009 — ZyK

Introduction

This post is regarding the basic database architecture for 9i. Its been very late to upload this basic

stuff, but I realized that it would be an incomplete blog without having even a brief architecture. So

here it is.
Below is the figure which gives a overview of “Inside Oracle”.

An Oracle database is a combination of oracle Instance and data files on the file system.

Oracle Database = Oracle Instance + Datafiles

Again Oracle Instance is nothing but Memory architecture and Background processes. Lets start the

discussion with Memory architecture first.

Memory Architecture

Oracle database uses memory for its operation. The total memory allocated to the Oracle database

can be broadly categorized into SGA (System Global Area) and PGA (Program Global Area).

SGA Contains following data structure

 Database buffer cache

 Redo log buffer

 Shared pool

 Java pool

 Large pool (optional)

 Data dictionary cache


 Other miscellaneous information

We can also categorized SGA into fixed SGA and variable SGA. When asked about Fixed

SGA, AskTom says that “fixed SGA is a component of the SGA that varies in size from platform to

platform and  release to release.  It is “compiled” into the database.  The fixed SGA contains a set of

variables that point to the other components of the SGA and variables that contain the values of

various parameters.  The size of the fixed SGA is something over which we have no control and it is

generally very small.  Think of this area as a “bootstrap” section of the SGA, something Oracle uses

internally to find the other bits and pieces of the

SGA.”

Variable SGA contains 4 main components as listed above, those are “Database Buffer Cache”, “Redo

Log Buffer”, “Shared Pool” and “Large Pool”. We call it variable SGA because we can alter the size of

each of these components manually using ALTER SYSTEM command. The size of each of the

components of variable SGA is determined by INIT.ORA parameters. Following are the INIT.ORA

parameter for each of the component.

 Database Buffer Cache – db_block_buffers

 Redo Log Buffer – log_buffer

 Shared Pool – shared_pool_size

 Large Pool – Large_pool_size

We cannot however alter the size of Fixed SGA.

Database Buffer Cache – This is used to hold the data into the memory. When ever a user access

the data, it gets fetched into database buffer cache and it will be managed according to LRU (Least

recently used) algorithm. Advantages – If a user is requesting data, which gets fetched into the buffer

cache, then next time if he ask for same data with in a short period of time, the data will be read from

buffer cache and Oracle process does not have to fetch data again from disk. Reading data from buffer

cache is a faster operation. Another advantage is that if a user is modifying the data, it can be

modified in the buffer cache which is a faster operation then modifying the data directly on the disk.

Redo Log Buffer - This memory block hold the data which is going to be written to redo log file. Why

do we need this data? To rollback the changes if the need be. But instead of writing the data directly

to the redo log files, it is first written to log buffer which improves performance and then with the

occurrence of certain event it will be written to redo log file.


Shared Pool - This contains 2 memory section, 1) Library Cache 2) Dictionary Cache. Library cache

hold the parsed SQL statement and execution plans and parsed PLSQL codes. Dictionary cache hold

the information about user privileges, tables and column definitions, passwords etc. These 2 memory

components are included in the size of shared pool.

Large Pool - If defined then used for heavy operations such as bulk copy during backup or during

restore operation.

The total size of SGA is determined by a parameter SGA_MAX_SIZE. Below is the simple calculation of

memory sizes.

SQL> show sga

Total System Global Area  577574308 bytes

Fixed Size                   452004 bytes

Variable Size             402653184 bytes

Database Buffers          163840000 bytes

Redo Buffers               10629120 bytes

This will show fixed and variable size SGA. Fixed size SGA, as I said is not in our control. However we

can verify the size of variable SGA and other memory values shown above.

Database Buffers          163840000 bytes

SQL> show parameters db_block_buffer

NAME                                 TYPE        VALUE

———————————— ———– ——————————

db_block_buffers                     integer     20000

This value is in terms of blocks. we can find the size of a block using DB_BLOCK_SIZE parameter

SQL> show parameters db_block_size

NAME                                 TYPE        VALUE

———————————— ———– ——————————

db_block_size                        integer     8192


So Database Buffers = db_block_buffers X db_block_size = 20000 X 8192 = 163840000 bytes

Also Variable size = “Shared Pool Size” + “Large Pool Size” + “Java Pool size” (some times defined)

SQL> SELECT pool, sum(bytes) from v$sgastat group by pool;

POOL        SUM(BYTES)

———– ———-

java pool     50331648

shared pool  352321536

11069860

Variable size = 352321536 + 50331648 = 402653184 bytes

Program Global Area

PGA contains information about bind variables, sort areas, and other aspect of cursor handling. This is

not a shared area and every user has its own PGA. But why PGA is required for every user? The

reason being that even though the parse information for SQL or PLSQL may be available in library

cache of shared pool, the value upon which the user want to execute the select or update statement

cannot be shared. These values are stored in PGA. This is also called Private Global Area.

Going still deeper into the memory structure…

Database buffer cache is again divided into 3 different types of cache.

1. Default Cache

2. Keep Cache

3. Recycle Cache

If we define the cache size using DB_CACHE_SIZE (or DB_BLOCK_BUFFER and specify the block size)

then this will be default cache. The cache has a limited size, so not all the data on disk can fit in the

cache. When the cache is full, subsequent cache misses cause Oracle to write dirty data already in the

cache to disk to make room for the new data.

You can configure the database buffer cache with separate buffer pools that either keep data in the

buffer cache or make the buffers available for new data immediately after using the data blocks.
 The KEEP buffer pool retains the schema object’s data blocks in memory. This is defined using

the INIT.ORA parameterDB_KEEP_CACHE_SIZE

 The RECYCLE buffer pool eliminates data blocks from memory as soon as they are no longer

needed. This is defined using the INIT.ORA parameter DB_RECYCLE_CACHE_SIZE

You can also define multiple DB block sizes using following parameters. Example if you have defined

standard default block size of 4K, then following parameters can be used to define a size of 2K, 8K,

16K and 32K.

DB_2K_CACHE_SIZE

DB_8K_CACHE_SIZE

DB_16K_CACHE_SIZE

DB_32K_CACHE_SIZE

Note that you can define the Keep and Recycle cache only on standard block size and buffer cache size

is the sum of sizes of each of these pools.

Shared Pool Reserved Size

Shared Pool, as we have seen previously contains the parsed SQL statements and execution plans.

With continuous use of database, after a period of time the shared pool will get fragmented. New

parsed SQL and execution plans comes and old one gets aged out and hence overwritten. This will

also lead to larger packages being aged out with new entries going into shared pool. Hence access to

such larger packages will take time to parse and create execution plan. This might cause performance

issues.

To avoid such situation, you can define a parameter SHARED_POOL_RESERVED_SIZE. This will

reserve some additional space other then shared_pool_size. If an object (either parsed SQL statement

or execution plan) is stored in reserved shared pool area then it will not age out.

For large allocations, the order in which Oracle attempts to allocate space in the shared pool is the

following:

1. From the unreserved part of the shared pool.

2. If there is not enough space in the unreserved part of the shared pool, and if the allocation is

large, then Oracle checks whether the reserved pool has enough space.
3. If there is not enough space in the unreserved and reserved parts of the shared pool, then

Oracle attempts to free enough memory for the allocation. It then retries the unreserved and

reserved parts of the shared pool.

Process Architecture

Oracle has several process running in the background for proper functioning of database. Following

are the main categories of process.

1. Server Process

2. Background Process

Server Process – to handle the requests of user processes connected to the instance. Server

processes (or the server portion of combined user/server processes) created on behalf of each user’s

application can perform one or more of the following:

 Parse and execute SQL statements issued through the application

 Read necessary data blocks from datafiles on disk into the shared database buffers of the

SGA, if the blocks are not already present in the SGA

 Return results in such a way that the application can process the information

Background Process - An Oracle instance can have many background processes; not all are always

present. The background processes in an Oracle instance include the following:

 Database Writer (DBW0 or DBWn)

 Log Writer (LGWR)

 Checkpoint (CKPT)

 System Monitor (SMON)

 Process Monitor (PMON)

 Archiver (ARCn)

 Recoverer (RECO)

 Lock Manager Server (LMS) – Real Application Clusters only

 Queue Monitor (QMNn)

 Dispatcher (Dnnn)
 Server (Snnn)

On many operating systems, background processes are created automatically when an instance is

started.

Database writer (DBWn) - The database writer process (DBWn)  writes the contents of buffers to

datafiles. The DBWnprocesses are responsible for writing modified (dirty) buffers in the database

buffer cache to disk. Although one database writer process (DBW0) is adequate for most systems, you

can configure additional processes (DBW1 through DBW9) to improve write performance if your

system modifies data heavily. These additional DBWn processes are not useful on uniprocessor

systems.

Log Writer (LGWR) – The log writer process (LGWR) is responsible for redo log buffer

management–writing the redo log buffer to a redo log file on disk. LGWR writes all redo entries that

have been copied into the buffer since the last time it wrote.

Checkpoint (CKPT) - When a checkpoint occurs, Oracle must update the headers of all datafiles to

record the details of the checkpoint. This is done by the CKPT process. The CKPT process does not

write blocks to disk; DBWn always performs that work.

System Monitor (SMON) – The system monitor process (SMON) performs crash recovery, if

necessary, at instance startup.SMON is also responsible for cleaning up temporary segments that are

no longer in use and for coalescing contiguous free extents within dictionary-managed tablespaces. If

any dead transactions were skipped during crash and instance recovery because of file-read or offline

errors, SMON recovers them when the tablespace or file is brought back online. SMON wakes up

regularly to check whether it is needed.

Process Monitor (PMON) -

The process monitor (PMON) performs process recovery when a user process fails. PMON is

responsible for cleaning up the database buffer cache and freeing resources that the user process was

using. For example, it resets the status of the active transaction table, releases locks, and removes

the process ID from the list of active processes.

PMON periodically checks the status of dispatcher and server processes, and restarts any that have

died (but not any that Oracle has terminated intentionally). PMON also registers information about the

instance and dispatcher processes with the network listener.


Archiver Process (ARCn) -

The archiver process (ARCn) copies online redo log files to a designated storage device after a log

switch has occurred. ARCn processes are present only when the database is in ARCHIVELOG mode,

and automatic archiving is enabled.

An Oracle instance can have up to 10 ARCn processes (ARC0 to ARC9). The LGWR process starts a

new ARCn process whenever the current number of ARCn processes is insufficient to handle the

workload. The ALERT file keeps a record of when LGWR starts a new ARCn process.

Recoverer (RECO) – The recoverer process (RECO) is a background process used with the

distributed database configuration that automatically resolves failures involving distributed

transactions. The RECO process of a node automatically connects to other databases involved in an in-

doubt distributed transaction. When the RECO process reestablishes a connection between involved

database servers, it automatically resolves all in-doubt transactions, removing from each database’s

pending transaction table any rows that correspond to the resolved in-doubt transactions.

The RECO process is present only if the instance permits distributed transactions and if

the DISTRIBUTED_TRANSACTIONSparameter is greater than zero. If this initialization parameter is

zero, RECO is not created during instance startup.

Lock Manager Server (LMS) - In Oracle9i Real Application Clusters, a Lock Manager Server process

(LMS) provides inter-instance resource management.

Queue Monitor (QMNn) – The queue monitor process is an optional background process for Oracle

Advanced Queuing, which monitors the message queues. You can configure up to 10 queue monitor

processes. These processes, like the Jnnn processes, are different from other Oracle background

processes in that process failure does not cause the instance to fail.

The above once explained are the mail background processes. Please refer to the Oracle

documentation for detailed Oracle 9i Architecture.

Hope this helps !!

References:

Oracle9i Database Online Documentation (Release 9.0.1)


Tom Kyte

Comments (6)

Oracle Database 10g scheduler - Advanced


Filed under: Oracle Database 10g — advait @ 8:14 am

Tags: 10g scheduler, Oracle 10g scheduler, Oracle 10g scheduler advance concepts, scheduler

advance concept

You must have seen the basic concepts of Oracle Database scheduler. The basic concepts includes

programs, Jobs and schedule. Oracle Database 10g scheduler – Basic post includes these concepts

and shows how to create programs, jobs and schedule the same.

This post is regarding the advanced concepts of Oracle 10g scheduler. This includes Job Classes,

Window, Window group and profiles. Lets see each of these concepts one by one.

Job Classes

Job class allows DBA to categorize the jobs according to similar resource requirements. For each jobs 

to be executed, database needs resource to be allocated to the job. We can define resource

group and limit the resource for each resource group. You can check the existing resource group

using the below query.

SQL> SELECT consumer_group FROM dba_rsrc_consumer_groups;

CONSUMER_GROUP

——————————

SYS_GROUP

LOW_GROUP

OTHER_GROUPS

AUTO_TASK_CONSUMER_GROUP

DEFAULT_CONSUMER_GROUP

ORA$AUTOTASK_URGENT_GROUP

BATCH_GROUP

ORA$DIAGNOSTICS

ORA$AUTOTASK_HEALTH_GROUP
ORA$AUTOTASK_SQL_GROUP

ORA$AUTOTASK_SPACE_GROUP

CONSUMER_GROUP

——————————

ORA$AUTOTASK_STATS_GROUP

ORA$AUTOTASK_MEDIUM_GROUP

INTERACTIVE_GROUP

14 rows selected.

Each of these resource group is having some defined level of resource usage. We can create a job

class and allocate a resource group to that job class using RESOURCE_CONSUMER_GROUP parameter

as given below.

– Create a job class.

BEGIN

DBMS_SCHEDULER.create_job_class (

job_class_name          =>  ‘test_job_class’,

resource_consumer_group =>  ‘low_group’);

END;

If we don’t provide any value for RESOURCE_CONSUMER_GROUP parameter then a default value of

DEFAULT_CONSUMER_GROUP will be allocated.

You can see different job classes and there association to consumer group using the following SQL.

SQL> SELECT job_class_name, resource_consumer_group FROM dba_scheduler_job_classes;

JOB_CLASS_NAME                 RESOURCE_CONSUMER_GROUP

—————————— ——————————

DEFAULT_JOB_CLASS

AUTO_TASKS_JOB_CLASS           AUTO_TASK_CONSUMER_GROUP

DBMS_JOB$

ORA$AT_JCURG_OS                ORA$AUTOTASK_URGENT_GROUP

ORA$AT_JCNRM_OS                ORA$AUTOTASK_STATS_GROUP

ORA$AT_JCMED_OS                ORA$AUTOTASK_MEDIUM_GROUP
ORA$AT_JCURG_SA                ORA$AUTOTASK_URGENT_GROUP

ORA$AT_JCNRM_SA                ORA$AUTOTASK_SPACE_GROUP

ORA$AT_JCMED_SA                ORA$AUTOTASK_MEDIUM_GROUP

ORA$AT_JCURG_SQ                ORA$AUTOTASK_URGENT_GROUP

ORA$AT_JCNRM_SQ                ORA$AUTOTASK_SQL_GROUP

JOB_CLASS_NAME                 RESOURCE_CONSUMER_GROUP

—————————— ——————————

ORA$AT_JCMED_SQ                ORA$AUTOTASK_MEDIUM_GROUP

AQ$_PROPAGATION_JOB_CLASS

XMLDB_NFS_JOBCLASS

14 rows selected.

Once Job class has been created you can create jobs and assign the jobs to one of the Job class. You

can even assign the existing jobs to the job class.

BEGIN

– Job defined by an existing program and schedule and assigned to a job class.

DBMS_SCHEDULER.create_job (

job_name      => ‘new_job’,

program_name  => ‘test_plsql_block_prog’,

schedule_name => ‘test_hourly_schedule’,

job_class     => ‘test_job_class’,

enabled       => TRUE,

comments      => ‘Job defined by an existing program and schedule and assigned toa job class.’);

DBMS_SCHEDULER.set_attribute (

name      => ‘existing_job’,

attribute => ‘job_class’,

value     => ‘test_job_class’);

END;

You can check the scheduled jobs and the job class to which they belong using

DBA_SCHEDULER_JOBS
SQL> SELECT owner, job_name, job_class, enabled FROM dba_scheduler_jobs;

OWNER      JOB_NAME                       JOB_CLASS            ENABL

———- —————————— ——————– —–

SYS        PURGE_LOG                      DEFAULT_JOB_CLASS    TRUE

SYS        GATHER_STATS_JOB               AUTO_TASKS_JOB_CLASS FALSE

SYS        XMLDB_NFS_CLEANUP_JOB          XMLDB_NFS_JOBCLASS   FALSE

SYS        AUTO_SPACE_ADVISOR_JOB         AUTO_TASKS_JOB_CLASS FALSE

SYS        FGR$AUTOPURGE_JOB              DEFAULT_JOB_CLASS    FALSE

SYS        ORA$AUTOTASK_CLEAN             DEFAULT_JOB_CLASS    TRUE

SYS        HM_CREATE_OFFLINE_DICTIONARY   DEFAULT_JOB_CLASS    TRUE

SYS        DRA_REEVALUATE_OPEN_FAILURES   DEFAULT_JOB_CLASS    TRUE

ORACLE_OCM MGMT_CONFIG_JOB                DEFAULT_JOB_CLASS    TRUE

ORACLE_OCM MGMT_STATS_CONFIG_JOB          DEFAULT_JOB_CLASS    TRUE

SYS        BSLN_MAINTAIN_STATS_JOB        DEFAULT_JOB_CLASS    TRUE

Window

A window is a time slot created within the database. A window is associated with a resource plan.

A resource plan defines the resource allocation among the resource consumer group. Do not get

confused with resource consumer group and resource plan. A resource consumer group is

associated with Job Classes which defines how much resources are required by that job for execution.

Where as resource plan is the blue print for resource allocation among resource consumer groups.

So when a resource plan is associated with a window, during that period of time when the window is

active that particular resource plan will be active. This plan will decide the resource allocation to

different consumer groups.

So if a certain amount of CPU is allocated to a resource plan which is currently assigned to the active

window, then depending on the currently running job classes each will be assigned required resources

from the available resources in the plan. Example of CPU allocated to resource plan is 50% of total

CPU and 2 resource consumer group allocated to 2 job classes is running, one job class requires 20%

CPU and other needs 80% CPU, then 50% CPU of resource plan will be divided into 80:20 ratio and

will be provided to each of job classes. Job class will run the jobs accordingly.
BEGIN

– Window with a predefined schedule.

DBMS_SCHEDULER.create_window (

window_name     => ‘test_window_1′,

resource_plan   => NULL,

schedule_name   => ‘test_hourly_schedule’,

duration        => INTERVAL ‘60′ MINUTE,

window_priority => ‘LOW’,

comments        => ‘Window with a predefined schedule.’);

– Window with an inline schedule.

DBMS_SCHEDULER.create_window (

window_name     => ‘test_window_2′,

resource_plan   => NULL,

start_date      => SYSTIMESTAMP,

repeat_interval => ‘freq=hourly; byminute=0′,

end_date        => NULL,

duration        => INTERVAL ‘60′ MINUTE,

window_priority => ‘LOW’,

comments        => ‘Window with an inline schedule.’);

END;

You can display window names and resource plans using following query.

SQL> SELECT window_name, resource_plan, enabled, active FROM   dba_scheduler_windows;

WINDOW_NAME                    RESOURCE_PLAN                  ENABL ACTIV

—————————— —————————— —– —–

WEEKNIGHT_WINDOW               DEFAULT_MAINTENANCE_PLAN       FALSE FALSE

WEEKEND_WINDOW                 DEFAULT_MAINTENANCE_PLAN       FALSE FALSE

MONDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN       FALSE FALSE

ADS_GATHER_STATS_WINDOW1       SYSTEM_PLAN                    TRUE  FALSE

TUESDAY_WINDOW                 DEFAULT_MAINTENANCE_PLAN       FALSE FALSE

WEDNESDAY_WINDOW               DEFAULT_MAINTENANCE_PLAN       FALSE FALSE

THURSDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN       FALSE FALSE

FRIDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN       FALSE FALSE


SATURDAY_WINDOW                DEFAULT_MAINTENANCE_PLAN       FALSE FALSE

SUNDAY_WINDOW                  DEFAULT_MAINTENANCE_PLAN       FALSE FALSE

Windows can be opened and closed manually using

the OPEN_WINDOW and CLOSE_WINDOW procedures:

BEGIN

– Open window.

DBMS_SCHEDULER.open_window (

window_name => ‘test_window_2′,

duration    => INTERVAL ‘1′ MINUTE,

force       => TRUE);

END;

Windows can be dropped using the DROP_WINDOW procedure:

BEGIN

DBMS_SCHEDULER.drop_window (

window_name => ‘test_window_1′,

force       => TRUE);

DBMS_SCHEDULER.drop_window (

window_name => ‘test_window_2′,

force       => TRUE);

END;

Window Group

Window group is just a collection of similar windows. It can be created with 0, 1 or many windows as

group members using the CREATE_WINDOW_GROUP procedure.

BEGIN

DBMS_SCHEDULER.create_window_group (

group_name  => ‘test_window_group’,

window_list => ‘test_window_1, test_window_2′,

comments    => ‘A test window group’);


END;

You can display the window group details using following query.

SQL> SELECT window_group_name, enabled, number_of_windowS FROM  

dba_scheduler_window_groups;

WINDOW_GROUP_NAME              ENABL NUMBER_OF_WINDOWS

—————————— —– —————–

MAINTENANCE_WINDOW_GROUP       TRUE                  9

ORA$AT_WGRP_OS                 TRUE                  9

ORA$AT_WGRP_SA                 TRUE                  9

ORA$AT_WGRP_SQ                 TRUE                  9

Windows can be added and removed from a group using

the ADD_WINDOW_GROUP_MEMBER and REMOVE_WINDOW_GROUP_MEMBERprocedures.

BEGIN

– Create a new window.

DBMS_SCHEDULER.create_window (

window_name     => ‘test_window_3′,

resource_plan   => NULL,

schedule_name   => ‘test_hourly_schedule’,

duration        => INTERVAL ‘60′ MINUTE,

window_priority => ‘LOW’,

comments        => ‘Window with a predefined schedule.’);

DBMS_SCHEDULER.add_window_group_member (

group_name  => ‘test_window_group’,

window_list => ‘test_window_3′);

END;

BEGIN

DBMS_SCHEDULER.remove_window_group_member (

group_name  => ‘test_window_group’,


window_list => ‘test_window_3′);

END;

Window groups can be dropped using the drop_window_group procedure.

BEGIN

DBMS_SCHEDULER.drop_window_group (

group_name => ‘test_window_group’,

force      => TRUE);

END;

Hope this helps !!

References:

http://www.oracle-base.com/articles/10g/Scheduler10g.php

Posted in Oracle, Resources. Leave a Comment »

Gửi phản hồi

Bạn phải đăng nhập để gửi phản hồi.

« Oracle10g DBA OCA-OCP Exam Preparation

Flash Website Design – Công cụ làm Flash Web »

Blog at WordPress.com. Theme: Garland by Steven Wittens and Stefan Nagtegaal.

 Search…
Tìm ki?m
Tìm kiếm:

 Most Popular Tags


24  AC  aK anh anh depAnh yêu em An tuong BSS10 chờ

đợi Culture Dance SportDNHA09 E2go EmEmp enjoy

lifeFan77 Flat Friedmanfriendship gócHoroscope khanhnd khoanh khac khoảnh
khắckhông tên Let me love you Mars MC09 MusicMyS Ngo Thuy Mien Rang Wo

Ai Ni se doi anh Story thiên đườngThương hiệu tinh banTN10 Tuyen


dungWedding world is flatWTO đổ vỡ ảnh đẹp

 Top Posts
o Một số kinh nghiệm khi sử dụng Power Point

o Oracle Database 9i- Basic Architecture

o Ý nghĩa những con số trong sim điện thoại

o Bản đồ Hà Nội

o Từng bước lập trình cho DTDD J2ME - Phần 8

o Oracle DBLink to any DB (SQL server, MySQL,…)

o Giáo trình AutoCAD toàn tập (CD của SSDG)

o Athena - Nữ thần thông thái (P7)

o Apolo - Thần Ánh Sáng (P6)

o 10 kỹ thuật giải Sudoku nâng cao

o Cách giải Sudoku căn bản

o So sánh các J2ME IDE (P1)

 Feedback

ZyK on Delain – April Rain

ZyK on Delain – April Rain

dbametrix on Oracle Certification Prog…

ZyK on Lãng mạn Thung Nai (Hòa B…

ZyK on There are little eyes upon…


ZyK on Những Câu Tiếng Anh Hay Nhất…

japiob on Những Câu Tiếng Anh Hay Nhất…

iresha gun onSupported ODBC Configurations …

christhn on There are little eyes upon…

christhn on Lãng mạn Thung Nai (Hòa B…

christhn on “Du lịch Lào Cai” …

ZyK on Sự khác biệt văn hóa phương Đô…

 23446
o Do What Makes You Happy, Be With Who Makes You Smile…

 Dowload
o Kho phần mềm Portable

o Movie

o Music

o Software

o Youtube

 HiTech
o Computer Ebook free

o Diễn đàn J2ME

o Free code VN

o HVA Online

o Oracle Database White Papers

o Oracle Documentation

 Oriental corner
o Nhạc dân tộc

o Phong tục Việt

o Văn hóa phương Đông

 Relax
o .::AC Milan FC::.

o Nhạc số

o Nhạc Việt plus

o Tạp chí âm nhạc


o Tủ sách yêu thích

o Where the music begins

o Xone FM

 Resources
o Authentic American Pronunciation

o Babel Fish Translation

o Bách khoa toàn thư

o Bản đồ trực tuyến

o Cẩm nang học tập

o Học tiếng Anh trực tuyến

o Java source

o Lý giải các tên viết tắt

o MIT Open Courseware

o Tủ sách y học

o Từ điển trực tuyến

o Website dowload tài liệu tiếng Anh hay

 Tips
o Check IMEI and SIM

o Check Invisible

o WHOIS Search

  VodPodPod

Indecision 2010 - Republicans Can Go to the Back of the Car

239 views

02 Nov 10
Action Movie Pun Brainstorm (With Rob Huebel)

781 views

01 Nov 10

43,000+ Giants fans sing along to Journey's 'Lights'

498 views

29 Oct 10

Brian Wilson and the Machine

871 views

27 Oct 10
What if All Movies Had Smartphones? - CollegeHumor

1586views

21 Oct 10

follow me on vodpod »

Anda mungkin juga menyukai