說明:
- 開頭帶有“SQL>”標(biāo)識的,表示是一個sql語句。
- 簡單介紹SGA參數(shù)的調(diào)整、表空間的調(diào)整。
調(diào)整sga_max_size、processes、sessions、transactions大小。
- 下面顯示oracle默認(rèn)安裝完成后的部分參數(shù)。
SQL> select * from v$parameter t where t.name in ('sga_max_size','sga_target','memory_max_target','memory_target','pga_aggregate_target', 'db_block_buffers','db_block_size','shared_pool_size','log_buffer','JAVA_pool_size','large_pool_size','processes','sessions','transactions','workarea_size_policy');
- 以上參數(shù),value=0的為oracle自動調(diào)整,無需修改;實際需要調(diào)整的就是sga_max_size、memory_target、processes、sessions、transactions。
a) sga_max_size:調(diào)整成內(nèi)存的40%-50%;memory_target值= sga_max_size值(命令行執(zhí)行)
SQL> alter system set sga_max_size=900M scope=spfile;
b) processes默認(rèn)150,可以先調(diào)整成1000個,后續(xù)可以根據(jù)業(yè)務(wù)請求量調(diào)整。
SQL> alter system set processes=1000 scope=spfile;
c) sessions值根據(jù)sessions=(1.5*processes)+22調(diào)整。
SQL> alter system set sessions=1522 scope=spfile;
d) transactions 值根據(jù)transactions=1.1*sessions調(diào)整。
SQL> alter system set transactions=1675 scope=spfile;
- 修改完后,重啟數(shù)據(jù)庫,檢查參數(shù)。
打開歸檔模式。
- 檢查,修改為歸檔模式,并設(shè)置參數(shù)。
SQL>archive log list
SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog
SQL> alter system set log_archive_dest_1='location=/data/oradata/arch';
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
SQL> shutdown immediate;
SQL>startup;
- 測試
打開閃回。
- 確保數(shù)據(jù)庫運行在歸檔模式下
- 參數(shù)設(shè)置
SQL>alter system set db_recovery_file_dest_size=2G;
SQL> alter system set db_recovery_file_dest='/opt/App/oracle/fast_recovery_area';
SQL>alter system set db_flashback_retention_target=10080;
SQL>alter system set undo_retention=10800;
SQL>shutdown immediate;
SQL>startup mount
SQL>alter database flashback on;
SQL>alter database open;
- 注意:歸檔日志目錄,默認(rèn)是放在閃回區(qū)的;建議換到另外的目錄(log_archive_dest_1)。否則,有可能因為歸檔日志清理不及時,閃回區(qū)的大小(db_recovery_file_dest_size)用光,導(dǎo)致歸檔日志無法寫入,從而數(shù)據(jù)庫hang住。
新建業(yè)務(wù)用戶表空間、業(yè)務(wù)用戶,調(diào)整表空間。
- 新建業(yè)務(wù)表空間(建2個:分別用于存業(yè)務(wù)表和表索引;生成環(huán)境文件大小30G,本文僅為演示)
SQL> create tablespace BUSIDATA datafile '/data/oradata/orcl/BUSIDATA01.dbf' size 1G autoextend on;
SQL> create tablespace BUSIIDX datafile '/data/oradata/orcl/BUSIIDX01.dbf' size 200M autoextend on;
- 對于并發(fā)量大,SQL里排序、分組又多的情況,可以建臨時表空間組(非必須)
SQL>create temporary tablespace tmp01 tempfile '/data/oradata/orcl/tmp01.dbf' size 50M autoextend on;
SQL>create temporary tablespace tmp02 tempfile '/data/oradata/orcl/tmp02.dbf' size 50M autoextend on;
SQL>create temporary tablespace tmp03 tempfile '/data/oradata/orcl/tmp03.dbf' size 50M autoextend on;
SQL>alter tablespace tmp01 tablespace group tempgrp;
SQL>alter tablespace tmp02 tablespace group tempgrp;
SQL>alter tablespace tmp03 tablespace group tempgrp;
SQL>alter database default temporary tablespace tempgrp;
- 新建業(yè)務(wù)用戶BUSI,賦權(quán)限。
SQL>create user busi identified by "busi123" default tablespace BUSIDATA temporary tablespace tempgrp;
- 注意:建索引的時候,需要明確指定tablespace為BUSIIDX。
- 更換用戶表的表空間:由于建表語句不規(guī)范,經(jīng)常會存在這樣的情況:用戶所屬表的存儲表空間不一樣,有的表存儲在users甚至是system表空間下。這時需要調(diào)整表的存儲表空間。需要注意的是,移動表空間時會產(chǎn)生鎖,而且表上的索引有可能失效,因此操作時務(wù)必避開業(yè)務(wù)高峰。
以下sql中帶“<>”根據(jù)實際情況改寫:
SQL>alter table <tablename> move tablespace <newtbs>;
SQL>select * from user_indexes t where t.table_name=' <tablename> ' and t.status<>'VALID';
SQL>alter index <idx_name> rebuild tablespace <new_tab_space_name>;
- 調(diào)整表空間大小:
SQL>select dbf.tablespace_name, dbf.totalspace "總量(M)", dbf.totalblocks as 總塊數(shù),
dfs.freespace "剩余總量(M)", dfs.freeblocks "剩余塊數(shù)", (dfs.freespace / dbf.totalspace) * 100 "空閑比例"
from (select t.tablespace_name, sum(t.bytes) / 1024 / 1024 totalspace, sum(t.blocks) totalblocks
from dba_data_files t group by t.tablespace_name) dbf,
(select tt.tablespace_name, sum(tt.bytes) / 1024 / 1024 freespace, sum(tt.blocks) freeblocks
from dba_free_space tt group by tt.tablespace_name) dfs
where trim(dbf.tablespace_name) = trim(dfs.tablespace_name);
a) 修改已存在數(shù)據(jù)文件的大小
SQL>alter database datafile '/data/oradata/orcl/SYSTEM01.DBF' resize 4096m;
b) 增加數(shù)據(jù)文件
SQL>ALTER TABLESPACE USERS ADD DATAFILE '/data/oradata/orcl/ USERS01.DBF' SIZE 20480M [AUTOEXTEND ON] [NEXT 100M MAXSIZE UNLIMITED];