24-Oracle入門之Linux下的Oracle命令大全
阿新 • • 發佈:2019-01-26
一,啟動
1.#su - oracle 切換到oracle使用者且切換到它的環境
2.$lsnrctl status 檢視監聽及資料庫狀態
3.$lsnrctl start 啟動監聽
4.$sqlplus / as sysdba 以DBA身份進入sqlplus
5.SQL>startup 啟動db
二,停止
1.#su - oracle 切換到oracle使用者且切換到它的環境
2.$lsnrctl stop 停止監聽
3.$sqlplus / as sysdba 以DBA身份進入sqlplus
4.SQL>SHUTDOWN IMMEDIATE 關閉db
其中startup和shutdowm還有其他一些可選引數,有興趣可以另行查閱
三,檢視初始化引數及修改
1.#su - oracle 切換到oracle使用者且切換到它的環境
2.$sqlplus / as sysdba 以DBA身份進入sqlplus
3.SQL>show parameter session; 檢視所接受的session數量
######################################################
Oracle process與session2008年12月29日 星期一 15:47
Connected to Oracle Database 10g Release 10.1.0.5.0
Connected as ifsapp
SQL> show parameter session
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
session_cached_cursors integer 0
session_max_open_files integer 10
sessions integer 225
shared_server_sessions integer
SQL> show parameters processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 3
log_archive_max_processes integer 2
processes integer 200
SQL> alter system set processes=600 scope=both;
SQL>
SQL> alter system set processes=600 scope=both;
alter system set processes=600 scope=both
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set sessions=600 scope=both;
alter system set sessions=600 scope=both
ORA-02095: specified initialization parameter cannot be modified
SQL>
SQL> alter system set processes=600 scope=spfile;
System altered
SQL> show parameters processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 3
log_archive_max_processes integer 2
processes integer 200
SQL> alter system set processes=600 scope=memory;
alter system set processes=600 scope=memory
ORA-02095: specified initialization parameter cannot be modified
重啟資料庫之後生效:
SQL> show parameters processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 3
log_archive_max_processes integer 2
processes integer 600
SQL> show parameter session
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
session_cached_cursors integer 0
session_max_open_files integer 10
sessions integer 665
shared_server_sessions integer
修改Oracle process 和 session 的方法
先備份spfile
1.通過SQLPlus修改
Oracle的sessions和processes的關係是
sessions=1.1*processes + 5
使用sys,以sysdba許可權登入:
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ---------------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL> alter system set processes=400 scope = spfile;
系統已更改。
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL> create pfile from spfile;
檔案已建立。
重啟資料庫,OK!
【注:sessions是個派生值,由processes的值決定,公式sessions=1.1*process + 5】
2.通過修改oracle配置檔案進行修改
修改SPFILEORCL.ORA檔案中的processes的值。8.1.5中是init.ora檔案,在9i中修改init.ora檔案是無效的,這個檔案由於是一個二進位制的檔案,不能直接使用notepad此類的編輯器開啟。
否則會報錯誤ORA-27101 Shared memory realm does not exist。使用UltraEdit或者EditPlus之類的可以編輯二進位制檔案的編輯器開啟此檔案(直接編輯二進位制檔案),然後在Windows服務中重新啟動Oracle伺服器即可。
3.通過Oracle Enterprise Manager Console在圖形化管理器中修改
a.以系統管理員的身份登入
b.進入資料庫的例程-配置-一般資訊-所有初始化引數
c.修改processes的值
d.Sessions的值由公式sessions=1.1*process + 5派生得到
一個process可以有0個,1個或多個session
=============================================
Oracle中系統process與session的關係
在實際的應用中,Shared Server中的Process與Oracle資料庫中的Session並不是一一對應的,Shared Server中的Process(一個)對應著Oracle中的一個或者一個以上的Session。
在dedicated server機器上的測試如下:
資料庫的session和作業系統process是對應的。
這表示一個session對應一個process,但是一個process未必對應一個session。
大家可以通過SELECT spid
FROM v$process
WHERE NOT EXISTS ( SELECT 1
FROM v$session
WHERE paddr = addr); 檢視
或
SQL> select count(*) from v$process;
COUNT(*)
----------
53
SQL> select count(*) from v$session;
COUNT(*)
----------
50
oracle10g中只要指定processes,sessions就會自動計算出,所以不需要指定sessions也可,除非對sessions有特殊要求,要求其比oracle自動計算出的sessions要大,那麼就需要手動指定sessions了
#########################################################
4.SQL>alter system set shared_servers=10; 將shared_servers的數量設定為10
四.資料庫連線數目
其中一個數據庫連線需要一個session,它的值由processes決定,session與processes通常有以下關係:
session = 1.1 * processes + 5
不過這也不是絕對的,還要受到CPU和記憶體等硬體條件的限制。另外processes和session不可以通過alter system語句直接修改,只可以修改伺服器引數檔案來更改(Server Parameter File)。如果存在一個server parameter file,通過alter system語句所作的更改將會被持久化到檔案中。
首先以Oracle使用者登入
1、 $/oracle/oracle/app/product/101/bin/dbstart:啟動資料庫。
2、 $/oracle/oracle/app/product/101/bin/dbshut:關閉資料庫。
3、 $/oracle/oracle/app/product/101/bin/dbca:資料庫配置助理,進行資料庫安裝、刪除和修改。
4、 $/oracle/oracle/app/product/101/bin/netca:資料庫網路服務配置管理。
5、 $/oracle/oracle/app/product/101/bin/netmgr:資料庫網路服務和監聽配置助理。
6、 $/oracle/oracle/app/product/101/bin/sqlplus:可執行SQL,進行資料庫操作,並可起停資料庫。執行sqlplus命令,輸入sys使用者和口令登陸以後,執行如下命名:
〉shutdown immediate 立即關閉資料庫
〉startup 啟動資料庫
7、 $/oracle/oracle/app/product/101/bin/lsnrctl start:啟動資料庫監聽
$/oracle/oracle/app/product/101/bin/lsnrctl stop:關閉資料庫監聽
$/oracle/oracle/app/product/101/bin/lsnrctl status:察看資料庫監聽執行狀態
Oracle資料庫命令速查
Oracle資料庫命令速查
Oracle資料庫命令速查
1. 日誌管理
1.1. 強制日誌切換(forcing log switches)
sql> alter system switch logfile;
1.2. 強制執行檢查點(forcing checkpoints)
sql> alter system checkpoint;
1.3. 增加一個重做日誌組(adding online redo log groups)
sql> alter database add logfile [group 4]sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo') size 1m;
1.4. 增加一個重做日誌檔案(adding online redo log members)
sql> alter database add logfile member
sql> '/disk3/log1b.rdo' to group 1,
sql> '/disk4/log2b.rdo' to group 2;
1.5. 改變重做日誌檔名(changes the name of the online redo logfile)
sql> alter database rename file 'c:/oracle/oradata/oradb/redo01.log'
sql> to 'c:/oracle/oradata/redo01.log';
1.6. 刪除重做日誌組(drop online redo log groups)
sql> alter database drop logfile group 3;
1.7. 刪除重做日誌檔案(drop online redo log members)
sql> alter database drop logfile member 'c:/oracle/oradata/redo01.log';
1.8. 清空重做日誌檔案(clearing online redo log files)
sql> alter database clear [unarchived] logfile 'c:/oracle/log2a.rdo';
1.9. 使用logminer分析重做日誌檔案(using logminer analyzing redo logfiles)
a. in the init.ora specify utl_file_dir = ' '
b. sql> execute dbms_logmnr_d.build('oradb.ora','c:\oracle\oradb\log');
c. sql> execute dbms_logmnr_add_logfile('c:\oracle\oradata\oradb\redo01.log',
sql> dbms_logmnr.new);
d. sql> execute dbms_logmnr.add_logfile('c:\oracle\oradata\oradb\redo02.log',
sql> dbms_logmnr.addfile);
e. sql> execute dbms_logmnr.start_logmnr(dictfilename=>'c:\oracle\oradb\log\oradb.ora');
f. sql> select * from v$logmnr_contents(v$logmnr_dictionary,v$logmnr_parameters
sql> v$logmnr_logs);
g. sql> execute dbms_logmnr.end_logmnr;
2. 表空間管理
2.1. 創造表空間(create tablespaces)
sql> create tablespace ts_name datafile 'c:\oracle\oradata\file1.dbf' size 100m ,
sql>'c:\oracle\oradata\file2.dbf' size 100m minimum extent 550k [logging/nologging]sql> default storage (initial 500k next 500k maxextents 500 pctinccease 0)
sql> [online/offline] [permanent/temporary] [extent_management_clause]
2.2. 建立本地管理的表空間(locally managed tablespace)
sql> create tablespace user_data datafile 'c:\oracle\oradata\user_data01.dbf'
sql> size 500m extent management local uniform size 10m;
2.3. 建立臨時表空間(temporary tablespace)
sql> create temporary tablespace temp tempfile 'c:\oracle\oradata\temp01.dbf'
sql> size 500m extent management local uniform size 10m;
2.4. 改變表空間的儲存引數(change the storage setting)
sql> alter tablespace app_data minimum extent 2m;
sql> alter tablespace app_data default storage(initial 2m next 2m maxextents 999);
2.5. 使表空間離線或連線(taking tablespace offline or online)
sql> alter tablespace app_data offline;
sql> alter tablespace app_data online;
2.6. 設定表空間為只讀/可寫模式(read_only tablespace)
sql> alter tablespace app_data read only|write;
2.7. 刪除表空間(droping tablespace)
sql> drop tablespace app_data including contents;
2.8. 允許資料檔案自動擴充套件(enableing automatic extension of data files)
sql> alter tablespace app_data add datafile 'c:\oracle\oradata\app_data01.dbf' size 200m
sql> autoextend on next 10m maxsize 500m;
2.9. 手工改變資料檔案的大小(change the size fo data files manually)
sql> alter database datafile 'c:\oracle\oradata\app_data.dbf' resize 200m;
2.10. 改名錶空間中的資料檔案(Moving data files: alter tablespace)
sql> alter tablespace app_data rename datafile 'c:\oracle\oradata\app_data.dbf
sql> to 'c:\oracle\app_data.dbf';
2.11. 改變資料庫中的資料檔案(moving data files:alter database)
sql> alter database rename file 'c:\oracle\oradata\app_data.dbf' to 'c:\oracle\app_data.dbf';
3. 表
3.1. 建立表(create a table)
sql> create table table_name (column datatype,column datatype]....)
sql> tablespace tablespace_name [pctfree integer] [pctused integer]
sql> [initrans integer] [maxtrans integer]sql> storage(initial 200k next 200k pctincrease 0 maxextents 50)
sql> [logging|nologging] [cache|nocache]
3.2. 複製一個已存在的表(copy an existing table)
sql> create table table_name [logging|nologging] as subquery
3.3. 建立一個臨時表(create temporary table)
sql> create global temporary table xay_temp as select * from xay;
on commit preserve rows/on commit delete rows
3.4. pctfree和pctused引數計算公式
pctfree = (average row size - initial row size) *100 /average row size
pctused = 100-pctfree- (average row size*100/available data space)
這是標準的計算公式。
PCTFREE:指定表內每個資料塊中空間的百分比。 PCTFREE 的值必須介於 0 和 99 之間。如果值為零,表示可以通過插入新行來填充整個塊。預設值為 10。此值表示每個塊中保留著 10% 的空間,用於更新現有的行以及插入新行,每個塊最多可填充到 90%。
PCTUSED:指定為表內每個資料塊維護的已用空間的最小百分比。如果一個塊的已用空間低於 PCTUSED,則可在該塊中插入行。PCTUSED 的值為介於 0 和 99 之間的整數,預設值為 40。
結合 PCTFREE 和 PCTUSED 就可以確定將新行插入到現有資料塊中,還是插入到新塊中。這兩個引數值的和必須小於或等於 100。使用這兩個引數可以更有效地利用表內的空間。
設定 PCTFREE 和 PCTUSED
設定 PCTFREE
PCTFREE 值越高,可為資料庫塊內的更新提供的空間就越大。如果表存在下面兩種情況,則應設定一個更高的值:
? 某些列最初為 NULL,後來更新為某個值
? 某些列由於更新,大小可能增加
PCTFREE 的值越高,塊密度就越低,即每個塊容納的行數就越少。
上面的公式確保塊中有足夠的空閒空間供行增長使用。
設定 PCTUSED
設定 PCTUSED 以確保只有在具備足夠空間來容納一個平均大小的行時才將塊返回到空閒列表中。如果空閒列表中的某個塊沒有足夠的空間來插入一行,Oracle 伺服器將查詢空閒列表中的下一個塊。直到找到具備足夠空間的塊或者到達列表的末尾,這種線性掃描才會結束。使用給定的公式可以增加找到具有所需空閒空間的塊的概率,從而縮短掃描空閒列表的時間。
注:可以使用 ANALYZE TABLE 命令估算平均行大小的值。
注:Oracle9i “自動段空間管理” 功能可替代 PCTUSED、FREELISTS 和 FREELIST GROUPS。
3.5. 改變儲存和塊利用率引數(change storage and block utilization parameter)
sql> alter table table_name pctfree=30 pctused=50 storage(next 500k minextents 2 maxextents 100);
3.6. 手工分配區間(extents)(manually allocating extents)
sql> alter table table_name allocate extent(size 500k datafile 'c:/oracle/data.dbf');
3.7. 改變表的所屬表空間(move tablespace)
sql> alter table employee move tablespace users;
3.8. 釋放表中未用空間(deallocate of unused space)
sql> alter table table_name deallocate unused [keep integer]
3.9. 截斷表(truncate)(truncate a table)
sql> truncate table table_name;
截斷一個表將刪除表中所有行,從而釋放已使用的空間。
對應的索引將被截斷。
(注:truncate table不是DML語句,是DDL語句
另外,truncate 與delete的區別是,delelte不釋放空間,truncate釋放空間。)
3.10. 刪除表(drop a table)
sql> drop table table_name [cascade constraints];
3.11. 刪除列(drop a column)
sql> alter table table_name drop column comments cascade constraints checkpoint 1000;
alter table table_name drop columns continue;
3.12. 標識某一列為未使用(unused)(mark a column as unused)
sql> alter table table_name set unused column comments cascade constraints;
alter table table_name drop unused columns checkpoint 1000;
alter table orders drop columns continue checkpoint 1000
data_dictionary : dba_unused_col_tabs
除將列從表中刪除以外,還可以先將列標記為 “未使用”,以後再刪除。因為沒有刪除資料,所以此操作不回收磁碟空間,因而具有速度比較快的優點。被標為 “未使用” 的列可在以後系統活動較少時從表中刪除。
未使用的列就像不屬於表一樣。查詢時看不到未使用列中的資料。此外,在執行 DESCRIBE 命令時,也不會顯示這些列的名稱和資料型別。使用者可以新增與未使用的列同名的新列。
如果想刪除同一表中的兩列,則可先將列設定為 “未使用” 然後再刪除。在刪除兩列時,表中的所有行都會更新兩次;但如果將這些列設定為 “未使用” 然後再刪除,則所有的行僅更新一次。
4. 索引
4.1. 建立一個基於函式的索引(creating function-based indexes)
sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped);
基於函式的索引(Function-based indexes):
如果在表中要建立索引的一列或多列上使用了函式或表示式,則建立的是基於函式的索引。基於函式的索引預先計算函式或表示式的值,並將結果儲存在索引中。可以將基於函式的索引建立為 B 樹或點陣圖索引。
4.2. 建立一個B樹索引(create a B-tree index)
sql> create [unique] index index_name on table_name(column,.. asc/desc) tablespace
sql> tablespace_name [pctfree integer] [initrans integer] [maxtrans integer]
sql> [logging | nologging] [nosort] storage(initial 200k next 200k pctincrease 0 maxextents 50);
B樹:平衡二叉樹,oracle中用的最多的索引模式,適用於取值唯一性高的情況。只有兩層,非葉級、葉級(指標所在級)
4.3. 索引中pctfree引數計算公式
pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of rows
4.4. 建立一個反向鍵索引(creating reverse key indexes)
sql> create unique index xay_id on xay(a) reverse pctfree 30 storage(initial 200k next 200k pctincrease 0 maxextents 50) tablespace indx;
4.5. 建立點陣圖索引(create bitmap index)
sql> create bitmap index xay_id on xay(a) pctfree 30 storage( initial 200k next 200k pctincrease 0 maxextents 50) tablespace indx;
在下列情況中,點陣圖索引比 B 樹索引更有利:
? 當表包含數百萬行且鍵列的基數很低(即,該列中重複的值很多)時。例如,對於包含護照記錄的表的性別列和婚姻狀況列而言,點陣圖索引比 B 樹索引更適合
? 當查詢經常使用涉及 OR 運算子的多個 WHERE 條件組合時
? 當鍵列上存在只讀或很少的更新操作時
(點陣圖索引適用於取值的唯一性很低的情況)
4.6. 改變索引的儲存引數(change storage parameter of index)
sql> alter index xay_id storage (next 400k maxextents 100);
4.7. 為索引分配空間(allocating index space)
sql> alter index xay_id allocate extent(size 200k datafile 'c:/oracle/index.dbf');8.alter index xay_id deallocate unused;
手動分配索引空間:
在表上進行頻繁的插入操作前,可能需要向索引新增區。新增區可防止索引動態擴充套件並導致效能降低。
(其中指定的資料檔案一定是索引所在表空間的資料檔案)
5. 約束(constraints)
5.1. 將約束定義為立即(immediate)或延遲(deferred)(define constraints as immediate or deferred)
sql> alter session set constraint[s] = immediate/deferred/default;
set constraint[s] constraint_name/all immediate/deferred;
SET CONSTRAINTS 語句用於將特定事務處理的約束設定為 DEFERRED 或 IMMEDIATE。可以使用此語句設定約束名稱列表或約束的模式。SET CONSTRAINTS 模式將一直持續到事務處理完成或者另一個 SET CONSTRAINTS 語句重置模式。SET CONSTRAINTS 語句不允許在觸發器內部使用。
ALTER SESSION 語句還包含將約束設定為 IMMEDIATE 或 DEFERRED 的子句 SET CONSTRAINTS。此命令預設為設定所有 (ALL) 可延遲的約束(不能指定約束名稱列表)。ALTER SESSION SET CONSTRAINTS 語句僅適用於當前的會話。
5.2. 刪除表或表空間時連帶刪除其上的外來鍵(約束)
sql> drop table table_name cascade constraints
sql> drop tablespace tablespace_name including contents cascade constraints
在刪除父表之前,必須先刪除外來鍵。可以使用以下一條語句同時執行這兩個操作:
DROP TABLE table CASCADE CONSTRAINTS
在未刪除或禁用外來鍵之前無法截斷(truncated)父表。
在刪除包含父表的表空間之前,必須先刪除外來鍵。可使用下列命令完成該操作:
DROP TABLESPACE tablespace INCLUDING CONTENTS
CASCADE CONSTRAINTS
如果從父表中刪除行時沒有使用 DELETE CASCADE 選項,Oracle 伺服器必須確保子表中的行不包含相應的外來鍵。同樣,僅當子行中不包含舊鍵值時,才允許更新父鍵。如果子表的外來鍵上沒有索引,則 Oracle 伺服器鎖定子表並禁止更改以確保引用完整性。如果表上有索引,則可通過鎖定索引項並避免子表上有更具限制性的鎖來維護引用完整性。如果必須從不同的事務處理同時更新兩個表,則在外來鍵列上建立索引。
5.3. 在建立表時定義約束(define constraints while create a table)
sql> create table xay(id number(7) constraint xay_id primary key deferrable
sql> using index storage(initial 100k next 100k) tablespace indx);
primary key/unique/references table(column)/check
5.4. 啟用當前禁用的約束(enable constraints)
sql> alter table xay enable novalidate constraint xay_id;
啟用 NOVALIDATE:
對於當前已有索引的 PRIMARY KEY 和 UNIQUE 約束,啟用 NOVALIDATE 約束比啟用 VALIDATE 約束要快得多,這是因為,如果約束是可延遲的,則不檢查現有資料是否違反約束。如果使用該選項啟用約束,則不要求鎖定表。這種方法適合表上有許多 DML 活動的情況,如在 OLTP 環境中。
但是,如果需要建立索引,使用這種啟用約束的方法並不能比 ENABLE VALIDATE 帶來更多的好處,因為 Oracle 伺服器在建立索引時鎖定表。
5.5. 啟用約束(enable constraints)
sql> alter table xay enable validate constraint xay_id;
6. 載入(load)資料
6.1. 使用insert語句從另一張表中“直接載入”資料到新表(loading data using direct_load insert)
sql> insert /*+append */ into emp nologging
sql> select * from emp_old;
6.2. 使用insert方式的“並行直接載入”資料(parallel direct-load insert)
sql> alter session enable parallel dml;
sql> insert /*+parallel(emp,2) */ into emp nologging
sql> select * from emp_old;
6.3. 使用sql*loader載入資料(using sql*loader)
sql> sqlldr scott/tiger \
sql> control = ulcase6.ctl \
sql> log = ulcase6.log direct=true
7. 重整資料(reorganizing data)
7.1. 使用export倒出資料(using export)
$exp scott/tiger tables(dept,emp) file=c:\emp.dmp log=exp.log compress=n direct=y
7.2. 使用import倒入資料(using import)
$imp scott/tiger tables(dept,emp) file=emp.dmp log=imp.log ignore=y
7.3. 以移動表空間(transporting)方式匯入匯出一個表(transporting a tablespace)
sql>alter tablespace sales_ts read only;
$exp sys/.. file=xay.dmp transport_tablespace=y tablespace=sales_ts
triggers=n constraints=n
$copy datafile
$imp sys/.. file=xay.dmp transport_tablespace=y datafiles=(/disk1/sles01.dbf,/disk2
/sles02.dbf)
sql> alter tablespace sales_ts read write;
7.4. checking transport set
sql> DBMS_tts.transport_set_check(ts_list =>'sales_ts' ..,incl_constraints=>true);
在表transport_set_violations 中檢視
sql> dbms_tts.isselfcontained 為true 是,表示自包含
8. 管理口令及相關資源(managing password security and resources)
8.1. 修改使用者帳號加/解鎖及口令(controlling account lock and password)
sql> alter user juncky identified by oracle account unlock;
8.2. user_provided password function
sql> function_name(userid in varchar2(30),password in varchar2(30),
old_password in varchar2(30)) return boolean
8.3. 建立概要檔案:設定口令引數(create a profile : password setting)
sql> create profile grace_5 limit failed_login_attempts 3
sql> password_lock_time unlimited password_life_time 30
sql>password_reuse_time 30 password_verify_function verify_function
sql> password_grace_time 5;
8.4. 修改概要檔案(altering a profile)
sql> alter profile default limit
sql> failed_login_attempts 3
sql> password_life_time 60;
8.5. 刪除概要檔案(drop a profile)
sql> drop profile grace_5 [cascade];
8.6. 建立概要檔案:設定資源限額(create a profile : resource limit)
sql> create profile developer_prof limit sessions_per_user 2
sql> cpu_per_session 10000 idle_time 60 connect_time 480;
8.7. view => resource_cost : alter resource cost
dba_Users,dba_profiles
8.8. 允許資源限額(enable resource limits)
sql> alter system set resource_limit=true;
9. 管理使用者(Managing users)
9.1. 建立使用者(資料庫認證方式)(create a user: database authentication)
sql> create user juncky identified by oracle default tablespace users temporary tablespace temp quota 10m/unlimited on data password expire [account lock|unlock] [profile profilename|default];
9.2. 修改使用者的表空間限額(change user quota on tablespace)
sql> alter user juncky quota 0 on users;
9.3. 刪除使用者(drop a user)
sql> drop user juncky [cascade];
9.4. 監控使用者的檢視(monitor user)
view: dba_users , dba_ts_quotas
10. 管理許可權(managing privileges)
10.1. 系統許可權檢視(system privileges:)
view => system_privilege_map ,dba_sys_privs,session_privs
10.2. 授權系統許可權(grant system privilege)
sql> grant create session,create table to managers;
sql> grant create session to scott with admin option;
with admin option can grant or revoke privilege from any user or role;
10.3. sysdba和sysoper的許可權(sysdba and sysoper privileges:)
sysoper: startup,shutdown,alter database open|mount,alter database backup controlfile,alter tablespace begin/end backup,recover database,alter database archivelog,restricted session
sysdba:sysoper privileges with admin option,create database,recover database until
10.4. 口令檔案成員檢視(password file members:)
view:=> v$pwfile_users
10.5. O7_dictionary_accessibility =true
restriction access to view or tables in other schema
10.6. 撤銷系統許可權(revoke system privilege)
sql> revoke create table from karen;
sql> revoke create session from scott;
10.7. 授權物件許可權(grant object privilege)
sql> grant execute on dbms_pipe to public;
sql> grant update(first_name,salary) on employee to karen with grant option;
10.8. 顯示物件許可權的檢視(display object privilege ):
view => dba_tab_privs, dba_col_privs
10.9. 撤銷使用者的物件許可權(revoke object privilege)
sql> revoke execute on dbms_pipe from scott [cascade constraints];
10.10. 審計記錄檢視(audit record view) :
=> sys. aud$
10.11. 保護審計線索(protecting the audit trail)
sql> audit delete on sys.aud$ by access;
保護審計線索:
應保護審計線索,以防新增、修改或刪除審計資訊。發出以下命令:
SQL> AUDIT delete ON sys.aud$ BY ACCESS;
可防止審計線索未經授權即被刪除;只有 DBA 才擁有 DELETE_CATALOG_ROLE 角色。
10.12. 語句審計(statement auditing)
sql> audit user;
語句審計:該種審計對 SQL 語句進行選擇性審計,而並不審計語句針對的特定方案物件。例如,AUDIT TABLE 跟蹤多個 DDL 語句,而與這些語句針對的表無關。可以設定語句審計,以便對資料庫中的所選使用者或每個使用者進行審計。
10.13. 許可權審計(privilege auditing)
sql> audit select any table by summit by access;
許可權審計:
該種審計對執行操作應具有的相應系統許可權進行選擇性審計,如 AUDIT CREATE ANY TRIGGER。可以設定許可權審計對資料庫中的所選使用者或每個使用者進行審計。
10.14. 方案物件審計(schema object auditing)
sql> audit lock on summit.employee by access whenever successful;
方案物件審計:
該種審計對特定方案物件上的特定語句進行選擇性審計,如 AUDIT SELECT ON HR.EMPLOYEES。方案物件審計始終適用於所有資料庫使用者。
11. 審計選項檢視(view audit option) :
view=> all_def_audit_opts,dba_stmt_audit_opts,dba_priv_audit_opts,dba_obj_audit_opts
12. 審計結果檢視(view audit result):
view=> dba_audit_trail,dba_audit_exists,dba_audit_object,dba_audit_session,dba_audit_statement
13. 管理角色(manager role)
13.1. 建立角色(create roles)
sql> create role sales_clerk;
sql> create role hr_clerk identified by bonus;
sql> create role hr_manager identified externally;
13.2. 修改角色(modify role)
sql> alter role sales_clerk identified by commission;
sql> alter role hr_clerk identified externally;
sql>alter role hr_manager not identified;
13.3. 分配角色給使用者(assigning roles)
sql> grant sales_clerk to scott;
sql> grant hr_clerk to hr_manager;
sql> grant hr_manager to scott with admin option;
13.4. 建立預設角色(establish default role)
sql> alter user scott default role hr_clerk,sales_clerk;
sql> alter user scott default role all;
sql> alter user scott default role all except hr_clerk;
sql> alter user scott default role none;
13.5. 允許和禁止角色(enable and disable roles)
sql> set role hr_clerk;
sql> set role sales_clerk identified by commission;
sql> set role all except sales_clerk;
sql> set role none;
13.6. 撤銷使用者的角色(remove role from user)
sql> revoke sales_clerk from scott;
sql> revoke hr_manager from public;
13.7. 刪除角色(remove role)
sql> drop role hr_manager;
13.8. 顯示角色資訊的檢視(display role information)
view: =>dba_roles,dba_role_privs,role_role_privs,dba_sys_privs,role_sys_privs,role_tab_privs,session_roles
14. 備份和恢復(BACKUP and RECOVERY)
14.1. 備份恢復用相關檢視
v$sga,v$instance,v$process,v$bgprocess,v$database,v$datafile,v$sgastat
14.2. 為Rman設定初始化引數
Rman need set dbwr_IO_slaves or backup_tape_IO_slaves and large_pool_size
14.3. 監控並行回滾的檢視(Monitoring Parallel Rollback)
> v$fast_start_servers , v$fast_start_transactions
14.4. 執行一個冷備份(perform a closed database backup (noarchivelog))
> shutdown immediate
> cp files /backup/
> startup
14.5. 改變資料檔案的位置(restore to a different location)
> connect system/manager as sysdba
> startup mount
> alter database rename file '/disk1/../user.dbf' to '/disk2/../user.dbf';
> alter database open;
14.6. 恢復命令(recover)語法 (recover syntax)
--recover a mounted database
>recover database;
>recover datafile '/disk1/data/df2.dbf';
>alter database recover database;
--recover an opened database
>recover tablespace user_data;
>recover datafile 2;
>alter database recover datafile 2;
14.7. 設定自動應用重做日誌檔案(how to apply redo log files automatically)
>set autorecovery on
>recover automatic datafile 4;
14.8. 完全恢復(complete recovery:)
--method 1(mounted databae)
>copy c:\backup\user.dbf c:\oradata\user.dbf
>startup mount
>recover datafile 'c:\oradata\user.dbf;
>alter database open;
--method 2(opened database,initially opened,not system or rollback datafile)
>copy c:\backup\user.dbf c:\oradata\user.dbf (alter tablespace offline)
>recover datafile 'c:\oradata\user.dbf' or
>recover tablespace user_data;
>alter database datafile 'c:\oradata\user.dbf' online or
>alter tablespace user_data online;
--method 3(opened database,initially closed not system or rollback datafile)
>startup mount
>alter database datafile 'c:\oradata\user.dbf' offline;
>alter database open
>copy c:\backup\user.dbf d:\oradata\user.dbf
>alter database rename file 'c:\oradata\user.dbf' to 'd:\oradata\user.dbf'
>recover datafile 'e:\oradata\user.dbf' or recover tablespace user_data;
>alter tablespace user_data online;
--method 4(loss of data file with no backup and have all archive log)
>alter tablespace user_data offline immediate;
>alter database create datafile 'd:\oradata\user.dbf' as 'c:\oradata\user.dbf''
>recover tablespace user_data;
>alter tablespace user_data online
14.9. 對一個開啟的資料庫進行備份(perform an open database backup)
> alter tablespace user_data begin backup;
> copy files /backup/
> alter database datafile '/c:/../data.dbf' end backup;
> alter system switch logfile;
14.10. 備份一個控制檔案(backup a control file)
> alter database backup controlfile to 'control1.bkp';
> alter database backup controlfile to trace;
14.11. 非歸檔模式下的恢復(recovery (noarchivelog mode))
> shutdown abort
> cp files
> startup
14.12. 備份模式下的檔案恢復(recovery of file in backup mode)
>alter database datafile 2 end backup;
14.13. 清空重做日誌檔案(clearing redo log file)
>alter database clear unarchived logfile group 1;
>alter database clear unarchived logfile group 1 unrecoverable datafile;
14.14. 重做日誌的恢復(刪除與重建)(redo log recovery)
>alter database add logfile group 3 'c:\oradata\redo03.log' size 1000k;
>alter database drop logfile group 1;
>alter database open;
or >cp c:\oradata\redo02.log' c:\oradata\redo01.log
>alter database clear logfile 'c:\oradata\log01.log';
Oracle資料庫手邊命令
1、得到資料庫名和建立日期
SELECT name, created, log_mode, open_mode FROM v$database;
2、ORACLE資料庫的計算機的主機名,ORACLE資料庫的例項名及ORACLE資料庫管理系統的版本資訊
SELECT host_name, instance_name, version FROMv$instance;
3、為了知道oracle資料庫版本的一些特殊資訊
select * from v$version;
4、獲取控制檔名字
select * from v$controlfile;
5、得到Oracle資料庫的重做日誌配置資訊
SELECT group#, members, bytes, status, archived FROM v$log;
select GROUP#,MEMBER from v$logfile;
6、獲取oracle的每個重做日誌(成員)檔案所存放的具體位置
select * from v$logfile;
7、知道ORACLE資料庫的備份和恢復策略和歸檔檔案的具體位置
archive log list
8、知道ORACLE資料庫中到底有多少表空間以及每個表空間的狀態
select tablespace_name, block_size, status, contents, logging from dba_tablespaces;
select tablespace_name, status from dba_tablespaces;
9、知道每個表空間存在哪個磁碟上以及檔案的名字等資訊
SELECT file_id, file_name, tablespace_name, status, bytes from dba_data_files;
select file_name, tablespace_name from dba_data_files;
10、知道Oracle資料庫系統上到底有多少使用者和都是什麼時候建立的
select username,created from dba_users;
select username, DEFAULT_TABLESPACE from dba_users;
11、從控制檔案中取出資訊涉及到以下一些相關的命令
select * from v$archived
select * from v$archived_log
select * from v$backup
select * from v$database
select * from v$datafile
select * from v$log
select * from v$logfile
select * from v$loghist
select * from v$tablespace
select * from v$tempfile
12、控制檔案由兩大部份組成:可重用的部份和不可重用的部分。可重用的部分的大小可用CONTROL_FILE_RECORD_KEEP_TIME引數來控制,該引數的預設值為7天,即可重用的部份的內容保留7天,一週之後這部份的內容可能被覆蓋。可重用的部份是供恢復管理器來使用的,這部份的內容可以自動擴充套件。Oracle資料庫管理員可以使用CREAT DATABASE或CREAT CONTROLFILE語句中的下列關鍵字(引數)來間接影響不可重用的部份的大小:
MAXDATAFILES
MAXINSTANCES
MAXLOGFILES
MAXLOGHISTORY
MAXLOGMEMBERS
13、檢視控制檔案的配置
SELECT type, record_size, records_total, records_used FROM v$controlfile_record_section;
14、如果您的顯示被分成了兩部分,您需要使用類似於set pagesize 100的SQL*Plus命令先格式化輸出。有關的格式化輸出命令有以下這些:
record_size: 為每個記錄的位元組數。
records_total:為該段所分配的記錄個數。
records_used:為該段所使用的記錄個數。
15、知道控制檔案中的所有資料檔案(DATAFILE),表空間(TABLESPACE),和重做日誌(REDO LOG)所使用的記錄情況
SELECT type, record_size, records_total, records_used
FROM v$controlfile_record_section
WHERE type IN ( 'DATAFILE', 'TABLESPACE', 'REDO LOG');
16、獲取控制檔名字
select value from v$parameter where name ='control_files';
或者:select * from v$controlfile
17、如何在一個已經安裝的Oracle資料庫中新增或移動控制檔案呢?
以下是在一個已經安裝的Oracle資料庫中新增或移動控制檔案的具體步驟:
a、利用資料字典v$controlfile來獲取現有控制檔名字。
b、正常關閉Oracle資料庫。
c、將新的控制檔名新增到引數檔案的CONTROL_FILES引數中。
d、使用作業系統的複製命令將現有控制檔案複製到指定位置。
e、重新啟動Oracle資料庫。
f、利用資料字典v$controlfile來驗證新的控制檔名字是否正確。
g、如果有誤重做上述操作,如果無誤刪除無用的舊控制檔案。
注:如果您使用了伺服器初始化引數檔案(SPFILE),您不能關閉Oracle資料庫而且應該在第3步使用alter system set control_files的Oracle命令來改變控制檔案的位置。
SQL> alter system set control_files =
'D:\Disk3\CONTROL01.CTL',
'D:\Disk6\CONTROL02.CTL',
'D:\Disk9\CONTROL03.CTL' SCOPE=SPFILE;
18、由於控制檔案是一個極其種要的檔案,除了以上所說的將控制檔案的多個副本存在不同的硬碟上的保護措施外,在資料庫的結構變化之後,您應立即對控制檔案進行備份。可以用Oracle命令來對控制檔案進行備份:
alter database backup controlfile to 'D:\backup\control.bak';
19、您也可將備份到一個追蹤檔案中。該追蹤檔案包含有重建控制檔案所需的SQL語句。可使用以下SQL語句來產生這一追蹤檔案:
alter database backup controlfile to trace;
20、正常關閉oracle命令
shutdown immeditae
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/foresail/archive/2007/10/26/1844695.aspx
Oracle資料庫命令集
1、sqlplus啟動方式:
Dos下執行sqlplus 使用者名稱/密碼 as sysdba
例如:c:>sqlplus sys/password AS sydba(系統帳戶)
或者:c:>sqlplus scott/password
2、使用者連線(切換)操作:
sql>conn Scott/password(預設為tiger)
注:conn與connect使用方法一樣
3、手動解鎖:
sql>ALTER USER scott Account Unlock;(將scott帳戶解鎖)
4、檢視使用者(兩種方式):
sql>select user form dual;
sql>show user;
5、sql幫助:
sql>help index;
6、資料庫解除安裝和載入
sql>shutdown [NORMAL][IMMEDLATE][ABORT][TRANSACTIONAL];
sql>startup;
7、查詢select操作:
sql>select *from dept;
sql>select dname,loc from dept;
sql>select *from emp where deptno=20;
注:在sql中,字串使用單引號。
8、欄位別名的定義:
sql>select hiredate AS 僱用日期 from emp
AS可以省略,但是推薦使用。
9、字串連線
sql>selcet dname||loc from dept;
10、提取表中的前N個記錄:
sql>select *from emp where rownum<=N;
11、null的使用:
sql>select ename,job from emp where comm is[not] null;
注:null參與數學表示式計算時,結果一定為null。
12、like關鍵字(字串匹配):
sql>select dname from dept where dname like '_S%';
注:_代表單個字元,%代表多個字元。
13、in關鍵字:
sql>select dname,dpart,log from dept where deptno in(10,20);
注:只選擇輸出deptno值為10或20的記錄。
類似於:where deptno=10 or deptno=20;
14、between and關鍵字:
sql>select * from dept where deptno between 10 and 30;
包括10和30.
15、set關鍵字:
sql>set pagesize 10;
sql>set linesize 100;
16、連線查詢:
求解sal大於平均值的記錄
sql>select * from emp
where sal>(select avg(sal) from emp);
17、聯合查詢:
欄位個數和型別必須保持一致,合併為一個查詢結果。
sql>select empno,ename from emp
union[ALL]
select deptno,dname from dept;
ALL:代表可以有重複記錄。
18、內連線查詢:
內連線查詢分為2中:一是在form後直接加表名,中間用逗號分隔。
sql>select * from emp e,dept d (e d為表的別名)
where e.deptno=d.deptno;
二是使用join關鍵字,條件使用ON
sql>select * from emp join dept
ON emp.deptno=dept.deptno;
19、自連線查詢:將一個表起不同的別名,使其在邏輯上成為兩張表。
sql>select * from emp a,emp b
where a.mgr=b.empno;
20、外連線查詢:
左外連線查詢:left join 左表全部顯示
右外連線查詢:right join右表全部顯示
全外連線查詢:full join 左右表均全部顯示
以左外連線為例:
sql>select * from dept
left join emp
on dept.deptno=emp.deptno;
左表(dept)資訊全部顯示,右表(emp)中不符合條件的記錄為null。
21、集合函式(數學表示式):
sql>select AVG(sal) from emp;
sql>select Count([distinct]sal) from emp;
distinct表示不計算重複資料。
22、插入記錄:
sql>Insert Into tablename (欄位列表) values(屬性類表);
sql>Insert Into emp(eno,ename,dept) values(1,'java',20);
23、修改(更新)記錄:
sql>UpDate emp set deptno=80
where deptno=81;
24、刪除記錄:
sql>Delete from tablename where 條件
sql>Delete from emp where deptno=80;
25、建立檢視:注意許可權,本操作是在sys帳戶下進行的。
sql>create view view_name(ename,dname)
AS
select emp.ename,dept.dname
from scott.emp,scott.dept
with read only;
sql>select * from view_name;
26、同義詞
create synonym 同義詞名稱 for 原物件
sql>create synonym empbak for scott.emp;
sql>select * from empbak;
27、修改物件(表、檢視等)結構ALTER:
sql>alter table 表名 add("book_id"VARCHAR2(10));//新增欄位,注意雙引號
sql>alter table 表名 modify("book_id",not null);
28、修改表的操作
sql>rename 原表名 to 新表名//修改表名
sql>select * from tab;//查詢當前使用者表資訊
sql>desc 表名//查看錶結構
sql>drop table 表名//刪除表
sql>truncate table 表名//刪除表中資料,保留表結構
29、事務處理
sql>commit 成功提交事務
sql>rollback 返回到事務未開始的狀態
sql>savepoint A 建立事務的儲存點
sql>rollback to [savepoint] A 返回儲存點
30、EXISTS關鍵字
sql>select * from dept where EXISTS (select deptno from emp);
31、從另外一個表中拷貝記錄
sql>Insert Into emp(empno,job)
select dname from dept where deptno=50;
sql>insert into (select deptno,dname from dept)
values (50,'Java');
32、更新(2個表操作)表記錄:
sql>update emp set ename=(select dname from dept where deptno=50 ),
job=(select loc from dept where deptno=50 )
where ename like 'S%'
33、刪除(2個表操作)操作:
sql>delete from emp where empno=
(select deptno from dept where deptno=50)
34、合併操作MERGE INTO:
sql>MERGE INTO 表名
Using 表名
ON(條件)
when Matched then (匹配)
update set ....
when not Matched then
insert into....
34、any/some操作,代表滿足any後面的任何一個條件即可:
sql>select * from emp
where sal<=any(2500,6000,10000);
35、all操作,代表滿足all後面的所有條件:
sql>select * from emp
where sal<=all(2500,6000,10000);
37、list操作:列出緩衝區的內容,可簡寫l,後接整型數字或為空
sql>list(n)
38、/操作:執行緩衝區sql命令或PL/SQL塊
39、change操作:修改緩衝區裡的資訊,可簡寫c
sql>c/fron/from
將fron改寫為from
40、del操作:刪除指定行緩衝區命令
sql>del 2 3 刪除第2行、第3行的資訊。
41、在緩衝區中追加資訊(追加到末尾)
sql>append where select;
42、save命令,儲存緩衝區內容到指定的檔案中:
sql>save c:\select.sql;
43、get命名(與save對應)
sql>get c:\select.sql;
44、@命令(與get相似,get是載入語句,然後執行,而@是載入和執行同時進行)
sql>@ c:\select.sql;
45、edit命令,載入windows作業系統的可編輯視窗,簡寫ed:
sql>edit
一、SQL PLUS
1 引言
SQL命令
以下17個是作為語句開頭的關鍵字:
alter drop revoke
audit grant rollback*
commit* insert select
comment lock update
create noaudit validate
delete rename
這些命令必須以“;”結尾
帶*命令句尾不必加分號,並且不存入SQL快取區。
SQL中沒有的SQL*PLUS命令
這些命令不存入SQL快取區
@ define pause
# del quit
$ describe remark
/ disconnect run
accept document save
append edit set
break exit show
btitle get spool
change help sqlplus
clear host start
column input timing
compute list ttitle
connect newpage undefine
copy
-------
2 資料庫查詢
資料字典
TAB 使用者建立的所有基表、檢視和同義詞清單
DTAB 構成資料字典的所有表
COL 使用者建立的基表的所有列定義的清單
CATALOG 使用者可存取的所有基表清單
select from tab;
describe命令 描述基表的結構資訊
describe dept
select
from emp;
select empno,ename,job
from emp;
select from dept
order by deptno desc;
邏輯運算子
= !=或<> > >= < <=
in
between value1 and value2
like
%
_
in null
not
no in,is not null
謂詞in和not in
有哪些職員和分析員
select ename,job
from emp
where job in ('clerk','analyst');
select ename,job
from emp
where job not in ('clerk','analyst');
謂詞between和not between
哪些僱員的工資在2000和3000之間
select ename,job,sal from emp
where sal between 2000 and 3000;
select ename,job,sal from emp
where sal not between 2000 and 3000;
謂詞like,not like
select ename,deptno from emp
where ename like 'S%';
(以字母S開頭)
select ename,deptno from emp
where ename like '%K';
(以K結尾)
select ename,deptno from emp
where ename like 'W___';
(以W開頭,後面僅有三個字母)
select ename,job from emp
where job not like 'sales%';
(哪些僱員的工種名不以sales開頭)
謂詞is null,is not null
沒有獎金的僱員(即commision為null)
select ename,job from emp
where comm is null;
select ename,job from emp
where comm is not null;
多條件查詢
select ename,job
from emp
where deptno=20
and job!='clerk';
表示式
/
算術表示式
選擇獎金高於其工資的5%的僱員
select ename,sal,comm,comm/sal from emp
where comm>.05*sal
order by comm/sal desc;
日期型資料的運算
add two days to 6Mar-87
6-Mar-87 2 = 8-Mar-87
add two hours to 6-Mar-87
6-Mar-87 2/24 = 6-Mar-87 and 2hrs
add 15 seconds to 6-Mar-87
6-Mar-87 15/(24*60*60) = 6-Mar-87 and 15 secs
列名的別名
select ename employee from emp
where deptno=10;
(別名:employee)
select ename,sal,comm,comm/sal "C/S RATIO" from emp
where comm>.05*sal
order by comm/sal desc;
SQL命令的編輯
list or l 顯示緩衝區的內容
list 4 顯示當前SQL命令的第4行,並把第4行作為當前行,在該行號後面有個*。
change or c 用新的內容替換原來在一行中第一次出現內容
SQL>c/(...)/('analyst')/
input or i 增加一行或多行
append or a 在一行後追加內容
del 刪除當前行 刪除SQL緩衝區中的當前行
run 顯示並執行SQL緩衝區中的命令
/ 執行SQL緩衝區中的命令
edit 把SQL緩衝區中的命令寫到作業系統下的文字檔案,
並呼叫作業系統提供的編輯器執行修改。
-----------
3 資料操縱
資料的插入
insert into dept
values (10,'accounting','new york');
insert into dept (dname,deptno)
values ('accounting',10);
從其它表中選擇插入資料
insert into emp (empno,ename,deptno)
select id,name,department
from old_emp
where department in(10,20,30,40);
使用引數
insert into dept
values(&deptno,&dname,&loc);
執行時,SQL/PLUS對每個引數將有提示使用者輸入
引數對應日期型或字元型資料時,可在引數上加引號,輸入時就可不用引號
insert into dept
values(&deptno,'&dname','&loc');
插入空值(NULL)
insert into dept
values(50,'education',null);
插入日期型資料
日期型資料預設格式:DD-MON-YY
insert into emp
(empno,ename,hiredate)
values(7963,'stone','07-APR-87');
系統時間:SYSDATE
insert into emp
(empno,ename,hiredate)
values(7600,'kohn',SYSDATE);
資料更新
update emp
set job='manager'
where ename='martin';
update emp
set job='market rep'
where ename='salesman';
update emp
set deptno=40,job='market rep'
where job='salesman';
資料刪除
delete emp
where empno=765;
更新的提交
commit
自動提交方式
set autocommit on
如果狀態設為開,則使用inesrt,update,delete會立即提交。
更新取消
rollback
兩次連續成功的commit之間的操作,稱為一個事務
-------------
4 建立基表、檢視
建立基表
create table dept
(deptno number(2),
dname char(14),
loc char(13));
資料字典會自動更新。
一個基表最多254列。
表名列名命名規則:
限制
第一個字元必須是字母,後面可任意(包括 $ # 但不能是逗號)。
名字不得超過30個字元。
唯一
某一使用者的基表名必須唯一,不能是ORACLE的保留字,同一基表的列名互不相同。
使用雙引號
如果表名用雙引號括起來,則可不滿足上述規則;
只有使用雙引號,才能區別大、小寫;
命名時使用了雙引號,在以
1.#su - oracle 切換到oracle使用者且切換到它的環境
2.$lsnrctl status 檢視監聽及資料庫狀態
3.$lsnrctl start 啟動監聽
4.$sqlplus / as sysdba 以DBA身份進入sqlplus
5.SQL>startup 啟動db
二,停止
1.#su - oracle 切換到oracle使用者且切換到它的環境
2.$lsnrctl stop 停止監聽
3.$sqlplus / as sysdba 以DBA身份進入sqlplus
4.SQL>SHUTDOWN IMMEDIATE 關閉db
其中startup和shutdowm還有其他一些可選引數,有興趣可以另行查閱
三,檢視初始化引數及修改
1.#su - oracle 切換到oracle使用者且切換到它的環境
2.$sqlplus / as sysdba 以DBA身份進入sqlplus
3.SQL>show parameter session; 檢視所接受的session數量
######################################################
Oracle process與session2008年12月29日 星期一 15:47
Connected to Oracle Database 10g Release 10.1.0.5.0
Connected as ifsapp
SQL> show parameter session
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
session_cached_cursors integer 0
session_max_open_files integer 10
sessions integer 225
shared_server_sessions integer
SQL> show parameters processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 3
log_archive_max_processes integer 2
processes integer 200
SQL> alter system set processes=600 scope=both;
SQL>
SQL> alter system set processes=600 scope=both;
alter system set processes=600 scope=both
ORA-02095: specified initialization parameter cannot be modified
SQL> alter system set sessions=600 scope=both;
alter system set sessions=600 scope=both
ORA-02095: specified initialization parameter cannot be modified
SQL>
SQL> alter system set processes=600 scope=spfile;
System altered
SQL> show parameters processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 3
log_archive_max_processes integer 2
processes integer 200
SQL> alter system set processes=600 scope=memory;
alter system set processes=600 scope=memory
ORA-02095: specified initialization parameter cannot be modified
重啟資料庫之後生效:
SQL> show parameters processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
job_queue_processes integer 3
log_archive_max_processes integer 2
processes integer 600
SQL> show parameter session
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
session_cached_cursors integer 0
session_max_open_files integer 10
sessions integer 665
shared_server_sessions integer
修改Oracle process 和 session 的方法
先備份spfile
1.通過SQLPlus修改
Oracle的sessions和processes的關係是
sessions=1.1*processes + 5
使用sys,以sysdba許可權登入:
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ---------------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL> alter system set processes=400 scope = spfile;
系統已更改。
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL> create pfile from spfile;
檔案已建立。
重啟資料庫,OK!
【注:sessions是個派生值,由processes的值決定,公式sessions=1.1*process + 5】
2.通過修改oracle配置檔案進行修改
修改SPFILEORCL.ORA檔案中的processes的值。8.1.5中是init.ora檔案,在9i中修改init.ora檔案是無效的,這個檔案由於是一個二進位制的檔案,不能直接使用notepad此類的編輯器開啟。
否則會報錯誤ORA-27101 Shared memory realm does not exist。使用UltraEdit或者EditPlus之類的可以編輯二進位制檔案的編輯器開啟此檔案(直接編輯二進位制檔案),然後在Windows服務中重新啟動Oracle伺服器即可。
3.通過Oracle Enterprise Manager Console在圖形化管理器中修改
a.以系統管理員的身份登入
b.進入資料庫的例程-配置-一般資訊-所有初始化引數
c.修改processes的值
d.Sessions的值由公式sessions=1.1*process + 5派生得到
一個process可以有0個,1個或多個session
=============================================
Oracle中系統process與session的關係
在實際的應用中,Shared Server中的Process與Oracle資料庫中的Session並不是一一對應的,Shared Server中的Process(一個)對應著Oracle中的一個或者一個以上的Session。
在dedicated server機器上的測試如下:
資料庫的session和作業系統process是對應的。
這表示一個session對應一個process,但是一個process未必對應一個session。
大家可以通過SELECT spid
FROM v$process
WHERE NOT EXISTS ( SELECT 1
FROM v$session
WHERE paddr = addr); 檢視
或
SQL> select count(*) from v$process;
COUNT(*)
----------
53
SQL> select count(*) from v$session;
COUNT(*)
----------
50
oracle10g中只要指定processes,sessions就會自動計算出,所以不需要指定sessions也可,除非對sessions有特殊要求,要求其比oracle自動計算出的sessions要大,那麼就需要手動指定sessions了
#########################################################
4.SQL>alter system set shared_servers=10; 將shared_servers的數量設定為10
四.資料庫連線數目
其中一個數據庫連線需要一個session,它的值由processes決定,session與processes通常有以下關係:
session = 1.1 * processes + 5
不過這也不是絕對的,還要受到CPU和記憶體等硬體條件的限制。另外processes和session不可以通過alter system語句直接修改,只可以修改伺服器引數檔案來更改(Server Parameter File)。如果存在一個server parameter file,通過alter system語句所作的更改將會被持久化到檔案中。
首先以Oracle使用者登入
1、 $/oracle/oracle/app/product/101/bin/dbstart:啟動資料庫。
2、 $/oracle/oracle/app/product/101/bin/dbshut:關閉資料庫。
3、 $/oracle/oracle/app/product/101/bin/dbca:資料庫配置助理,進行資料庫安裝、刪除和修改。
4、 $/oracle/oracle/app/product/101/bin/netca:資料庫網路服務配置管理。
5、 $/oracle/oracle/app/product/101/bin/netmgr:資料庫網路服務和監聽配置助理。
6、 $/oracle/oracle/app/product/101/bin/sqlplus:可執行SQL,進行資料庫操作,並可起停資料庫。執行sqlplus命令,輸入sys使用者和口令登陸以後,執行如下命名:
〉shutdown immediate 立即關閉資料庫
〉startup 啟動資料庫
7、 $/oracle/oracle/app/product/101/bin/lsnrctl start:啟動資料庫監聽
$/oracle/oracle/app/product/101/bin/lsnrctl stop:關閉資料庫監聽
$/oracle/oracle/app/product/101/bin/lsnrctl status:察看資料庫監聽執行狀態
Oracle資料庫命令速查
Oracle資料庫命令速查
Oracle資料庫命令速查
1. 日誌管理
1.1. 強制日誌切換(forcing log switches)
sql> alter system switch logfile;
1.2. 強制執行檢查點(forcing checkpoints)
sql> alter system checkpoint;
1.3. 增加一個重做日誌組(adding online redo log groups)
sql> alter database add logfile [group 4]sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo') size 1m;
1.4. 增加一個重做日誌檔案(adding online redo log members)
sql> alter database add logfile member
sql> '/disk3/log1b.rdo' to group 1,
sql> '/disk4/log2b.rdo' to group 2;
1.5. 改變重做日誌檔名(changes the name of the online redo logfile)
sql> alter database rename file 'c:/oracle/oradata/oradb/redo01.log'
sql> to 'c:/oracle/oradata/redo01.log';
1.6. 刪除重做日誌組(drop online redo log groups)
sql> alter database drop logfile group 3;
1.7. 刪除重做日誌檔案(drop online redo log members)
sql> alter database drop logfile member 'c:/oracle/oradata/redo01.log';
1.8. 清空重做日誌檔案(clearing online redo log files)
sql> alter database clear [unarchived] logfile 'c:/oracle/log2a.rdo';
1.9. 使用logminer分析重做日誌檔案(using logminer analyzing redo logfiles)
a. in the init.ora specify utl_file_dir = ' '
b. sql> execute dbms_logmnr_d.build('oradb.ora','c:\oracle\oradb\log');
c. sql> execute dbms_logmnr_add_logfile('c:\oracle\oradata\oradb\redo01.log',
sql> dbms_logmnr.new);
d. sql> execute dbms_logmnr.add_logfile('c:\oracle\oradata\oradb\redo02.log',
sql> dbms_logmnr.addfile);
e. sql> execute dbms_logmnr.start_logmnr(dictfilename=>'c:\oracle\oradb\log\oradb.ora');
f. sql> select * from v$logmnr_contents(v$logmnr_dictionary,v$logmnr_parameters
sql> v$logmnr_logs);
g. sql> execute dbms_logmnr.end_logmnr;
2. 表空間管理
2.1. 創造表空間(create tablespaces)
sql> create tablespace ts_name datafile 'c:\oracle\oradata\file1.dbf' size 100m ,
sql>'c:\oracle\oradata\file2.dbf' size 100m minimum extent 550k [logging/nologging]sql> default storage (initial 500k next 500k maxextents 500 pctinccease 0)
sql> [online/offline] [permanent/temporary] [extent_management_clause]
2.2. 建立本地管理的表空間(locally managed tablespace)
sql> create tablespace user_data datafile 'c:\oracle\oradata\user_data01.dbf'
sql> size 500m extent management local uniform size 10m;
2.3. 建立臨時表空間(temporary tablespace)
sql> create temporary tablespace temp tempfile 'c:\oracle\oradata\temp01.dbf'
sql> size 500m extent management local uniform size 10m;
2.4. 改變表空間的儲存引數(change the storage setting)
sql> alter tablespace app_data minimum extent 2m;
sql> alter tablespace app_data default storage(initial 2m next 2m maxextents 999);
2.5. 使表空間離線或連線(taking tablespace offline or online)
sql> alter tablespace app_data offline;
sql> alter tablespace app_data online;
2.6. 設定表空間為只讀/可寫模式(read_only tablespace)
sql> alter tablespace app_data read only|write;
2.7. 刪除表空間(droping tablespace)
sql> drop tablespace app_data including contents;
2.8. 允許資料檔案自動擴充套件(enableing automatic extension of data files)
sql> alter tablespace app_data add datafile 'c:\oracle\oradata\app_data01.dbf' size 200m
sql> autoextend on next 10m maxsize 500m;
2.9. 手工改變資料檔案的大小(change the size fo data files manually)
sql> alter database datafile 'c:\oracle\oradata\app_data.dbf' resize 200m;
2.10. 改名錶空間中的資料檔案(Moving data files: alter tablespace)
sql> alter tablespace app_data rename datafile 'c:\oracle\oradata\app_data.dbf
sql> to 'c:\oracle\app_data.dbf';
2.11. 改變資料庫中的資料檔案(moving data files:alter database)
sql> alter database rename file 'c:\oracle\oradata\app_data.dbf' to 'c:\oracle\app_data.dbf';
3. 表
3.1. 建立表(create a table)
sql> create table table_name (column datatype,column datatype]....)
sql> tablespace tablespace_name [pctfree integer] [pctused integer]
sql> [initrans integer] [maxtrans integer]sql> storage(initial 200k next 200k pctincrease 0 maxextents 50)
sql> [logging|nologging] [cache|nocache]
3.2. 複製一個已存在的表(copy an existing table)
sql> create table table_name [logging|nologging] as subquery
3.3. 建立一個臨時表(create temporary table)
sql> create global temporary table xay_temp as select * from xay;
on commit preserve rows/on commit delete rows
3.4. pctfree和pctused引數計算公式
pctfree = (average row size - initial row size) *100 /average row size
pctused = 100-pctfree- (average row size*100/available data space)
這是標準的計算公式。
PCTFREE:指定表內每個資料塊中空間的百分比。 PCTFREE 的值必須介於 0 和 99 之間。如果值為零,表示可以通過插入新行來填充整個塊。預設值為 10。此值表示每個塊中保留著 10% 的空間,用於更新現有的行以及插入新行,每個塊最多可填充到 90%。
PCTUSED:指定為表內每個資料塊維護的已用空間的最小百分比。如果一個塊的已用空間低於 PCTUSED,則可在該塊中插入行。PCTUSED 的值為介於 0 和 99 之間的整數,預設值為 40。
結合 PCTFREE 和 PCTUSED 就可以確定將新行插入到現有資料塊中,還是插入到新塊中。這兩個引數值的和必須小於或等於 100。使用這兩個引數可以更有效地利用表內的空間。
設定 PCTFREE 和 PCTUSED
設定 PCTFREE
PCTFREE 值越高,可為資料庫塊內的更新提供的空間就越大。如果表存在下面兩種情況,則應設定一個更高的值:
? 某些列最初為 NULL,後來更新為某個值
? 某些列由於更新,大小可能增加
PCTFREE 的值越高,塊密度就越低,即每個塊容納的行數就越少。
上面的公式確保塊中有足夠的空閒空間供行增長使用。
設定 PCTUSED
設定 PCTUSED 以確保只有在具備足夠空間來容納一個平均大小的行時才將塊返回到空閒列表中。如果空閒列表中的某個塊沒有足夠的空間來插入一行,Oracle 伺服器將查詢空閒列表中的下一個塊。直到找到具備足夠空間的塊或者到達列表的末尾,這種線性掃描才會結束。使用給定的公式可以增加找到具有所需空閒空間的塊的概率,從而縮短掃描空閒列表的時間。
注:可以使用 ANALYZE TABLE 命令估算平均行大小的值。
注:Oracle9i “自動段空間管理” 功能可替代 PCTUSED、FREELISTS 和 FREELIST GROUPS。
3.5. 改變儲存和塊利用率引數(change storage and block utilization parameter)
sql> alter table table_name pctfree=30 pctused=50 storage(next 500k minextents 2 maxextents 100);
3.6. 手工分配區間(extents)(manually allocating extents)
sql> alter table table_name allocate extent(size 500k datafile 'c:/oracle/data.dbf');
3.7. 改變表的所屬表空間(move tablespace)
sql> alter table employee move tablespace users;
3.8. 釋放表中未用空間(deallocate of unused space)
sql> alter table table_name deallocate unused [keep integer]
3.9. 截斷表(truncate)(truncate a table)
sql> truncate table table_name;
截斷一個表將刪除表中所有行,從而釋放已使用的空間。
對應的索引將被截斷。
(注:truncate table不是DML語句,是DDL語句
另外,truncate 與delete的區別是,delelte不釋放空間,truncate釋放空間。)
3.10. 刪除表(drop a table)
sql> drop table table_name [cascade constraints];
3.11. 刪除列(drop a column)
sql> alter table table_name drop column comments cascade constraints checkpoint 1000;
alter table table_name drop columns continue;
3.12. 標識某一列為未使用(unused)(mark a column as unused)
sql> alter table table_name set unused column comments cascade constraints;
alter table table_name drop unused columns checkpoint 1000;
alter table orders drop columns continue checkpoint 1000
data_dictionary : dba_unused_col_tabs
除將列從表中刪除以外,還可以先將列標記為 “未使用”,以後再刪除。因為沒有刪除資料,所以此操作不回收磁碟空間,因而具有速度比較快的優點。被標為 “未使用” 的列可在以後系統活動較少時從表中刪除。
未使用的列就像不屬於表一樣。查詢時看不到未使用列中的資料。此外,在執行 DESCRIBE 命令時,也不會顯示這些列的名稱和資料型別。使用者可以新增與未使用的列同名的新列。
如果想刪除同一表中的兩列,則可先將列設定為 “未使用” 然後再刪除。在刪除兩列時,表中的所有行都會更新兩次;但如果將這些列設定為 “未使用” 然後再刪除,則所有的行僅更新一次。
4. 索引
4.1. 建立一個基於函式的索引(creating function-based indexes)
sql> create index summit.item_quantity on summit.item(quantity-quantity_shipped);
基於函式的索引(Function-based indexes):
如果在表中要建立索引的一列或多列上使用了函式或表示式,則建立的是基於函式的索引。基於函式的索引預先計算函式或表示式的值,並將結果儲存在索引中。可以將基於函式的索引建立為 B 樹或點陣圖索引。
4.2. 建立一個B樹索引(create a B-tree index)
sql> create [unique] index index_name on table_name(column,.. asc/desc) tablespace
sql> tablespace_name [pctfree integer] [initrans integer] [maxtrans integer]
sql> [logging | nologging] [nosort] storage(initial 200k next 200k pctincrease 0 maxextents 50);
B樹:平衡二叉樹,oracle中用的最多的索引模式,適用於取值唯一性高的情況。只有兩層,非葉級、葉級(指標所在級)
4.3. 索引中pctfree引數計算公式
pctfree(index)=(maximum number of rows-initial number of rows)*100/maximum number of rows
4.4. 建立一個反向鍵索引(creating reverse key indexes)
sql> create unique index xay_id on xay(a) reverse pctfree 30 storage(initial 200k next 200k pctincrease 0 maxextents 50) tablespace indx;
4.5. 建立點陣圖索引(create bitmap index)
sql> create bitmap index xay_id on xay(a) pctfree 30 storage( initial 200k next 200k pctincrease 0 maxextents 50) tablespace indx;
在下列情況中,點陣圖索引比 B 樹索引更有利:
? 當表包含數百萬行且鍵列的基數很低(即,該列中重複的值很多)時。例如,對於包含護照記錄的表的性別列和婚姻狀況列而言,點陣圖索引比 B 樹索引更適合
? 當查詢經常使用涉及 OR 運算子的多個 WHERE 條件組合時
? 當鍵列上存在只讀或很少的更新操作時
(點陣圖索引適用於取值的唯一性很低的情況)
4.6. 改變索引的儲存引數(change storage parameter of index)
sql> alter index xay_id storage (next 400k maxextents 100);
4.7. 為索引分配空間(allocating index space)
sql> alter index xay_id allocate extent(size 200k datafile 'c:/oracle/index.dbf');8.alter index xay_id deallocate unused;
手動分配索引空間:
在表上進行頻繁的插入操作前,可能需要向索引新增區。新增區可防止索引動態擴充套件並導致效能降低。
(其中指定的資料檔案一定是索引所在表空間的資料檔案)
5. 約束(constraints)
5.1. 將約束定義為立即(immediate)或延遲(deferred)(define constraints as immediate or deferred)
sql> alter session set constraint[s] = immediate/deferred/default;
set constraint[s] constraint_name/all immediate/deferred;
SET CONSTRAINTS 語句用於將特定事務處理的約束設定為 DEFERRED 或 IMMEDIATE。可以使用此語句設定約束名稱列表或約束的模式。SET CONSTRAINTS 模式將一直持續到事務處理完成或者另一個 SET CONSTRAINTS 語句重置模式。SET CONSTRAINTS 語句不允許在觸發器內部使用。
ALTER SESSION 語句還包含將約束設定為 IMMEDIATE 或 DEFERRED 的子句 SET CONSTRAINTS。此命令預設為設定所有 (ALL) 可延遲的約束(不能指定約束名稱列表)。ALTER SESSION SET CONSTRAINTS 語句僅適用於當前的會話。
5.2. 刪除表或表空間時連帶刪除其上的外來鍵(約束)
sql> drop table table_name cascade constraints
sql> drop tablespace tablespace_name including contents cascade constraints
在刪除父表之前,必須先刪除外來鍵。可以使用以下一條語句同時執行這兩個操作:
DROP TABLE table CASCADE CONSTRAINTS
在未刪除或禁用外來鍵之前無法截斷(truncated)父表。
在刪除包含父表的表空間之前,必須先刪除外來鍵。可使用下列命令完成該操作:
DROP TABLESPACE tablespace INCLUDING CONTENTS
CASCADE CONSTRAINTS
如果從父表中刪除行時沒有使用 DELETE CASCADE 選項,Oracle 伺服器必須確保子表中的行不包含相應的外來鍵。同樣,僅當子行中不包含舊鍵值時,才允許更新父鍵。如果子表的外來鍵上沒有索引,則 Oracle 伺服器鎖定子表並禁止更改以確保引用完整性。如果表上有索引,則可通過鎖定索引項並避免子表上有更具限制性的鎖來維護引用完整性。如果必須從不同的事務處理同時更新兩個表,則在外來鍵列上建立索引。
5.3. 在建立表時定義約束(define constraints while create a table)
sql> create table xay(id number(7) constraint xay_id primary key deferrable
sql> using index storage(initial 100k next 100k) tablespace indx);
primary key/unique/references table(column)/check
5.4. 啟用當前禁用的約束(enable constraints)
sql> alter table xay enable novalidate constraint xay_id;
啟用 NOVALIDATE:
對於當前已有索引的 PRIMARY KEY 和 UNIQUE 約束,啟用 NOVALIDATE 約束比啟用 VALIDATE 約束要快得多,這是因為,如果約束是可延遲的,則不檢查現有資料是否違反約束。如果使用該選項啟用約束,則不要求鎖定表。這種方法適合表上有許多 DML 活動的情況,如在 OLTP 環境中。
但是,如果需要建立索引,使用這種啟用約束的方法並不能比 ENABLE VALIDATE 帶來更多的好處,因為 Oracle 伺服器在建立索引時鎖定表。
5.5. 啟用約束(enable constraints)
sql> alter table xay enable validate constraint xay_id;
6. 載入(load)資料
6.1. 使用insert語句從另一張表中“直接載入”資料到新表(loading data using direct_load insert)
sql> insert /*+append */ into emp nologging
sql> select * from emp_old;
6.2. 使用insert方式的“並行直接載入”資料(parallel direct-load insert)
sql> alter session enable parallel dml;
sql> insert /*+parallel(emp,2) */ into emp nologging
sql> select * from emp_old;
6.3. 使用sql*loader載入資料(using sql*loader)
sql> sqlldr scott/tiger \
sql> control = ulcase6.ctl \
sql> log = ulcase6.log direct=true
7. 重整資料(reorganizing data)
7.1. 使用export倒出資料(using export)
$exp scott/tiger tables(dept,emp) file=c:\emp.dmp log=exp.log compress=n direct=y
7.2. 使用import倒入資料(using import)
$imp scott/tiger tables(dept,emp) file=emp.dmp log=imp.log ignore=y
7.3. 以移動表空間(transporting)方式匯入匯出一個表(transporting a tablespace)
sql>alter tablespace sales_ts read only;
$exp sys/.. file=xay.dmp transport_tablespace=y tablespace=sales_ts
triggers=n constraints=n
$copy datafile
$imp sys/.. file=xay.dmp transport_tablespace=y datafiles=(/disk1/sles01.dbf,/disk2
/sles02.dbf)
sql> alter tablespace sales_ts read write;
7.4. checking transport set
sql> DBMS_tts.transport_set_check(ts_list =>'sales_ts' ..,incl_constraints=>true);
在表transport_set_violations 中檢視
sql> dbms_tts.isselfcontained 為true 是,表示自包含
8. 管理口令及相關資源(managing password security and resources)
8.1. 修改使用者帳號加/解鎖及口令(controlling account lock and password)
sql> alter user juncky identified by oracle account unlock;
8.2. user_provided password function
sql> function_name(userid in varchar2(30),password in varchar2(30),
old_password in varchar2(30)) return boolean
8.3. 建立概要檔案:設定口令引數(create a profile : password setting)
sql> create profile grace_5 limit failed_login_attempts 3
sql> password_lock_time unlimited password_life_time 30
sql>password_reuse_time 30 password_verify_function verify_function
sql> password_grace_time 5;
8.4. 修改概要檔案(altering a profile)
sql> alter profile default limit
sql> failed_login_attempts 3
sql> password_life_time 60;
8.5. 刪除概要檔案(drop a profile)
sql> drop profile grace_5 [cascade];
8.6. 建立概要檔案:設定資源限額(create a profile : resource limit)
sql> create profile developer_prof limit sessions_per_user 2
sql> cpu_per_session 10000 idle_time 60 connect_time 480;
8.7. view => resource_cost : alter resource cost
dba_Users,dba_profiles
8.8. 允許資源限額(enable resource limits)
sql> alter system set resource_limit=true;
9. 管理使用者(Managing users)
9.1. 建立使用者(資料庫認證方式)(create a user: database authentication)
sql> create user juncky identified by oracle default tablespace users temporary tablespace temp quota 10m/unlimited on data password expire [account lock|unlock] [profile profilename|default];
9.2. 修改使用者的表空間限額(change user quota on tablespace)
sql> alter user juncky quota 0 on users;
9.3. 刪除使用者(drop a user)
sql> drop user juncky [cascade];
9.4. 監控使用者的檢視(monitor user)
view: dba_users , dba_ts_quotas
10. 管理許可權(managing privileges)
10.1. 系統許可權檢視(system privileges:)
view => system_privilege_map ,dba_sys_privs,session_privs
10.2. 授權系統許可權(grant system privilege)
sql> grant create session,create table to managers;
sql> grant create session to scott with admin option;
with admin option can grant or revoke privilege from any user or role;
10.3. sysdba和sysoper的許可權(sysdba and sysoper privileges:)
sysoper: startup,shutdown,alter database open|mount,alter database backup controlfile,alter tablespace begin/end backup,recover database,alter database archivelog,restricted session
sysdba:sysoper privileges with admin option,create database,recover database until
10.4. 口令檔案成員檢視(password file members:)
view:=> v$pwfile_users
10.5. O7_dictionary_accessibility =true
restriction access to view or tables in other schema
10.6. 撤銷系統許可權(revoke system privilege)
sql> revoke create table from karen;
sql> revoke create session from scott;
10.7. 授權物件許可權(grant object privilege)
sql> grant execute on dbms_pipe to public;
sql> grant update(first_name,salary) on employee to karen with grant option;
10.8. 顯示物件許可權的檢視(display object privilege ):
view => dba_tab_privs, dba_col_privs
10.9. 撤銷使用者的物件許可權(revoke object privilege)
sql> revoke execute on dbms_pipe from scott [cascade constraints];
10.10. 審計記錄檢視(audit record view) :
=> sys. aud$
10.11. 保護審計線索(protecting the audit trail)
sql> audit delete on sys.aud$ by access;
保護審計線索:
應保護審計線索,以防新增、修改或刪除審計資訊。發出以下命令:
SQL> AUDIT delete ON sys.aud$ BY ACCESS;
可防止審計線索未經授權即被刪除;只有 DBA 才擁有 DELETE_CATALOG_ROLE 角色。
10.12. 語句審計(statement auditing)
sql> audit user;
語句審計:該種審計對 SQL 語句進行選擇性審計,而並不審計語句針對的特定方案物件。例如,AUDIT TABLE 跟蹤多個 DDL 語句,而與這些語句針對的表無關。可以設定語句審計,以便對資料庫中的所選使用者或每個使用者進行審計。
10.13. 許可權審計(privilege auditing)
sql> audit select any table by summit by access;
許可權審計:
該種審計對執行操作應具有的相應系統許可權進行選擇性審計,如 AUDIT CREATE ANY TRIGGER。可以設定許可權審計對資料庫中的所選使用者或每個使用者進行審計。
10.14. 方案物件審計(schema object auditing)
sql> audit lock on summit.employee by access whenever successful;
方案物件審計:
該種審計對特定方案物件上的特定語句進行選擇性審計,如 AUDIT SELECT ON HR.EMPLOYEES。方案物件審計始終適用於所有資料庫使用者。
11. 審計選項檢視(view audit option) :
view=> all_def_audit_opts,dba_stmt_audit_opts,dba_priv_audit_opts,dba_obj_audit_opts
12. 審計結果檢視(view audit result):
view=> dba_audit_trail,dba_audit_exists,dba_audit_object,dba_audit_session,dba_audit_statement
13. 管理角色(manager role)
13.1. 建立角色(create roles)
sql> create role sales_clerk;
sql> create role hr_clerk identified by bonus;
sql> create role hr_manager identified externally;
13.2. 修改角色(modify role)
sql> alter role sales_clerk identified by commission;
sql> alter role hr_clerk identified externally;
sql>alter role hr_manager not identified;
13.3. 分配角色給使用者(assigning roles)
sql> grant sales_clerk to scott;
sql> grant hr_clerk to hr_manager;
sql> grant hr_manager to scott with admin option;
13.4. 建立預設角色(establish default role)
sql> alter user scott default role hr_clerk,sales_clerk;
sql> alter user scott default role all;
sql> alter user scott default role all except hr_clerk;
sql> alter user scott default role none;
13.5. 允許和禁止角色(enable and disable roles)
sql> set role hr_clerk;
sql> set role sales_clerk identified by commission;
sql> set role all except sales_clerk;
sql> set role none;
13.6. 撤銷使用者的角色(remove role from user)
sql> revoke sales_clerk from scott;
sql> revoke hr_manager from public;
13.7. 刪除角色(remove role)
sql> drop role hr_manager;
13.8. 顯示角色資訊的檢視(display role information)
view: =>dba_roles,dba_role_privs,role_role_privs,dba_sys_privs,role_sys_privs,role_tab_privs,session_roles
14. 備份和恢復(BACKUP and RECOVERY)
14.1. 備份恢復用相關檢視
v$sga,v$instance,v$process,v$bgprocess,v$database,v$datafile,v$sgastat
14.2. 為Rman設定初始化引數
Rman need set dbwr_IO_slaves or backup_tape_IO_slaves and large_pool_size
14.3. 監控並行回滾的檢視(Monitoring Parallel Rollback)
> v$fast_start_servers , v$fast_start_transactions
14.4. 執行一個冷備份(perform a closed database backup (noarchivelog))
> shutdown immediate
> cp files /backup/
> startup
14.5. 改變資料檔案的位置(restore to a different location)
> connect system/manager as sysdba
> startup mount
> alter database rename file '/disk1/../user.dbf' to '/disk2/../user.dbf';
> alter database open;
14.6. 恢復命令(recover)語法 (recover syntax)
--recover a mounted database
>recover database;
>recover datafile '/disk1/data/df2.dbf';
>alter database recover database;
--recover an opened database
>recover tablespace user_data;
>recover datafile 2;
>alter database recover datafile 2;
14.7. 設定自動應用重做日誌檔案(how to apply redo log files automatically)
>set autorecovery on
>recover automatic datafile 4;
14.8. 完全恢復(complete recovery:)
--method 1(mounted databae)
>copy c:\backup\user.dbf c:\oradata\user.dbf
>startup mount
>recover datafile 'c:\oradata\user.dbf;
>alter database open;
--method 2(opened database,initially opened,not system or rollback datafile)
>copy c:\backup\user.dbf c:\oradata\user.dbf (alter tablespace offline)
>recover datafile 'c:\oradata\user.dbf' or
>recover tablespace user_data;
>alter database datafile 'c:\oradata\user.dbf' online or
>alter tablespace user_data online;
--method 3(opened database,initially closed not system or rollback datafile)
>startup mount
>alter database datafile 'c:\oradata\user.dbf' offline;
>alter database open
>copy c:\backup\user.dbf d:\oradata\user.dbf
>alter database rename file 'c:\oradata\user.dbf' to 'd:\oradata\user.dbf'
>recover datafile 'e:\oradata\user.dbf' or recover tablespace user_data;
>alter tablespace user_data online;
--method 4(loss of data file with no backup and have all archive log)
>alter tablespace user_data offline immediate;
>alter database create datafile 'd:\oradata\user.dbf' as 'c:\oradata\user.dbf''
>recover tablespace user_data;
>alter tablespace user_data online
14.9. 對一個開啟的資料庫進行備份(perform an open database backup)
> alter tablespace user_data begin backup;
> copy files /backup/
> alter database datafile '/c:/../data.dbf' end backup;
> alter system switch logfile;
14.10. 備份一個控制檔案(backup a control file)
> alter database backup controlfile to 'control1.bkp';
> alter database backup controlfile to trace;
14.11. 非歸檔模式下的恢復(recovery (noarchivelog mode))
> shutdown abort
> cp files
> startup
14.12. 備份模式下的檔案恢復(recovery of file in backup mode)
>alter database datafile 2 end backup;
14.13. 清空重做日誌檔案(clearing redo log file)
>alter database clear unarchived logfile group 1;
>alter database clear unarchived logfile group 1 unrecoverable datafile;
14.14. 重做日誌的恢復(刪除與重建)(redo log recovery)
>alter database add logfile group 3 'c:\oradata\redo03.log' size 1000k;
>alter database drop logfile group 1;
>alter database open;
or >cp c:\oradata\redo02.log' c:\oradata\redo01.log
>alter database clear logfile 'c:\oradata\log01.log';
Oracle資料庫手邊命令
1、得到資料庫名和建立日期
SELECT name, created, log_mode, open_mode FROM v$database;
2、ORACLE資料庫的計算機的主機名,ORACLE資料庫的例項名及ORACLE資料庫管理系統的版本資訊
SELECT host_name, instance_name, version FROMv$instance;
3、為了知道oracle資料庫版本的一些特殊資訊
select * from v$version;
4、獲取控制檔名字
select * from v$controlfile;
5、得到Oracle資料庫的重做日誌配置資訊
SELECT group#, members, bytes, status, archived FROM v$log;
select GROUP#,MEMBER from v$logfile;
6、獲取oracle的每個重做日誌(成員)檔案所存放的具體位置
select * from v$logfile;
7、知道ORACLE資料庫的備份和恢復策略和歸檔檔案的具體位置
archive log list
8、知道ORACLE資料庫中到底有多少表空間以及每個表空間的狀態
select tablespace_name, block_size, status, contents, logging from dba_tablespaces;
select tablespace_name, status from dba_tablespaces;
9、知道每個表空間存在哪個磁碟上以及檔案的名字等資訊
SELECT file_id, file_name, tablespace_name, status, bytes from dba_data_files;
select file_name, tablespace_name from dba_data_files;
10、知道Oracle資料庫系統上到底有多少使用者和都是什麼時候建立的
select username,created from dba_users;
select username, DEFAULT_TABLESPACE from dba_users;
11、從控制檔案中取出資訊涉及到以下一些相關的命令
select * from v$archived
select * from v$archived_log
select * from v$backup
select * from v$database
select * from v$datafile
select * from v$log
select * from v$logfile
select * from v$loghist
select * from v$tablespace
select * from v$tempfile
12、控制檔案由兩大部份組成:可重用的部份和不可重用的部分。可重用的部分的大小可用CONTROL_FILE_RECORD_KEEP_TIME引數來控制,該引數的預設值為7天,即可重用的部份的內容保留7天,一週之後這部份的內容可能被覆蓋。可重用的部份是供恢復管理器來使用的,這部份的內容可以自動擴充套件。Oracle資料庫管理員可以使用CREAT DATABASE或CREAT CONTROLFILE語句中的下列關鍵字(引數)來間接影響不可重用的部份的大小:
MAXDATAFILES
MAXINSTANCES
MAXLOGFILES
MAXLOGHISTORY
MAXLOGMEMBERS
13、檢視控制檔案的配置
SELECT type, record_size, records_total, records_used FROM v$controlfile_record_section;
14、如果您的顯示被分成了兩部分,您需要使用類似於set pagesize 100的SQL*Plus命令先格式化輸出。有關的格式化輸出命令有以下這些:
record_size: 為每個記錄的位元組數。
records_total:為該段所分配的記錄個數。
records_used:為該段所使用的記錄個數。
15、知道控制檔案中的所有資料檔案(DATAFILE),表空間(TABLESPACE),和重做日誌(REDO LOG)所使用的記錄情況
SELECT type, record_size, records_total, records_used
FROM v$controlfile_record_section
WHERE type IN ( 'DATAFILE', 'TABLESPACE', 'REDO LOG');
16、獲取控制檔名字
select value from v$parameter where name ='control_files';
或者:select * from v$controlfile
17、如何在一個已經安裝的Oracle資料庫中新增或移動控制檔案呢?
以下是在一個已經安裝的Oracle資料庫中新增或移動控制檔案的具體步驟:
a、利用資料字典v$controlfile來獲取現有控制檔名字。
b、正常關閉Oracle資料庫。
c、將新的控制檔名新增到引數檔案的CONTROL_FILES引數中。
d、使用作業系統的複製命令將現有控制檔案複製到指定位置。
e、重新啟動Oracle資料庫。
f、利用資料字典v$controlfile來驗證新的控制檔名字是否正確。
g、如果有誤重做上述操作,如果無誤刪除無用的舊控制檔案。
注:如果您使用了伺服器初始化引數檔案(SPFILE),您不能關閉Oracle資料庫而且應該在第3步使用alter system set control_files的Oracle命令來改變控制檔案的位置。
SQL> alter system set control_files =
'D:\Disk3\CONTROL01.CTL',
'D:\Disk6\CONTROL02.CTL',
'D:\Disk9\CONTROL03.CTL' SCOPE=SPFILE;
18、由於控制檔案是一個極其種要的檔案,除了以上所說的將控制檔案的多個副本存在不同的硬碟上的保護措施外,在資料庫的結構變化之後,您應立即對控制檔案進行備份。可以用Oracle命令來對控制檔案進行備份:
alter database backup controlfile to 'D:\backup\control.bak';
19、您也可將備份到一個追蹤檔案中。該追蹤檔案包含有重建控制檔案所需的SQL語句。可使用以下SQL語句來產生這一追蹤檔案:
alter database backup controlfile to trace;
20、正常關閉oracle命令
shutdown immeditae
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/foresail/archive/2007/10/26/1844695.aspx
Oracle資料庫命令集
1、sqlplus啟動方式:
Dos下執行sqlplus 使用者名稱/密碼 as sysdba
例如:c:>sqlplus sys/password AS sydba(系統帳戶)
或者:c:>sqlplus scott/password
2、使用者連線(切換)操作:
sql>conn Scott/password(預設為tiger)
注:conn與connect使用方法一樣
3、手動解鎖:
sql>ALTER USER scott Account Unlock;(將scott帳戶解鎖)
4、檢視使用者(兩種方式):
sql>select user form dual;
sql>show user;
5、sql幫助:
sql>help index;
6、資料庫解除安裝和載入
sql>shutdown [NORMAL][IMMEDLATE][ABORT][TRANSACTIONAL];
sql>startup;
7、查詢select操作:
sql>select *from dept;
sql>select dname,loc from dept;
sql>select *from emp where deptno=20;
注:在sql中,字串使用單引號。
8、欄位別名的定義:
sql>select hiredate AS 僱用日期 from emp
AS可以省略,但是推薦使用。
9、字串連線
sql>selcet dname||loc from dept;
10、提取表中的前N個記錄:
sql>select *from emp where rownum<=N;
11、null的使用:
sql>select ename,job from emp where comm is[not] null;
注:null參與數學表示式計算時,結果一定為null。
12、like關鍵字(字串匹配):
sql>select dname from dept where dname like '_S%';
注:_代表單個字元,%代表多個字元。
13、in關鍵字:
sql>select dname,dpart,log from dept where deptno in(10,20);
注:只選擇輸出deptno值為10或20的記錄。
類似於:where deptno=10 or deptno=20;
14、between and關鍵字:
sql>select * from dept where deptno between 10 and 30;
包括10和30.
15、set關鍵字:
sql>set pagesize 10;
sql>set linesize 100;
16、連線查詢:
求解sal大於平均值的記錄
sql>select * from emp
where sal>(select avg(sal) from emp);
17、聯合查詢:
欄位個數和型別必須保持一致,合併為一個查詢結果。
sql>select empno,ename from emp
union[ALL]
select deptno,dname from dept;
ALL:代表可以有重複記錄。
18、內連線查詢:
內連線查詢分為2中:一是在form後直接加表名,中間用逗號分隔。
sql>select * from emp e,dept d (e d為表的別名)
where e.deptno=d.deptno;
二是使用join關鍵字,條件使用ON
sql>select * from emp join dept
ON emp.deptno=dept.deptno;
19、自連線查詢:將一個表起不同的別名,使其在邏輯上成為兩張表。
sql>select * from emp a,emp b
where a.mgr=b.empno;
20、外連線查詢:
左外連線查詢:left join 左表全部顯示
右外連線查詢:right join右表全部顯示
全外連線查詢:full join 左右表均全部顯示
以左外連線為例:
sql>select * from dept
left join emp
on dept.deptno=emp.deptno;
左表(dept)資訊全部顯示,右表(emp)中不符合條件的記錄為null。
21、集合函式(數學表示式):
sql>select AVG(sal) from emp;
sql>select Count([distinct]sal) from emp;
distinct表示不計算重複資料。
22、插入記錄:
sql>Insert Into tablename (欄位列表) values(屬性類表);
sql>Insert Into emp(eno,ename,dept) values(1,'java',20);
23、修改(更新)記錄:
sql>UpDate emp set deptno=80
where deptno=81;
24、刪除記錄:
sql>Delete from tablename where 條件
sql>Delete from emp where deptno=80;
25、建立檢視:注意許可權,本操作是在sys帳戶下進行的。
sql>create view view_name(ename,dname)
AS
select emp.ename,dept.dname
from scott.emp,scott.dept
with read only;
sql>select * from view_name;
26、同義詞
create synonym 同義詞名稱 for 原物件
sql>create synonym empbak for scott.emp;
sql>select * from empbak;
27、修改物件(表、檢視等)結構ALTER:
sql>alter table 表名 add("book_id"VARCHAR2(10));//新增欄位,注意雙引號
sql>alter table 表名 modify("book_id",not null);
28、修改表的操作
sql>rename 原表名 to 新表名//修改表名
sql>select * from tab;//查詢當前使用者表資訊
sql>desc 表名//查看錶結構
sql>drop table 表名//刪除表
sql>truncate table 表名//刪除表中資料,保留表結構
29、事務處理
sql>commit 成功提交事務
sql>rollback 返回到事務未開始的狀態
sql>savepoint A 建立事務的儲存點
sql>rollback to [savepoint] A 返回儲存點
30、EXISTS關鍵字
sql>select * from dept where EXISTS (select deptno from emp);
31、從另外一個表中拷貝記錄
sql>Insert Into emp(empno,job)
select dname from dept where deptno=50;
sql>insert into (select deptno,dname from dept)
values (50,'Java');
32、更新(2個表操作)表記錄:
sql>update emp set ename=(select dname from dept where deptno=50 ),
job=(select loc from dept where deptno=50 )
where ename like 'S%'
33、刪除(2個表操作)操作:
sql>delete from emp where empno=
(select deptno from dept where deptno=50)
34、合併操作MERGE INTO:
sql>MERGE INTO 表名
Using 表名
ON(條件)
when Matched then (匹配)
update set ....
when not Matched then
insert into....
34、any/some操作,代表滿足any後面的任何一個條件即可:
sql>select * from emp
where sal<=any(2500,6000,10000);
35、all操作,代表滿足all後面的所有條件:
sql>select * from emp
where sal<=all(2500,6000,10000);
37、list操作:列出緩衝區的內容,可簡寫l,後接整型數字或為空
sql>list(n)
38、/操作:執行緩衝區sql命令或PL/SQL塊
39、change操作:修改緩衝區裡的資訊,可簡寫c
sql>c/fron/from
將fron改寫為from
40、del操作:刪除指定行緩衝區命令
sql>del 2 3 刪除第2行、第3行的資訊。
41、在緩衝區中追加資訊(追加到末尾)
sql>append where select;
42、save命令,儲存緩衝區內容到指定的檔案中:
sql>save c:\select.sql;
43、get命名(與save對應)
sql>get c:\select.sql;
44、@命令(與get相似,get是載入語句,然後執行,而@是載入和執行同時進行)
sql>@ c:\select.sql;
45、edit命令,載入windows作業系統的可編輯視窗,簡寫ed:
sql>edit
一、SQL PLUS
1 引言
SQL命令
以下17個是作為語句開頭的關鍵字:
alter drop revoke
audit grant rollback*
commit* insert select
comment lock update
create noaudit validate
delete rename
這些命令必須以“;”結尾
帶*命令句尾不必加分號,並且不存入SQL快取區。
SQL中沒有的SQL*PLUS命令
這些命令不存入SQL快取區
@ define pause
# del quit
$ describe remark
/ disconnect run
accept document save
append edit set
break exit show
btitle get spool
change help sqlplus
clear host start
column input timing
compute list ttitle
connect newpage undefine
copy
-------
2 資料庫查詢
資料字典
TAB 使用者建立的所有基表、檢視和同義詞清單
DTAB 構成資料字典的所有表
COL 使用者建立的基表的所有列定義的清單
CATALOG 使用者可存取的所有基表清單
select from tab;
describe命令 描述基表的結構資訊
describe dept
select
from emp;
select empno,ename,job
from emp;
select from dept
order by deptno desc;
邏輯運算子
= !=或<> > >= < <=
in
between value1 and value2
like
%
_
in null
not
no in,is not null
謂詞in和not in
有哪些職員和分析員
select ename,job
from emp
where job in ('clerk','analyst');
select ename,job
from emp
where job not in ('clerk','analyst');
謂詞between和not between
哪些僱員的工資在2000和3000之間
select ename,job,sal from emp
where sal between 2000 and 3000;
select ename,job,sal from emp
where sal not between 2000 and 3000;
謂詞like,not like
select ename,deptno from emp
where ename like 'S%';
(以字母S開頭)
select ename,deptno from emp
where ename like '%K';
(以K結尾)
select ename,deptno from emp
where ename like 'W___';
(以W開頭,後面僅有三個字母)
select ename,job from emp
where job not like 'sales%';
(哪些僱員的工種名不以sales開頭)
謂詞is null,is not null
沒有獎金的僱員(即commision為null)
select ename,job from emp
where comm is null;
select ename,job from emp
where comm is not null;
多條件查詢
select ename,job
from emp
where deptno=20
and job!='clerk';
表示式
/
算術表示式
選擇獎金高於其工資的5%的僱員
select ename,sal,comm,comm/sal from emp
where comm>.05*sal
order by comm/sal desc;
日期型資料的運算
add two days to 6Mar-87
6-Mar-87 2 = 8-Mar-87
add two hours to 6-Mar-87
6-Mar-87 2/24 = 6-Mar-87 and 2hrs
add 15 seconds to 6-Mar-87
6-Mar-87 15/(24*60*60) = 6-Mar-87 and 15 secs
列名的別名
select ename employee from emp
where deptno=10;
(別名:employee)
select ename,sal,comm,comm/sal "C/S RATIO" from emp
where comm>.05*sal
order by comm/sal desc;
SQL命令的編輯
list or l 顯示緩衝區的內容
list 4 顯示當前SQL命令的第4行,並把第4行作為當前行,在該行號後面有個*。
change or c 用新的內容替換原來在一行中第一次出現內容
SQL>c/(...)/('analyst')/
input or i 增加一行或多行
append or a 在一行後追加內容
del 刪除當前行 刪除SQL緩衝區中的當前行
run 顯示並執行SQL緩衝區中的命令
/ 執行SQL緩衝區中的命令
edit 把SQL緩衝區中的命令寫到作業系統下的文字檔案,
並呼叫作業系統提供的編輯器執行修改。
-----------
3 資料操縱
資料的插入
insert into dept
values (10,'accounting','new york');
insert into dept (dname,deptno)
values ('accounting',10);
從其它表中選擇插入資料
insert into emp (empno,ename,deptno)
select id,name,department
from old_emp
where department in(10,20,30,40);
使用引數
insert into dept
values(&deptno,&dname,&loc);
執行時,SQL/PLUS對每個引數將有提示使用者輸入
引數對應日期型或字元型資料時,可在引數上加引號,輸入時就可不用引號
insert into dept
values(&deptno,'&dname','&loc');
插入空值(NULL)
insert into dept
values(50,'education',null);
插入日期型資料
日期型資料預設格式:DD-MON-YY
insert into emp
(empno,ename,hiredate)
values(7963,'stone','07-APR-87');
系統時間:SYSDATE
insert into emp
(empno,ename,hiredate)
values(7600,'kohn',SYSDATE);
資料更新
update emp
set job='manager'
where ename='martin';
update emp
set job='market rep'
where ename='salesman';
update emp
set deptno=40,job='market rep'
where job='salesman';
資料刪除
delete emp
where empno=765;
更新的提交
commit
自動提交方式
set autocommit on
如果狀態設為開,則使用inesrt,update,delete會立即提交。
更新取消
rollback
兩次連續成功的commit之間的操作,稱為一個事務
-------------
4 建立基表、檢視
建立基表
create table dept
(deptno number(2),
dname char(14),
loc char(13));
資料字典會自動更新。
一個基表最多254列。
表名列名命名規則:
限制
第一個字元必須是字母,後面可任意(包括 $ # 但不能是逗號)。
名字不得超過30個字元。
唯一
某一使用者的基表名必須唯一,不能是ORACLE的保留字,同一基表的列名互不相同。
使用雙引號
如果表名用雙引號括起來,則可不滿足上述規則;
只有使用雙引號,才能區別大、小寫;
命名時使用了雙引號,在以