程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> ORACLE之常用FAQ V1.0二(構架體系)

ORACLE之常用FAQ V1.0二(構架體系)

編輯:Oracle數據庫基礎

Q]怎麼知道那些表沒有建立主鍵  

  [A]一般的情況下,表的主鍵是必要的,沒有主鍵的表可以說是不符合設計規范的。  

  SELECT table_name

  FROM User_tables t

  WHERE NOT EXISTS

  (SELECT table_name

  FROM User_constraints c

  WHERE constraint_type = 'P'

  AND t.table_name=c.table_name)  

  其它相關數據字典解釋  

  user_tables 表

  user_tab_columns 表的列

  user_constraints 約束

  user_cons_columns 約束與列的關系

  user_indexes 索引

  user_ind_columns 索引與列的關系

  

  [Q]dbms_output提示緩沖區不夠,怎麼增加

  

  [A]dbms_output.enable(20000);

  另外,如果dbms_output的信息不能顯示,需要設置

  set serveroutput on

  

  [Q]怎麼樣修改表的列名

  

  [A]9i以上版本可以采用rname命令

  

  ALTER TABLE UserName.TabName

  RENAME COLUMN SourceColumn TO DestColumn

  

  9i以下版本可以采用create table …… as select * from SourceTable的方式。

  

  另外,8i以上可以支持刪除列了

  

  ALTER TABLE UserName.TabName

  SET UNUSED (ColumnName) CASCADE CONSTRAINTS

  ALTER TABLE UserName.TabName

  DROP (ColumnName) CASCADE CONSTRAINTS

  

  [Q]怎麼樣給sqlplus安裝幫助

  

  [A]SQLPLUS的幫助必須手工安裝,shell腳本為$Oracle_HOME/bin/helpins

  

  在安裝之前,必須先設置SYSTEM_PASS環境變量,如:

  

  $ setenv SYSTEM_PASS SYSTEM/MANAGER

  $ helpins

  

  如果不設置該環境變量,將在運行腳本的時候提示輸入環境變量

  

  當然,除了shell腳本,還可以利用sql腳本安裝,那就不用設置環境變量了,但是,我們必須以system登錄。

  

  $ sqlplus system/manager

  SQL> @?/sqlplus/admin/help/helpbld.sql helpus.sql

  

  安裝之後,你就可以象如下的方法使用幫助了

  SQL> help index

  

  [Q]怎麼樣快速下載Oracle補丁

  

  [A]我們先獲得下載服務器地址,在http頁面上有FTP://updates.Oracle.com

  

  然後用FTP登錄,用戶名與密碼是metalink的用戶名與密碼

  

  如我們知道了補丁號3095277 (9204的補丁集),則

  

  FTP> cd 3095277

  250 Changed directory OK.

  FTP> ls

  200 PORT command OK.

  150 Opening data connection for file listing.

  p3095277_9204_AIX64-5L.zip

  p3095277_9204_AIX64.zip

  ……

  p3095277_9204_WINNT.zip

  226 Listing complete. Data connection has been closed.

  FTP: 208 bytes received in 0.02Seconds 13.00Kbytes/sec.

  FTP>

  

  知道了這個信息,我們用用Flashget,網絡螞蟻就可以下載了。

  

  添加如下連接

  

  FTP://updates.Oracle.com/3095277/p3...04_AIX64-5L.zip

  

  或替換後面的部分為所需要的內容

  

  注意,如果是Flashget,網絡螞蟻請輸入認證用戶名及密碼,就是你的metalink的用戶名與密碼!

  

  [Q]如何移動數據文件

  

  [A]1、關閉數據庫,利用os拷貝

  

  a.shutdown immediate關閉數據庫

  

  b.在os下拷貝數據文件到新的地點

  

  c.Startup mount 啟動到mount下

  

  d.Alter database rename datafile '老文件' to '新文件';

  

  e.Alter database open; 打開數據庫

  

  2、利用Rman聯機操作

  

  RMAN> sql "alter database datafile ''file name'' offline";

  RMAN> run {

  2> copy datafile 'old file location'

  3> to 'new file location';

  4> switch datafile ' old file location'

  5> to datafilecopy ' new file location';

  6> }

  

  RMAN> sql "alter database datafile ''file name'' online";

  

  說明:利用OS拷貝也可以聯機操作,不關閉數據庫,與rman的步驟一樣,

  

  利用rman與利用os拷貝的原理一樣,在rman中copy是拷貝數據文件,相當於OS的cp,而switch則相當於alter database rename,用來更新控制文件。

  

  [Q]如果管理聯機日志組與成員

  

  [A]以下是常見操作,如果在OPA/RAC下注意線程號

  

  增加一個日志文件組

  Alter database add logfile [group n] '文件全名' size 10M;

  

  在這個組上增加一個成員

  Alter database add logfile member '文件全名' to group n;

  

  在這個組上刪除一個日志成員

  Alter database drop logfile member '文件全名';

  

  刪除整個日志組

  Alter database drop logfile group n;

  

  [Q]怎麼樣計算REDO BLOCK的大小

  

  [A]計算方法為(redo size + redo wastage) / redo blocks written + 16

  

  具體見如下例子

  

  SQL> select name ,value from v$sysstat where name like '%redo%';

  NAME VALUE

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

  redo synch writes 2

  redo synch time 0

  redo entrIEs 76

  redo size 19412

  redo buffer allocation retrIEs 0

  redo wastage 5884

  redo writer latching time 0

  redo writes 22

  redo blocks written 51

  redo write time 0

  redo log space requests 0

  redo log space wait time 0

  redo log switch interrupts 0

  redo ordering marks 0

  SQL> select (19412+5884)/51 + 16 '"Redo black(byte)" from dual;

  Redo black(byte)

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

  512

  

  [Q]控制文件包含哪些基本內容

  

  [A]控制文件主要包含如下條目,可以通過dump控制文件內容看到

  

  DATABASE ENTRY

  CHECKPOINT PROGRESS RECORDS

  REDO THREAD RECORDS

  LOG FILE RECORDS

  DATA FILE RECORDS

  TEMP FILE RECORDS

  TABLESPACE RECORDS

  LOG FILE HISTORY RECORDS

  OFFLINE RANGE RECORDS

  ARCHIVED LOG RECORDS

  BACKUP SET RECORDS

  BACKUP PIECE RECORDS

  BACKUP DATAFILE RECORDS

  BACKUP LOG RECORDS

  DATAFILE COPY RECORDS

  BACKUP DATAFILE CORRUPTION RECORDS

  DATAFILE COPY CORRUPTION RECORDS

  DELETION RECORDS

  PROXY COPY RECORDS

  INCARNATION RECORDS

  

  [Q]如果發現表中有壞塊,如何檢索其它未壞的數據

  

  [A]首先需要找到壞塊的ID(可以運行dbverify實現),假設為

  

  假定文件編碼為。運行下面的查詢查找段名:

  SELECT segment_name,segment_type,extent_id,block_id, blocks

  from dba_extents t

  where

  file_id =

  

  AND between block_id and (block_id + blocks - 1)

  

  一旦找到壞段名稱,若段是一個表,則最好建立一個臨時表,存放好的數據。

  

  若段是索引,則刪除它,再重建。

  create table good_table

  as

  select from bad_table where rowid not in

  (select rowid

  from bad_table where substr(rowid,10,6) = )

  

  在這裡要注意8以前的受限ROWID與現在ROWID的差別。

  

  還可以使用診斷事件10231

  

  SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10';

  

  創建一個臨時表good_table的表中除壞塊的數據都檢索出來

  

  SQL>CREATE TABLE good_table as select * from bad_table;

  

  最後關閉診斷事件

  

  SQL> ALTER SYSTEM SET EVENTS '10231 trace name context off ';

  

  關於ROWID的結構,還可以參考dbms_rowid.rowid_create函數。

  

  [Q]我創建了數據庫的所有用戶,我可以刪除這些用戶嗎

  

  [A]Oracle數據庫創建的時候,創建了一系列默認的用戶和表空間,以下是他們的列表

  

  ·SYS/CHANGE_ON_INSTALL or INTERNAL

  系統用戶,數據字典所有者,超級權限所有者(SYSDBA)

  創建腳本:?/rdbms/admin/sql.bsq and various cat*.sql

  建議創建後立即修改密碼

  此用戶不能被刪除

  

  ·SYSTEM/MANAGER

  數據庫默認管理用戶,擁有DBA角色權限

  創建腳本:?/rdbms/admin/sql.bsq

  建議創建後立即修改密碼

  此用戶不能被刪除

  

  ·OUTLN/OUTLN

  優化計劃的存儲大綱用戶

  創建腳本:?/rdbms/admin/sql.bsq

  建議創建後立即修改密碼

  此用戶不能被刪除

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

  ·SCOTT/TIGER, ADAMS/WOOD, JONES/STEEL, CLARK/CLOTH and BLAKE/PAPER.

  實驗、測試用戶,含有例表EMP與DEPT

  創建腳本:?/rdbms/admin/utlsampl.sql

  可以修改密碼

  用戶可以被刪除,在產品環境建議刪除或鎖定

  

  ·HR/HR (Human Resources), OE/OE (Order Entry), SH/SH (Sales History).

  實驗、測試用戶,含有例表EMPLOYEES與DEPARTMENTS

  創建腳本:?/demo/schema/mksample.sql

  可以修改密碼

  用戶可以被刪除,在產品環境建議刪除或鎖定

  

  ·DBSNMP/DBSNMP

  Oracle Intelligent agent

  創建腳本:?/rdbms/admin/catsnmp.sql, called from catalog.sql

  可以改變密碼--需要放置新密碼到snmp_rw.ora文件

  如果不需要Intelligent Agents,可以刪除

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

  以下用戶都是可選安裝用戶,如果不需要,就不需要安裝

  

  ·CTXSYS/CTXSYS

  Oracle interMedia (ConText Cartridge)管理用戶

  創建腳本:?/ctx/admin/dr0csys.sql

  

  ·TRACESVR/TRACE

  Oracle Trace server

  創建腳本:?/rdbms/admin/otrcsvr.sql

  

  ·ORDPLUGINS/ORDPLUGINS

  Object Relational Data (ORD) User used by Time SerIEs, etc.

  創建腳本:?/ord/admin/ordinst.sql

  

  ·ORDSYS/ORDSYS

  Object Relational Data (ORD) User used by Time SerIEs, etc

  創建腳本:?/ord/admin/ordinst.sql

  

  ·DSSYS/DSSYS

  Oracle Dynamic Services and Syndication Server

  創建腳本:?/ds/sql/dssys_init.sql

  

  ·MDSYS/MDSYS

  Oracle Spatial administrator user

  創建腳本:?/ord/admin/ordinst.sql

  

  ·AURORA$ORB$UNAUTHENTICATED/INVALID

  Used for users who do not authenticate in Aurora/ORB

  創建腳本:?/javavm/install/init_orb.sql called from ?/Javavm/install/initjvm.sql

  

  ·PERFSTAT/PERFSTAT

  Oracle Statistics Package (STATSPACK) that supersedes UTLBSTAT/UTLESTAT

  創建腳本:?/rdbms/admin/statscre.sql

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved