国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle FAQ 整理

2024-08-29 13:38:37
字體:
來源:轉載
供稿:網友

  安裝好Oracle數據庫和客戶端后, 服務器端用lsnrctl start啟動監聽程序, 在客戶端用net config 配置,連接數據庫, 最后生成tnsnames.ora文件, 格式如下(這是治理兩個節點的配置).
  #C:/oracle/ora92/NETWORK/ADMIN/tnsnames.ora
  servicename =
  (DESCRipTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.120.1.70)(PORT = 1521))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = test)
  )
  )
  
  TEST_2 =
  (DESCRIPTION =
  (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 10.120.1.71)(PORT = 1526))
  )
  (CONNECT_DATA =
  (SERVICE_NAME = myora)
  )
  )
  
  
  可以用tnsping servicename來測試連接然后sqlplus username/passwd@servicename 連接
  
  
  常見問題:
  
  <> ORA-12537: TNS: 連接已關閉
  
  A:監聽程序沒有啟動, 運行lsnrctl start命令
  
  
  
  <>ORA-12545: 因目標主機或對象不存在,連接失敗
  
  A: 檢查tnsnames.ora文件配置, 主機名和端口是否正確, 監聽程序是否啟動.
  
  <>ORA-12560: TNS:protocol adapter error
  
  A: 檢查tnsnames.ora文件配置,主機名和端口是否正確, 監聽程序是否啟動. SID是否正確,可以用tnsping 檢測
  
  <>ORA-03113 :通信通道的文件結束
  A:這個原因的問題很多, 一般應檢查網絡狀況, 或者系統參數的配置
  
  具體見: http://www.chinaunix.net/cgi-bin/bbs/topic.cgi?forum=8&topic=393&show=2340
  
  <> select 查詢時,有2000條記錄符合條件,如何先取出符合條件前1000條,然后再取出符合條件的后1000條?
  
  
  A:
  select * from table_name where rownum<=1000;
  select * from table_name where rownum<=2000 minus select * from table_name where rownum<=1000;
  select * from table_name where rownum<=3000 minus select * from table_name where rownum<=2000;
  
  
  
  <>怎樣能夠查到數據庫的名字?
  
  A: select value from v$parameter where upper(name) like '%DB_NAME%'
  
  <>怎樣得到一個表的最后更新時間?
  
  A: 1. 打開審計功能, 設置初始化文件: AUDIT_TRAIL = true
  2. 重新啟動instance.
  3. 審計表:
  AUDIT INSERT,SELECT,DELETE,UPDATE on TableName by access WHENEVER SUCCESSFUL
  4. 得到具體信息:
  SELECT OBJ_NAME,ACTION_NAME ,to_char(timestamp,'dd/mm/yyyy , HH:MM:SS') from sys.dba_audit_object.
  
  
  <>察看表空間都有哪些表
  
  A; select table_name from dba_tables where tablespace_name='xxx';
  
  <> 一個不常見的錯誤:
  $ sqlplus
  exec(): 0509-036 Cannot load program sqlplus because of the following errors:
  0509-130 Symbol resolution failed for sqlplus because:
  0509-136 Symbol pw_post (number 272) is not eXPorted from dependent module /unix.
  0509-136 Symbol pw_wait (number 273) is not exported from dependent module /unix.
  0509-136 Symbol pw_config (number 274) is not exported from dependent module /unix.
  0509-136 Symbol aix_ora_pw_version3_required (number 275) is not exported from dependent module /unix.
  0509-192 Examine .loader section symbols with the
  'dump -Tv' command.
  
  A: 重新 /etc/loadext -l /etc/pw-syscall (reload)
  可能是 Oracle Kernel Extension for aix 在服務器重啟動的時候沒 load
  SQLPLUS的AutoTrace是分析SQL的執行計劃,執行效率的一個非常簡單方便的工具,在絕大多數情況下,也是非常有用的工具。

  
  這里,我們試圖歸納一些常見的問題,并進行一定的分析。
  
  1。如何設置和使用AUTOTRACE
  
  
  SQL> connect / as sysdba
  SQL> @?/rdbms/admin/utlxplan.sql
  
  Table created.
  
  SQL> create public synonym plan_table for plan_table;
  
  Synonym created.
  
  SQL> grant select,update,insert,delete on plan_table to public;
  
  Grant succeeded.
  
  SQL> @?/sqlplus/admin/plustrce.sql
  SQL>grant plustrace to public.
  
  
  
  2. 理解和使用AutoTrace
  對于SQL 調整,使用Autotrace是最簡單的方法了,我們只需要做:
  SQL>SET AUTOTRACE ON
  我們就可以看到我們SQL的執行計劃,執行成本(PHYSICAL READ/CONSISTENT READ...)
  加上SET Timing On或者Set Time On,我們可以得到很多我們需要的數據。
  
  
  SQL> select nvl(title,' ') from punishinfo_cs where ci_id=45672 ;
  
  NVL(TITLE,'')
  --------------------------------------------------
  閻王令
  
  Elapsed: 00:00:00.00
  SQL> set autotrace on
  SQL> /
  
  NVL(TITLE,'')
  --------------------------------------------------
  閻王令
  
  Elapsed: 00:00:00.71
  
  Execution Plan
  ----------------------------------------------------------
  0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=32)
  1 0 TABLE ACCESS (BY INDEX ROWID) OF 'PUNISHINFO_CS' (Cost=2 C
  ard=1 Bytes=32)
  
  2 1 INDEX (UNIQUE SCAN) OF 'SYS_C001084' (UNIQUE) (Cost=1 Ca
  rd=1)
  
  Statistics
  ----------------------------------------------------------
  0 recursive calls
  0 db block gets
  3 consistent gets
  0 physical reads
  0 redo size
  376 bytes sent via SQL*Net to client
  425 bytes received via SQL*Net from client
  2 SQL*Net roundtrips to/from client
  0 sorts (memory)
  0 sorts (disk)
  1 rows processed
  
  
  
  3.關于使用Autotrace的一些常見疑問:
  
  a.比如我上面的例子,我不用Autotrace,我的時間小于0.01S,但是用了Autotrace,我的執行時間變成了0.71S.
  不注重的人往往會認為,或者沒有測試不用Autotrace時候的情況,往往會忽視這個數字,認為時間就是0.71S.
  實際上,這個0.7S,是花在Autotrace里面的時間。由于Autotrace需要記錄你的SQL執行的成本,這個本身是往數據庫里面讀取和寫入一定的數據的,需要一定的時間。當你的SQL執行時間足夠短的時候,這個由于Autotrace帶來的時間就變成非常可觀的了。我們就需要通過不用Autotrace的時間,和使用Autotrace的執行成本來結合比較。
  
  我們通過結合Autotrace和Tkprof/SQLTRACE,很輕易知道,AUtotrace就近作了什么:
  
  select nvl(title,' ') from punishinfo_cs where ci_id=45672 call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.01 0 0 0 0 Execute 1 0.00 0.00 0 0 0 0 Fetch 2 0.00 0.00 0 3 0 1 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 4 0.00 0.01 0 3 0 1 DELETE FROM PLAN_TABLE WHERE STATEMENT_ID=:1 EXPLAIN PLAN SET STATEMENT_ID='PLUS185025' FOR select nvl(title,' ') from punishinfo_cs where ci_id=45672 insert into plan_table (statement_id, timestamp, Operation, options,
object_node, object_owner, object_name, object_instance, object_type, search_columns, id, parent_id, position, other,optimizer, cost, cardinality, bytes, other_tag, partition_start, partition_stop, partition_id, distribution ) values (:1,SYSDATE,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19, :20,:21,:22) SELECT ID ID_PLUS_EXP,PARENT_ID PARENT_ID_PLUS_EXP,LPAD(' ',2*(LEVEL-1)) OPERATIONDECODE(OTHER_TAG,NULL,'','*')DECODE(OPTIONS,NULL,'',' ('OPTIONS')')DECODE(OBJECT_NAME,NULL,'',' OF '''OBJECT_NAME'''') DECODE(OBJECT_TYPE,NULL,'',' ('OBJECT_TYPE')')DECODE(ID,0, DECODE(OPTIMIZER,NULL,'',' Optimizer='OPTIMIZER))DECODE(COST,NULL,'',' (Cost='COSTDECODE(CARDINALITY,NULL,'',' Card='CARDINALITY) DECODE(BYTES,NULL,'',' Bytes='BYTES)')') PLAN_PLUS_EXP,OBJECT_NODE OBJECT_NODE_PLUS_EXP FROM PLAN_TABLE START WITH ID=0 AND STATEMENT_ID=:1 CONNECT BY PRIOR ID=PARENT_ID AND STATEMENT_ID=:1 ORDER BY ID,POSITION SELECT ID ID_PLUS_EXP,OTHER_TAG OTHER_TAG_PLUS_EXP,OTHER OTHER_PLUS_EXP FROM PLAN_TABLE WHERE STATEMENT_ID=:1 AND OTHER_TAG IS NOT NULL ORDER BY ID
  
  我們看到,由于我們的Autotrace,簡簡單單的一句話,實際上oracle

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东方市| 剑川县| 平顶山市| 自贡市| 定结县| 彩票| 陵水| 扶余县| 贵定县| 确山县| 宁国市| 织金县| 吴堡县| 万全县| 梨树县| 嘉定区| 顺义区| 蓬溪县| 手游| 光山县| 墨玉县| 黎川县| 玛沁县| 沅江市| 吉林市| 新泰市| 冕宁县| 河东区| 怀柔区| 抚宁县| 特克斯县| 汤阴县| 龙口市| 内乡县| 翼城县| 高尔夫| 高尔夫| 北川| 奉贤区| 乐平市| 远安县|