You are on page 1of 73

6/18/2018

Database Administrations

Fundamental

Keys of Oracle Database

 Zero Data Lost & Fast Recovery


 Redo log file + Archived Redo log files
 SCN (System Change Number)
 RMAN (Backup & Recovery)

 Performance
 DB Buffer Cache (Disk Access Time)
 PGA (Memory for Sort&Join Table) + Temp tablespace
 Shared Pool (Optimal SQL Execution plan)

1
6/18/2018

Why Oracle ?
 2 Engines
 OLTP (OnLine Transaction Processing)
 insert,update,delete 3rd Normalization
 OLAP (OnLine Analitical Processing)
 select + denormalized
 Complatible PC,Mac,Mini Com(SUN,HP,IBM)
 Availiability of Data
 Logical export,import,flashback
 Physical rman(backup&restore)
 switch datafile
 Real Application Cluster (add or remove nodes with
Shared Storage)
 DR Site (DataGuard)

How Oracle control performance


 Take over controling Disk, Mem, CPU from OS
 Disk
 DB buffer cache (over OS Disk Cache)
 Datafile size (free and used blocks included)
 Memory
 SGA (Full Allocate before use)
 PGA (Allocate when use with limit before use
Temp tablespace like Virtual Memory or Swap file)
 CPU
 CPU caging

2
6/18/2018

General Problems
 Performance
 RAM usage by oracle (default only 40%!!! of physical
RAM)
 Not Automatic change when add new memory
 Alert log file not more than 4 GB(Windows)
 C:\app\oracle\diag\rdbms\orcl\orcl\trace\alert_*.log
 Listener log file not more than 4 GB(Windows)
 C:\app\oracle\diag\tnslsnr\test\listener\trace\listener.log
 Out of space
 FRA (Fast Recovery Area) – not Archived and DB
cannot insert,update,delete
 Tablespace,Datafile,Table

General Problems (2)


 No DBA Actions For Tuning Pack
 Optimizer Statistic
 SQL Tuning Advisor
 SQL Segment Advisor
 Alter table xxx shrink space;
 Alter index xxx_ind rebuild;
 Delete Audit trail in sysaux tablespace
 Delete trace file in $ORACLE_BASE/diag/
 Poor Backup Design

3
6/18/2018

General Problems (3)


 Complete Recovery VS Incomplete Recovery
 Flashback
 Tablespace VS Datafile (Performance+Safety VS Easy)
 B-tree(normal) indexVS bitmap index
 Partition
 Materialized View (Mview)
 Big Temp tablespace => Poor Query , Poor Resource
 Big Undo tablespace=> Big transaction before
commit

Oracle Database Architecture


Oracle Instance

1.Memory

2.Process

3.File

4
6/18/2018

12c / 11g

System Global Area


Free ram - Full Allocate when
Service started
Program Global Area
Memory_target (40%) - Use and reuse when
Clients want until limit
OS (windows, linux, unix) Then use temp tablespace
As virtual memory
10g 9i

Free ram Free ram

PGA(40%) PGA
Default db buffer shared java large redo log
SGA (60%)
40%Installed
cache pool pool pool buffer

OS OS

12c / 11g
Memory_max_target(restart)

Memory_target

10g 9i
Pga_aggregate_target
Pga_aggregate_target
Db_buffer_cache
Shared_pool_size
Sga_max_target(restart) Log_buffer
Large_pool_size
Sga_target Stream_pool_size
Java_pool_size

5
6/18/2018

Processes
 Foreground Processes
 Server processes [dedicated (2 tier) VS shared (3 tier)]
 Background Processes
 Database Writer processes (DBWn) [n=>1-9,a-z]
 Redo Log Writer process (LGWR)
 Checkpoint process (CKPT)
 System Monitor process (SMON)
 Process Monitor process (PMON)
 Others
 Listener Processes

Processes(Check)
 lsnrctl status Check listener status
 ps –ef | grep orcl
 ps –ef | grep smon

6
6/18/2018

Database file
Parameter file Control files Data files

Redo log files Backup files Archived redo log files

Start all Service for Oracle


 $ lsnrctl start
 $ emctl start dbconsole
 $ sqlplus / as sysdba
 SQL>startup
 SQL>exit

 $ rman target /

7
6/18/2018

Start up option
 SQL>startup
 status
 SQL>startup nomount -- started
 SQL>alter database mount; -- mounted
 SQL>alter database open; -- open

 SQL>startup mount
 SQL>alter database open;

 Select status from v$instance;

Shutdown option
 SQL>shutdown
 No new connection
 SQL>shutdown transactional
 No new connection + wait for commit/rollback
 SQL>shutdown immediate -- recommended
 No new connection + force rollback + checkpoint
 SQL>shutdown abort -- Instance recovery needed
 Kill all processes

8
6/18/2018

How to setup Archived Log Mode


Sqlplus / as sysdba
SQL>archive log list
SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog;
SQL>alter database open;
SQL>archive log list

Backup database
Rman target /
RMAN>backup database; -- backup set
RMAN>backup as copy database; -- image copy

9
6/18/2018

Recover database
Rman target /
RMAN>startup mount
RMAN>restore database;
RMAN>recover database;
RMAN>alter database open;

Recover database (switch datafile)

Rman target /
RMAN>startup mount
RMAN>report schema;
RMAN>switch datafile 6 to copy;
RMAN>recover database;
RMAN>alter database open;

10
6/18/2018

Switch datafile back to original


Rman target /
RMAN>startup mount
RMAN>backup as copy datafile 6 format
‘/u01/app/oracle/oradata/orcl/user02.dbf’;
RMAN>switch datafile 6 to copy;
RMAN>recover database;
RMAN>alter database open;

Recover user tablespace


Rman target /
SQL>alter tablespace example offline;
RMAN>restore tablespace example;
RMAN>recover tablespace example;
SQL>alter tablespace example online;

11
6/18/2018

Recover system tablespace


Rman target /
RMAN>shutdown abort;
RMAN>startup mount;
RMAN>restore tablespace system;
RMAN>recover database;
RMAN>alter database open;

Recover user datafile


Rman target /
RMAN>report schema;
SQL>alter database datafile 6 offline;
RMAN>restore datafile 6;
RMAN>recover datafile 6;
SQL>alter database datafile 6 online;

12
6/18/2018

How to move datafiles


SQL>alter database datafile 5 offline;
RMAN>
run {
set newname for datafile 5 to ‘/u01/app/oracle/dat5.dbf’;
restore datafile 5;}
switch datafile 5 to copy;
recover datafile 5;
SQL>alter database datafile 5 online;

How to test backup file


rman target /
startup force nomount
restore spfile from
'/home/oracle/Desktop/o1_mf_ncsnf_TAG20150204T1120
51_bf37m63t_.bkp';
shutdown immediate
startup nomount;
restore controlfile from
'/home/oracle/Desktop/o1_mf_ncsnf_TAG20150204T1120
51_bf37m63t_.bkp';

13
6/18/2018

How to test backup file (Cont.)


alter database mount;
catalog start with '/home/oracle/Desktop/';
restore database;
exit;

sqlplus / as sysdba
recover database until cancel using backup controlfile;
alter database open resetlogs;

Other Database
sale.dbf finance.dbf hr.dbf

client.dbf ceo.dbf audit.dbf

14
6/18/2018

Oracle database
finance
Schema sale CEO audit hr

Table sale 2013 Table salary


sale 2014
sale 2015

Tablespace Tablespace
data office

File data1.dbf data2.dbf data3.dat office1.dat


sale 2013 sale 2013 sale 2013 salary
sale 2014 sale 2015 sale 2015

Add more spaces to tablespace


 Add new datafile
 ALTER TABLESPACE "USERS" ADD DATAFILE
'/u01/app/oracle/product/11.2.0/dbhome_1/user02.dbf' SIZE
100M;
 Extend old datafile
 ALTER DATABASE DATAFILE
'/u01/app/oracle/product/11.2.0/dbhome_1/user02.dbf' RESIZE
200M;
 Automatic Extend setting
 ALTER DATABASE DATAFILE
'/u01/app/oracle/product/11.2.0/dbhome_1/user02.dbf'
AUTOEXTEND ON NEXT 10M MAXSIZE 1G;

15
6/18/2018

How to create users and schemas


Create user test8 identified by pAssw0rd;
Grant connect to test8;
Alter user test8 identified by New_pass;
Alter user test8 account lock;
Alter user test8 account unlock;
Alter user test8 password expire;

Lock conflict
 SQL> select SID, SERIAL#, USERNAME
 from V$SESSION where SID in
 (select BLOCKING_SESSION from
V$SESSION);

 SQL> alter system kill session '144,8982'


immediate;

16
6/18/2018

Practice 1
How many Oracle Instance in this environment?
What are the name of those instance?
Where is $ORACLE_HOME and $ORACLE_BASE?
Where are the parameter files?
Where are the control files?
How many tablespaces and name?
How many datafiles and their name and path?
Where are the redo log files?
How many groups,member and size of redo log files?
Is it Archived?

Solution Practice 1
How many Oracle Instance in this environment?
 cat /etc/oratab OR ps –ef | grep smon
What are the name of those instance?
Where is $ORACLE_HOME and $ORACLE_BASE?
 echo $ORACLE_HOME
Where are the parameter files?
 cd $ORACLE_HOME/dbs
Where are the control files?
 SQL>show parameter control_files

17
6/18/2018

Solution Practice 1 (Cont.)


How many tablespaces and name?
 SQL>select name from v$tablespace;
How many datafiles and their name and path?
 SQL>select name from v$datafile;
Where are the redo log files?
How many groups,member and size of redo log files?
 SQL>select group#,bytes,members from v$log;
 SQL>select group#,member from v$logfile;
 SQL>ALTER DATABASE ADD LOGFILE MEMBER
'/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/redo01.rdo'
TO GROUP 1;
SQL>archive log list
 SQL>ALTER DATABASE DROP LOGFILE MEMBER
'/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/redo01.rdo’;

Practice 2
How many RAM do this instance use?
 SQL>show parameter memory_target
 SQL>show parameter target
 SQL>show parameter pool
 SQL>show parameter cache
 SQL>show parameter log
Is it AMM,ASMM or manual memory management?
AMM(Automatic Memory Management 11g)
ASMM(Automatic Shared Memory Management 10g)

18
6/18/2018

Performance Tuning
 Memory Target,SGA Target,PGA Aggregate Target
Memory Advisor V$memory_target_advice
V$sga_target_advice,v$pga_target_advice
DB_Buffer_Cache and Shared_Pool_Size
 Tablespace Type, Location of Datafiles
 Redo logs Size and number of groups

Performance Tuning (Cont.)


 Table , Index
Table and index option(cache,keep)
Alter table xxx shrink space compact;
Alter table xxx shrink space;
Alter index xxx_ind rebuild;
Create new index or drop unused index
Alter Index xxx monitoring;
SQL Access Advisor
 SQL
SQL Tuning Advisor

19
6/18/2018

Cost
 Number of Data Blocks when Statistic not exists
 Number of rows
 Number of columns
 Data types of columns
 Full or empty does not matter
 Object Statistics
 SQL>set autotrace trace explain

PGA session
 SELECT SID, b.NAME, ROUND(a.VALUE/(1024*1024),2)
MB FROM v$sesstat a, v$statname b WHERE (NAME
LIKE '%session uga memory%' OR NAME LIKE '%session
pga memory%') AND a.statistic# = b.statistic#

20
6/18/2018

Hints
 select --+index(employees emp_emp_id_pk)
* from employees
where employee_id > 100;
 SELECT /*+ FIRST_ROWS(10) */ * FROM employees;
 SELECT /*+ FIRST_ROWS */ * FROM employees;
 SELECT /*+ FIRST_ROWS(1000) */ * FROM employees;
 SELECT /*+ FIRST_ROWS(1) */ * FROM employees;

Hints
 CREATE TABLE parallel_table (col1 number, col2
VARCHAR2(10)) PARALLEL 5;
 ALTER TABLE parallel_table PARALLEL 4;
 Select --+parallel
* from parallel_table;
 SELECT /*+ FULL(hr_emp) PARALLEL(hr_emp, 5) */
last_name FROM employees hr_emp;
 SELECT /*+PARALLEL(E,4) PARALLEL(D,4) */
 * FROM EMPLOYEES E,DEPARTMENTS D
 WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID;

21
6/18/2018

Lead/Lag
select t.fiscal_year,prod_id,sum(s.amount_sold),
lag(sum(s.amount_sold),1) over (partition by prod_id order by
t.fiscal_year) old,
round(
(sum(s.amount_sold) - lag(sum(s.amount_sold),1) over (partition by
prod_id order by t.fiscal_year))
/lag(sum(s.amount_sold),1) over (partition by prod_id order by
t.fiscal_year) * 100
,2) growth
from sales s,times t
where s.time_id = t.time_id
and prod_id in (13,14,15)
group by prod_id,t.fiscal_year
order by prod_id,t.fiscal_year

Protect sqlplus / as sysdba


$ORACLE_HOME/network/admin/sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES=NONE

22
6/18/2018

Installation & Configuration


 OS (Unix , Linux , Windows)
 How many Instance
 Memory_target,SGA_target,PGA_aggregate_target
 Disk and files
 Control files
 Redo Log group and members
 Data file
 High usage
 Historical
 Archive log files (duplicate target)

Installation & Config (Cont)


 Backup Solution
 Restore datafile
 Switch datafile
 Incremental backup
 Availbility
 Real Application Cluster
 Virtual Machine
 DR site (Data Recovery site)

23
6/18/2018

Troubleshoot and Tuning


 Alert and Error
 Alert log, Listener log
 Performance Issue
 Dynamic Performance View (v$fixed_table)
 Statspack
 $ORACLE_HOME/rdbms/admin/spcreate.sql
 $ORACLE_HOME/rdbms/admin/spauto.sql
 $ORACLE_HOME/rdbms/admin/spreport.sql
 AWR Reports
 $ORACLE_HOME/rdbms/admin/awrrpt.sql
 $ORACLE_HOME/rdbms/admin/awrddrpt.sql
 Maintenance
 Reports

How to manage RAM for Oracle


 Select * from v$memory_target_advice;

 Select * from v$sga_target_advice;


 Select * from v$pga_target_advice;

24
6/18/2018

Join tables
Big table > 10,000 rows
 Nested loop join
 small small
 small big (index)

Table A Table B Join table

Join tables
 Hash join
 big big
 big small
Memory (PGA)
 small big

Table A Table B

25
6/18/2018

Join tables
 Sorted-merge join
 big big(index)
 big(index) big(index)
Memory (PGA)

Table A Index Table B

Full table scan

still use HWM

deleted

26
6/18/2018

Index scan

Index Organized Table

27
Explore your database 
1. How many Instances in this server and How many Instances start ? 

Connect Each Instance by this command 

   

28 
 
2. How many memory that each Instance uses? 

2.1 Memory Target <11g Feature> 

   

29 
 
2.2 sga_target and pga_aggregate_target <10g Feature> 

   

30 
 
2.3 shared_pool_size,java_pool_size,larget_pool_size,db_cache_size,log_buffer <9i Feature> 

   

31 
 
 

2.4 Suitable memory 

   

32 
 
3. Tablespaces (group of data files) & Data files 

Normal tablespace for oracle system use : SYSTEM,SYSAUX,TEMP,UNDOTBS1 

You should create new tablespace to keep your data. 

   

33 
 
Create New tablespace 

$ sqlplus hr/hr 

SQL> create table test tablespace mydata as select * from dict; 

SQL> insert into test select * from test; 

SQL> commit; 

Insert until find error because data file is full. 

   

34 
 
How to fix this error. 

1. Extend data file 

2. Make data file auto extend 

   

35 
 
3. Add more data file 

How about Effect of Deleting command 

SQL> select count(*) from test; 

SQL> delete test where rownum < (select count(*)/2 from test); 

SQL> select count(*) from test; 

36 
 
 

And look at page “Show Tablespace Contents” after run each practice : 

Practice 1 : SQL> alter table test move; 

Practice 2 : SQL> alter table test move tablespace users; 

Practice 3 : SQL> delete test; 

Practice 4 : SQL> truncate table test; 

   

37 
 
9i memory feature tuning 

   

   

38 
 
PGA Tuning 

   

39 
 
10g memory feature tuning 

   

40 
 
How many service started? 

Command 

$ lsnrctl start 

$ emctl start dbconsole 

$ sqlplus / as sysdba 

SQL> startup 

SQL> exit 

$ sqlplus / as sysdba 

SQL> shutdown immediate 

SQL> exit 

41 
 
วิธีเปลี่ยน memory setting ของ oracle 

1.copy spfile ไว้ ก่อน เพื่อความปลอดภัย ถ้ าผิดพลาดก็ copy กลับมาไว้ ที่เดิม

2. ตรวจค่า sga_max_size และค่า memory_max_target

ถ้ า memory_max_target ไม่เท่ากับ 0     ตรวจดู sga_max_size ต้ องน้ อยกว่า memory_max_target 

ถ้ า sga_max_size มากกว่า memory_max_target ให้ ปรับด้ วยคําสัง่  

42 
 
SQL>alter system set memory_max_target = 12345678 scope=spfile; 

SQL>alter system set sga_max_size= 12000000 scope=spfile; 

โดยค่า 12345678 ต้ องมากกว่า 12000000 โดยมีหน่วยเป็ น byte 

SQL>alter system set memory_target = 12345678 scope=spfile; 

SQL>alter system set sga_target = 0 scope=spfile; 

SQL>alter system set pga_aggregate_target = 0 scope=spfile; 

SQL>shutdown immediate 

SQL>startup 

เป็ นอันเสร็จพิธี 

ถ้ าเจ๊ ง 

SQL>shutdown abort 

Copy file เก่าทับ และ 

SQL>startup แล้ วเริ่ มใหม่อีกรอบ

43 
 
44
45
46
47
48
49
50
51
52
53
54
55
56
57
How to restore Database server. 

1.Clone OS & Oracle Software 

2.Restore All oracle files 

 Parameter file (pfile,spfile) 
 Control file 

  
 Control file ต้ องอยู่แยก physical Disk 
 Data file 

  

58 
 
 Redo log      1 group : 2 member แต่ละ member ต้ องแยกคนละ physical disk 

  

  

ALTER DATABASE ADD LOGFILE MEMBER 
'/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/redo01.rdo' TO GROUP 1; 

ALTER DATABASE DROP LOGFILE MEMBER 
'/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/redo01.rdo'; 

   

59 
 
 

 Redo log files should switch only 4 ‐5 times per hour at peak load 
 the optimum size is    102 / 4 * 50 MB = 1275 MB per member 

ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/orcl/redo04.rdo', 
'/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/redo04.rdo ') SIZE 1000M; 

 ALTER SYSTEM SWITCH LOGFILE; 
 ALTER SYSTEM CHECKPOINT; 

Archive log list 

   

60 
 
 Back up [ Low cost : More Downtime : Not critical] 

$ rman target / 

RMAN>backup as backupset database;      OR 

RMAN>backup as compressed backupset database; 

RMAN>restore database validate; 

RMAN>restore archivelog all validate; 

61 
 
 Recovery User Datafile 

   

62 
 
 Recover System Datafiles 

RMAN>shutdown abort 

RMAN>startup mount 

   

63 
 
 Back up [High cost : Less Downtime : Critical : Use backup file instead restoring original file] 

RMAN>Backup as copy database; 

   

64 
 
 Recovery User Datafile by switch command 

   

65 
 
 Move back to original source by switch command 

66 
 
 Recover System Datafiles 

RMAN>shutdown abort 

RMAN>startup mount 

   

67 
 
 Move back to original source by switch command 

   

68 
 
 Backup [High cost : Least Downtime : Most Critical ] 

preparation 

SQL>ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'c:\oracle\product 
lash_recovery_area\ORABASE\bctf01.log'; 

backup everyday 

RMAN>backup incremental level 1 for recover of copy with tag'app_incr' database; 

RMAN>recover copy of database with tag'app_incr'; 

Recover same as method 2 but reduce time in "recover" command; 

Manage Archived Redo Logs Files 

RMAN>report obsolete; 

RMAN>delete noprompt obsolete; 

69 
 
Microsoft Windows XP [Version 5.1.2600]

(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Sarissy>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Nov 11 15:10:44 2015

70
Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show parameter memory_target

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

memory_target big integer 616M

SQL> show parameter sga_target

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

sga_target big integer 0

SQL> select * from v$memory_target_advice order by 1;

MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR VERSION

----------- ------------------ ------------ ------------------- ----------

462 .75 2432 1.0001 0

616 1 2432 1 0

770 1.25 2432 1 0

71
924 1.5 2432 .9999 0

1078 1.75 2432 .9999 0

1232 2 2432 .9999 0

6 rows selected.

SQL> select * from v$sga_target_advice order by 1;

SGA_SIZE SGA_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR ESTD_PHYSICAL_READS

---------- --------------- ------------ ------------------- -------------------

303 .75 2584 1.0626 145392

404 1 2432 1 102432

505 1.25 2384 .9802 94422

606 1.5 2342 .963 71702

707 1.75 2318 .9531 71702

808 2 2308 .949 71702

6 rows selected.

SQL>

72
คําอธิบาย

1. sqlplus / as sysdba เป็ นคําสั่งสําหรับเข้าใช้งาน oracle ในฐานะ admin


2. show parameter memory_target เป็ นคําสั่งขอดู จํานวน memory ที่ oracle ใช้งานอยูใ่ น
ั ถ้าเป็ น 0 ให้ดูหวั ข้อต่อไป
ปัจจุบน
3. show parameter sga_target เป็ นคําสั่งขอดูจา ํ นวน memory อีกค่าหนึ่ง ซึง่ ถ้า
memory_target ไม่เท่ากับ 0 แล้ว sga_target มักเป็ น 0 ซึง ่ ไม่มป
ี ญ
ั หา
4. select * from v$memory_target_advice order by 1;
้ึ เมือ่ มีการเปลีย่ นค่า
เป็ นคําสั่งพยากรณ์ ประสิทธิภาพของระบบ ทีจ่ ะดีขน
memory_target
วิธอ
ี า่ น ให้มองหาค่า memory_size_factor ทีเ่ ป็ น 1 ก่อน ค่า memory_size จึงเป็ น 616M
คราวนี้ดค ู า่ ESTD_DB_TIME_FACTOR ของบรรทัดสุดท้าย ได้ .9999 แปลว่า ถึงเปลีย่ น
memory_size เป็ น 1232M ก็จะได้ประสิทธิภาพดีขน ้ึ 100 - .9999 * 100 = .01% หรือ
แปลว่า แทบไม่ดข ้ึ เลย แสดงว่า ram พออยูแ
ี น ่ ล้ว ได้เยอะเกินไปก็ไม่เร็วกว่านี้แล้ว
5. select * from v$sga_target_advice order by 1;
เป็ นคําสั่งพยากรณ์ ประสิทธิภาพของระบบ ทีจ่ ะดีขน ้ึ เมือ่ มีการเปลีย่ นค่า sga_target
วิธอี า่ น ให้มองหาค่า sga_size_factor ทีเ่ ป็ น 1 ก่อน ค่า sga_size จึงเป็ น 404M
คราวนี้ดค ู า่ ESTD_DB_TIME_FACTOR ของบรรทัดสุดท้าย ได้ .949 แปลว่า ถึงเปลีย่ น
sga_size เป็ น 808M ก็จะได้ประสิทธิภาพดีขน ้ึ 100 - .949 * 100 = 5.1% หรือแปลว่า
ดีขน ้ึ นิดหน่ อย ถ้ายังมี ram เหลืออยูค
่ วรเพิม
่ ให้ หรือเตรียมตัวหา ram มาเพิม ่ ได้ใน
อนาคต

73