通過數(shù)據(jù)庫引擎的鎖機制、內(nèi)存操作、日志機制等。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站制作、網(wǎng)站設計、寧都網(wǎng)絡推廣、重慶小程序開發(fā)公司、寧都網(wǎng)絡營銷、寧都企業(yè)策劃、寧都品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供寧都建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
鎖機制保證同一時的數(shù)據(jù)不會被多外同時寫或覆蓋。
內(nèi)存是把操作的數(shù)據(jù)都放在內(nèi)存。
日志機制,是修改數(shù)據(jù)后,先寫日志,再寫數(shù)據(jù)。
-- 創(chuàng)建profile
create profile profile_name LIMIT
SESSIONS_PER_USER 1 -- 用戶最大并發(fā)會話數(shù)
CPU_PER_CALL 10 -- 單語句的最大CPU時間,超過語句會終止(單位:百分之一秒)
CPU_PER_SESSION UNLIMITED -- 單會話CPU占用無限制
LOGICAL_READS_PER_CALL 1000 -- 單語句的最大讀取數(shù)據(jù)塊數(shù)(包括讀緩存和物理磁盤),沒完成語句終止,數(shù)據(jù)回滾
LOGICAL_READS_PER_SESSION UNLIMITED -- 單語句的最大讀取數(shù)據(jù)塊數(shù)(包括讀緩存和物理磁盤),沒完成語句終止,數(shù)據(jù)回滾
CONNECT_TIME 1000 -- 連接的最長時間(單位:分鐘)
IDLE_TIME 1; -- 不執(zhí)行任何數(shù)據(jù)活動的情況下保持連接的最長時間(單位:分鐘)
-- 為用戶指定配置文件
alter user user_name profile test_profile;
--修改resource_limit為TRUE,否則資源限制無效
alter system set resource_limit = TRUE;
1.設立主鍵。根據(jù)唯一性數(shù)據(jù)庫自動判別。
2.笨的方法:建議采用信號量。
舉例如下:
create signal_flag (signal number(1));insert into signal_flag values(1);
在每次查詢表有無記錄前,加入語句
select signal from signal_flag where signal=1 for update;
select count(1) int var_cnt from tab1 ;
if var_cnt =0 then insert.....
endif;
commit;
oracle增大并發(fā)寫入最簡單的方法是使用SQL_TRACE對其進行跟蹤。您沒有提到Oracle版本,版本或平臺。因此,我假設您至少使用的是10gR2版本。因此,使用DBMS_MONITOR來開...1. oracle的數(shù)據(jù)模式是:用戶建在表空間上,表建在用戶上
2. 一個用戶的表就象自己的私有財產(chǎn)一樣,沒有自己或管理員授權(quán)別的用戶是不能查詢或修改的;
3. 對于不同用戶下的同名表,都是獨立的數(shù)據(jù)對象,如user1.table1和user2.table1是相互獨立的,用戶分別操作自己的表是不影響其他用戶的;
插入數(shù)據(jù)使用主鍵約束即可。如果主鍵是自增,可以定義唯一約束。
----------------------------------------------------------
如果不使用數(shù)據(jù)庫,那么程序?qū)懗纱屑纯伞?/p>
不能連接Oracle數(shù)據(jù)庫了 提示相關的錯誤
OERR: ORA TNS:no appropriate service handler found
客戶端連接間歇性失敗 報錯ORA
Cause: the listener could not find any available service handlers that are
appropriate for the client connection
Action: run lsnrctl services to ensure that the instance(s) have registered
with the listener and are accepting connections 檢查lsnrctl service instance已經(jīng)注冊
狀態(tài)顯示ready時 可以連接
When the listener believes the current number of connections has reached maximum load
it may set the state of the service handler for an instance to blocked and begin refusing
ining client connections with either of the following errors: ora or ora
采用服務動態(tài)注冊的方式 由PMON 通過SERVICE_UPDATE 來得到目前連接情況 但SERVICE_UPDATE 有時間間隔
所以 listener顯示的連接數(shù)和當前實際的連接數(shù)可能不同
查詢解決方法:
查看一下數(shù)據(jù)庫現(xiàn)有的進程數(shù) 是否已經(jīng)達到參數(shù)processes的大小
select count(*) from v$process;???????????????????????? 取得數(shù)據(jù)庫目前的進程數(shù)
select value from v$parameter where name = processes ; 取得進程數(shù)的上限
如已達到上限 修改initSID ora中的processes的大小
重新啟動數(shù)據(jù)庫到nomount狀態(tài)下 執(zhí)行create spfile from pfile; 并startup open
查詢數(shù)據(jù)庫自啟動以來最大的并發(fā)數(shù)量
修改最大連接數(shù):
alter system set processes = scope = spfile;
重啟數(shù)據(jù)庫:
shutdown immediate;
startup;
查看當前有哪些用戶正在使用數(shù)據(jù)
SELECT osuser a username cpu_time/executions/ || s sql_fulltext machine
from v$session a v$sqlarea b
where a sql_address =b address order by cpu_time/executions desc;
有的時候我們需要調(diào)整oracle數(shù)據(jù)庫的最大鏈接數(shù) 而這個鏈接數(shù)的調(diào)整是在oacle下的dbs目錄下init ora文件中調(diào)整的
ORACLE的連接數(shù)(sessions)與其參數(shù)文件中的進程數(shù)(process)有關 它們的關系如下
sessions=( *process+ )
但是我們增加process數(shù)時 往往數(shù)據(jù)庫不能啟動了 這因為我們還漏調(diào)了一個unix系統(tǒng)參數(shù) 它是核心參數(shù)中的semmns 這是unix系統(tǒng)的信號量參數(shù) 每個process會占用一個信號量 semmns調(diào)整后 需要重新啟動unix操作系統(tǒng) 參數(shù)才能生效 不過它的大小會受制于硬件的內(nèi)存或ORACLE SGA 范圍可從 —— 不等
但是 Processes的修改不僅應該調(diào)整initsid ora文件中的參數(shù) 而且應該調(diào)整OS的內(nèi)核參數(shù) 象AIX HPUX Solaris SCO UNIXWare都是這樣 OS的調(diào)整是需要重新啟動的 而且這個參數(shù)的設置不能簡單按照多少個終端要連到這個服務器上而定 最關鍵是考慮會有多少同時連上的session(在使用一些共享連接的中間件時 一般就不需要太大) 當然還要考慮一些Oracle的后臺進程 還有一些系統(tǒng)維護工作需要多一些連接等
我的atmp大前置機器上對oracle調(diào)整的時候 其使用的是unixware操作系統(tǒng) 在做鏈接數(shù)調(diào)整的時候 要先對核心參數(shù)進行調(diào)整
核心主要相關的參數(shù)的調(diào)整如下
SHMMAX???
SHMMIN???
SHMMNI???
SHMSEG???
SEMMNI???
SEMMSL???
SEMMNS???
SEMOPM???
其中semmni semmns semmsl要加大 至少要比processes大
SEMMNI( ) 指定在核心中信號識別的數(shù)量 這是可以在任意給定時間被激活的唯一信號設置數(shù)量 缺省值是 最大值由系統(tǒng)自動調(diào)整產(chǎn)生
SEMMSL( ) 指定每個信號識別中信號量的最大值 缺省值是
SEMMNS 除最大db外的所有db 的PROCESSES之和+ *最大db的PROCESSES+ *
實例數(shù) 如 個實例進程數(shù)分別為 則=( + )+ * + * =
tyle= LINE HEIGHT: %; FONT FAMILY: 宋體 SEMOPM( ) 指定在每個系統(tǒng)調(diào)用semop中能夠被執(zhí)行的信號操作量的最大值 缺省值是
SHMMAX( ) 指定了共享內(nèi)存部分大小的最大值 等于
× 物理內(nèi)存字節(jié)數(shù)
SHMMNI( ) 指定了系統(tǒng)范圍內(nèi)共享內(nèi)存標識的最大值
SHMSEG( ) 指定了與每個進程相關連的共享內(nèi)存塊(或標識)的數(shù)量 缺省值是 與每個進程相關連的共享內(nèi)存塊的最大值與進程擁有的未使用空間有關 因此 盡管一個進程擁有少于SHMSEG數(shù)值的共享內(nèi)存塊 它也有可能因為其有限的空間而不能與其它進程相聯(lián)系
init ora中調(diào)整為
processes = ?????????????????????????????????????????? # SMALL
#processes = ??????????????????????????????????????????? # MEDIUM
# processes = ??????????????????????????????????????????? # LARGE
From:! FE F A F! entry
修改oracle 的最大連接數(shù)
使用sys 以sysdba權(quán)限登錄
c: sqlplus /nolog
SQLconn / as sysdba
SQL show parameter processes;
NAME TYPE VALUE
aq_tm_processes integer
db_writer_processes integer
job_queue_processes integer
log_archive_max_processes integer
processes integer
SQL alter system set processes= scope = spfile;
系統(tǒng)已更改
SQL show parameter processes;
NAME TYPE VALUE
aq_tm_processes integer
db_writer_processes integer
job_queue_processes integer
log_archive_max_processes integer
processes integer
SQL create pfile from spfile;
文件已創(chuàng)建
lishixinzhi/Article/program/Oracle/201311/18790