ORACLE之常用FAQ V1.0一(構架體系)(轉)
[Q]ORACLE的有那些資料型別
[A]常見的資料型別有
CHAR固定長度字元域,最大長度可達2000個位元組
NCHAR多位元組字符集的固定長度字元域,長度隨字符集而定,最多為2000個字元或2000個位元組
VARCHAR2可變長度字元域,最大長度可達4000個字元
NVARCHAR2多位元組字符集的可變長度字元域,長度隨字符集而定,最多為4000個字元或4000個位元組
DATE用於儲存全部日期的固定長度(7個位元組)字元域,時間作為日期的一
部分儲存其中。除非透過設定init.ora檔案的NLS_DATE_FORMAT
引數來取代日期格式,否則查詢時,日期以DD-MON-YY格式表示,如13-APR-99表示1999.4.13
NUMBER可變長度數值列,允許值為0、正數和負數。NUMBER值通常以4
個位元組或更少的位元組儲存,最多21位元組
LONG可變長度字元域,最大長度可到2GB
RAW表示二進位制資料的可變長度字元域,最長為2000個位元組
LONGRAW表示二進位制資料的可變長度字元域,最長為2GB
MLSLABEL只用於TrustedOracle,這個資料型別每行使用2至5個位元組
BLOB二進位制大物件,最大長度為4GB
CLOB字元大物件,最大長度為4GB
NCLOB多位元組字符集的CLOB資料型別,最大長度為4GB
BFILE外部二進位制檔案,大小由作業系統決定
ROWID表示RowID的二進位制資料,Oracle8RowID的數值為10個位元組,在Oracle7中使用的限定
RowID格式為6個位元組
UROWID用於資料定址的二進位制資料,最大長度為4000個位元組
[Q]Oracle有哪些常見關鍵字,不能被用於物件名
[A]以8i版本為例,一般保留關鍵字不能用做物件名
ACCESS ADD ALL ALTER AND ANY AS ASC AUDIT BETWEEN
BY CHAR CHECK CLUSTER COLUMN COMMENT COMPRESS
CONNECT CREATE CURRENT DATE DECIMAL DEFAULT DELETE
DESC DISTINCT DROP ELSE EXCLUSIVE EXISTS FILE FLOAT
FOR FROM GRANT GROUP HAVING IDENTIFIED IMMEDIATE
IN INCREMENT INDEX INITIAL INSERT INTEGER INTERSECT
INTO IS LEVEL LIKE LOCK LONG MAXEXTENTS MINUS MLSLABEL
MODE MODIFY NOAUDIT NOCOMPRESS NOT NOWAIT NULL
NUMBER OF OFFLINE ON ONLINE OPTION OR ORDER PCTFREE
PRIOR PRIVILEGES PUBLIC RAW RENAME RESOURCE REVOKE
ROW ROWID ROWNUM ROWS SELECT SESSION SET SHARE
SIZE SMALLINT START SUCCESSFUL SYNONYM SYSDATE TABLE
THEN TO TRIGGER UID UNION UNIQUE UPDATE USER VALIDATE
VALUES VARCHAR VARCHAR2 VIEW WHENEVER WHERE WITH
詳細資訊可以檢視v$reserved_words檢視
[Q]怎麼檢視資料庫版本
[A]select * from v$version
包含版本資訊,核心版本資訊,位數資訊(32位或64位)等
至於位數資訊,在linux/unix平臺上,可以透過file檢視,如
file $ORACLE_HOME/bin/oracle
[Q]怎麼檢視資料庫引數
[A]show parameter 引數名
如透過show parameter spfile可以檢視9i是否使用spfile檔案
或者select * from v$parameter
除了這部分引數,Oracle還有大量隱含引數,可以透過如下語句檢視:
SELECT NAME
,VALUE
,decode(isdefault, 'TRUE','Y','N') as "Default"
,decode(ISEM,'TRUE','Y','N') as SesMod
,decode(ISYM,'IMMEDIATE', 'I',
'DEFERRED', 'D',
'FALSE', 'N') as SysMod
,decode(IMOD,'MODIFIED','U',
'SYS_MODIFIED','S','N') as Modified
,decode(IADJ,'TRUE','Y','N') as Adjusted
,description
FROM ( --GV$SYSTEM_PARAMETER
SELECT x.inst_id as instance
,x.indx+1
,ksppinm as NAME
,ksppity
,ksppstvl as VALUE
,ksppstdf as isdefault
,decode(bitand(ksppi***/256,1),1,'TRUE','FALSE') as ISEM
,decode(bitand(ksppi***/65536,3),
1,'IMMEDIATE',2,'DEFERRED','FALSE') as ISYM
,decode(bitand(ksppstvf,7),1,'MODIFIED','FALSE') as IMOD
,decode(bitand(ksppstvf,2),2,'TRUE','FALSE') as IADJ
,ksppdesc as DESCRIPTION
FROM x$ksppi x
,x$ksppsv y
WHERE x.indx = y.indx
AND substr(ksppinm,1,1) = '_'
AND x.inst_id = USERENV('Instance')
)
ORDER BY NAME
[Q]怎麼樣檢視資料庫字符集
[A]資料庫伺服器字符集select * from nls_database_parameters,
其來源於props$,是表示資料庫的字符集。
客戶端字符集環境select * from nls_instance_parameters,其來源
於v$parameter,表示客戶端的字符集的設定,可能是引數檔案,環境
變數或者是登錄檔會話字符集環境
select * from nls_session_parameters,
其來源於v$nls_parameters,表示會話自己的設定,可能是會話的環境
變數或者是alter session完成,如果會話沒有特殊的設定,將與
nls_instance_parameters一致。
客戶端的字符集要求與伺服器一致,才能正確顯示資料庫的非Ascii字元。
如果多個設定存在的時候,alter session>環境變數>登錄檔>引數檔案
字符集要求一致,但是語言設定卻可以不同,語言設定建議用英文。如字
符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
[Q]怎麼樣修改字符集
[A]8i以上版本可以透過alter database來修改字符集,但也只限於子集
到超集,不建議修改props$表,將可能導致嚴重錯誤。
Startup nomount;
Alter database mount exclusive;
Alter system enable restricted session;
Alter system set job_queue_process=0;
Alter database open;
Alter database character set zhs16gbk;
[Q]怎樣建立基於函式索引
[A]8i以上版本,確保
Query_rewrite_enabled=true
Query_rewrite_integrity=trusted
Compatible=8.1.0以上
Create index indexname on table (function(field));
[Q]怎麼樣移動表或表分割槽
[A]移動表的語法
Alter table tablename move
[Tablespace new_name
Storage(initial 50M next 50M
pctincrease 0 pctfree 10 pctused 50 initrans 2) nologging]
移動分割槽的語法
alter table tablename move (partition partname)
[update global indexes]
之後之後必須重建索引
Alter index indexname rebuild如果表有Lob段,那麼正常的Alter不能移動Lob段到別的表空間,而僅僅是移動了表段,可以採用如下的方法移動Lob段
alter table tablename move
lob(lobsegname) store as (tablespace newts);
[Q]怎麼獲得當前的SCN
[A]9i以下版本
select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe;
如果是9i以上版本,還可以透過以下語句獲取
select dbms_flashback.get_system_change_number from dual;
[Q]ROWID的結構與組成
[A]8以上版本的ROWID組成
OOOOOOFFFBBBBBBRRR
8以下ROWID組成(也叫受限Rowid)
BBBBBBBB.RRRR.FFFF
其中,O是物件ID,F是檔案ID,B是塊ID,R是行ID
如果我們查詢一個表的ROWID,根據其中塊的資訊,可以知道該表確切
佔用了多少個塊,進而知道佔用了多少資料空間(此資料空間不等於表的分配空間)
[Q]怎麼樣獲取物件的DDL語句
[A]第三方工具就不說了主要說一下9i以上版本的dbms_metadata
1、獲得單個物件的DDL語句
set heading off
set echo off
set feedback off
set pages off
set long 90000
select dbms_metadata.get_ddl('TABLE','TABLENAME','SCAME') from dual;
如果獲取整個使用者的指令碼,可以用如下語句
select dbms_metadata.get_ddl('TABLE',u.table_name) from user_tables u;
當然,如果是索引,則需要修改相關table到index
[Q]如何建立約束的索引在別的表空間上
[A]1、先建立索引,再建立約束
2、利用如下語句建立
create table test
(c1 number constraint pk_c1_id primary keyusing index tablespace useridex,c2 varchar2(10)) tablespace userdate;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-954137/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE之常用FAQ:ORACLE構架體系Oracle
- ORACLE之常用FAQ V1.0Oracle
- itpub上的ORACLE之常用FAQ V1.0(轉)Oracle
- 大型網站架構之:MySpace的體系架構一(轉載)網站架構
- ORACLE之常用FAQ:效能調整Oracle
- ORACLE之常用FAQ:ORACLE網路與安全Oracle
- Oracle體系架構Oracle架構
- ORACLE之常用FAQ:SQL&PL/SQLOracleSQL
- 大型網站架構之:MySpace的體系架構二(轉載)網站架構
- ORACLE之常用FAQ:備份與恢復Oracle
- zt_oracle體系架構Oracle架構
- 基於golang分散式爬蟲系統的架構體系v1.0Golang分散式爬蟲架構
- oracle體系結構(轉)Oracle
- oracle架構之系統全域性區Oracle架構
- 【DATAGUARD】Oracle Dataguard體系架構詳解Oracle架構
- Oracle Golden Gate體系架構詳解OracleGo架構
- Oracle Data block 的物理結構-體系架構OracleBloC架構
- Oracle體系結構之-物理結構Oracle
- Oracle體系結構之-記憶體結構Oracle記憶體
- 架構之:軟體架構漫談架構
- Oracle 體系結構介紹(轉)Oracle
- Oracle體系結構之-Oracle後臺程式Oracle
- 資料結構FAQ (轉)資料結構
- 一文搞懂MySQL體系架構!!MySql架構
- 軟體架構模式之微服務架構架構模式微服務
- MySQL體系架構MySql架構
- SQLite體系架構SQLite架構
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- 轉載:Oracle iLearning FAQOracle
- Oracle記憶體詳解之一 整體架構Oracle記憶體架構
- 防火牆三大體系架構前景分析(轉)防火牆架構
- Oracle體系結構:記憶體結構和程式結構(轉)Oracle記憶體
- PetShop的系統架構設計(一)(轉)架構
- Tomcat 體系架構Tomcat架構
- JavaEE體系架構概述Java架構
- Solr體系架構圖Solr架構
- RAC體系架構理解架構
- oracle架構之後臺程式Oracle架構