1.create user username identified by password;//建用戶名和密碼oracle ,oracle
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),新和企業(yè)網(wǎng)站建設(shè),新和品牌網(wǎng)站建設(shè),網(wǎng)站定制,新和網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,新和網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
2.grant connect,resource,dba to username;//授權(quán) grant connect,resource,dba,sysdba to username;
3.connect username/password//進(jìn)入。
4.select table_name,column_name from user_tab_columns where table_name='TABLE_NAME';//查詢表中的表名,字段名等等。 最后的table_name要大寫。
5. 如何執(zhí)行腳本SQL文件? SQL@PATH/filename.sql;
7.查詢用戶下的所有表 select distinct table_name from user_tab_columns; ===僅顯示一列表名。
8.如何搜索出前N條記錄?
select * from tablename where rownumn;--足矣。(--是注釋用的標(biāo)記)
9.查找用戶下的所有表:select * from tab; --查詢?cè)撚脩粝碌乃斜砑耙晥D(顯示表名tname, 類型tabname和clusterid)
2、顯示當(dāng)前連接用戶
SQL show user –不能用在sql窗口 只能用在command命令窗口。
3、查看系統(tǒng)擁有哪些用戶
SQL select * from all_users;
4、新建用戶并授權(quán)
SQL create user a identified by a;(默認(rèn)建在SYSTEM表空間下)
SQL grant connect,resource to a;
5、連接到新用戶
SQL conn a/a –或者是connect a/a
6、查詢當(dāng)前用戶下所有對(duì)象
SQL select * from tab; --table或是view
7、建立第一個(gè)表
SQL create table a(a number);
8、查詢表結(jié)構(gòu)
SQL desc a
9、插入新記錄
SQL insert into a values(1);
10、查詢記錄
SQL select * from a;
11、更改記錄
SQL update a set a=2;
12、刪除記錄
SQL delete from a;
13、回滾
SQL roll;
SQL rollback;
14、提交
SQL commit;
select * from
(select t.*,dense_rank() over (order by cardkind) rank from cardkind t)
where rank = 2;
46. 如何在字符串里加回車?
select 'Welcome to visit'||chr(10)||'' from dual ; --‘||chr(10)||’作為換行符
53. 如何使select語句使查詢結(jié)果自動(dòng)生成序號(hào)?
select rownum COL from table; --主要就是oracle中引入了rownum
54. 如何知道數(shù)據(jù)褲中某個(gè)表所在的tablespace?
select tablespace_name from user_tables where table_name='TEST'; --table_name名稱要大寫。
select * from user_tables中有個(gè)字段TABLESPACE_NAME,(oracle);
select * from dba_segments where …;
55. 怎么可以快速做一個(gè)和原表一樣的備份表?
create table new_table as (select * from old_table);
59. 請(qǐng)問如何修改一張表的主鍵?
alter table aaa drop constraint aaa_key ;
alter table aaa add constraint aaa_key primary key(a1,b1) ;
60. 改變數(shù)據(jù)文件的大小?
用 ALTER DATABASE .... DATAFILE .... ;
手工改變數(shù)據(jù)文件的大小,對(duì)于原來的 數(shù)據(jù)文件有沒有損害。
61. 怎樣查看ORACLE中有哪些程序在運(yùn)行之中?
查看v$session表
62. 怎么可以看到數(shù)據(jù)庫(kù)有多少個(gè)tablespace?
select * from dba_tablespaces;
-- 查詢你 當(dāng)前用戶下,有哪些表
SELECT * FROM user_tables
-- 查詢你 當(dāng)前用戶下, 可以訪問哪些表 [也就是訪問自己 和 其他用戶的]
SELECT * FROM all_tables
-- 查詢當(dāng)前數(shù)據(jù)庫(kù)所有的表, 需要你有 DBA 的權(quán)限
SELECT * FROM dba_tables
oracle對(duì)于數(shù)據(jù)庫(kù)中的表信息,存儲(chǔ)在系統(tǒng)表中。查詢已創(chuàng)建好的表索引,可通過相應(yīng)的sql語句到相應(yīng)的表中進(jìn)行快捷的查詢:\x0d\x0a1. 根據(jù)表名,查詢一張表的索引\x0d\x0a\x0d\x0aselect * from user_indexes where table_name=upper('表名');\x0d\x0a\x0d\x0a2. 根據(jù)索引號(hào),查詢表索引字段\x0d\x0a\x0d\x0aselect * from user_ind_columns where index_name=('索引名');\x0d\x0a\x0d\x0a3.根據(jù)索引名,查詢創(chuàng)建索引的語句\x0d\x0a\x0d\x0aselect dbms_metadata.get_ddl('INDEX','索引名', ['用戶名']) from dual ; --['用戶名']可省,默認(rèn)為登錄用戶\x0d\x0a\x0d\x0aPS:dbms_metadata.get_ddl還可以得到建表語句,如:\x0d\x0a\x0d\x0aSELECT DBMS_METADATA.GET_DDL('TABLE','表名', ['用戶名']) FROM DUAL ; //取單個(gè)表的建表語句,['用戶名']可不輸入,默認(rèn)為登錄用戶\x0d\x0aSELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; //取用戶下所有表的建表語句\x0d\x0a\x0d\x0a當(dāng)然,也可以用pl/sql developer工具來查看相關(guān)的表的各種信息。
一、通過PL/SQL Dev工具
1、直接File-New-Explain Plan Window,在窗口中執(zhí)行sql可以查看計(jì)劃結(jié)果。其中,Cost表示cpu的消耗,單位為n%,Cardinality表示執(zhí)行的行數(shù),等價(jià)Rows。
2、先執(zhí)行 EXPLAIN PLAN FOR select * from tableA where paraA=1,再 select * from table(DBMS_XPLAN.DISPLAY)便可以看到oracle的執(zhí)行計(jì)劃了,看到的結(jié)果和1中的一樣,所以使用工具的時(shí)候推薦使用1方法。
注意:PL/SQL Dev工具的Command window中不支持set autotrance on的命令。還有使用工具方法查看計(jì)劃看到的信息不全,有些時(shí)候我們需要sqlplus的支持。
二、通過sqlplus
1.最簡(jiǎn)單的辦法
Sql set autotrace on
Sql select * from dual;
執(zhí)行完語句后,會(huì)顯示explain plan 與 統(tǒng)計(jì)信息。
這個(gè)語句的優(yōu)點(diǎn)就是它的缺點(diǎn),這樣在用該方法查看執(zhí)行時(shí)間較長(zhǎng)的sql語句時(shí),需要等待該語句執(zhí)行成功后,才返回執(zhí)行計(jì)劃,使優(yōu)化的周期大大增長(zhǎng)。如果不想執(zhí)行語句而只是想得到執(zhí)行計(jì)劃可以采用:
Sql set autotrace traceonly
這樣,就只會(huì)列出執(zhí)行計(jì)劃,而不會(huì)真正的執(zhí)行語句,大大減少了優(yōu)化時(shí)間。雖然也列出了統(tǒng)計(jì)信息,但是因?yàn)闆]有執(zhí)行語句,所以該統(tǒng)計(jì)信息沒有用處,如果執(zhí)行該語句時(shí)遇到錯(cuò)誤,解決方法為:
(1)在要分析的用戶下:
Sqlplus @ ?
dbmsadminutlxplan.sql
(2) 用sys用戶登陸
Sqlplus @ ?sqlplusadminplustrce.sql
Sqlplus grant plustrace to user_name;
- - user_name是上面所說的分析用戶
2.用explain plan命令
(1) sqlplus explain plan for select * from testdb.myuser
(2) sqlplus select * from table(dbms_xplan.display);
上面這2種方法只能為在本會(huì)話中正在運(yùn)行的語句產(chǎn)生執(zhí)行計(jì)劃,即我們需要已經(jīng)知道了哪條語句運(yùn)行的效率很差,我們是有目的只對(duì)這條SQL語句去優(yōu)化。其實(shí),在很多情況下,我們只會(huì)聽一個(gè)客戶抱怨說現(xiàn)在系統(tǒng)運(yùn)行很慢,而我們不知道是哪個(gè)SQL引起的。此時(shí)有許多現(xiàn)成的語句可以找出耗費(fèi)資源比較多的語句,如:
SELECT ADDRESS, substr(SQL_TEXT,1,20) Text, buffer_gets, executions,
buffer_gets/executions AVG FROM v$sqlarea
WHERE executions0 AND buffer_gets 100000 ORDER BY 5;
ADDRESS TEXT BUFFER_GETS EXECUTIONS AVG
-------- ---------------------------------------- ----------- ---------- ------------------------------------------------------------
66D83D64 select t.name, (sel 421531 60104 7.01336017
66D9E8AC select t.schema, t.n 1141739 2732 417.913250
66B82BCC select s.synonym_nam 441261 6 73543.5
從而對(duì)找出的語句進(jìn)行進(jìn)一步優(yōu)化。當(dāng)然我們還可以為一個(gè)正在運(yùn)行的會(huì)話中運(yùn)行的所有SQL語句生成執(zhí)行計(jì)劃,這需要對(duì)該會(huì)話進(jìn)行跟蹤,產(chǎn)生trace文件,然后對(duì)該文件用tkprof程序格式化一下,這種得到執(zhí)行計(jì)劃的方式很有用,因?yàn)樗渌~外信息,如SQL語句執(zhí)行的每個(gè)階段(如Parse、Execute、Fetch)分別耗費(fèi)的各個(gè)資源情況(如CPU、DISK、elapsed等)。
3、啟用SQL_TRACE跟蹤所有后臺(tái)進(jìn)程活動(dòng):
全局參數(shù)設(shè)置: .OracleHome/admin/SID/pfile中指定: SQL_TRACE = true (10g)
當(dāng)前session中設(shè)置:
SQL alter session set SQL_TRACE=true;
SQL select * from dual;
SQL alter session set SQL_TRACE=false;
對(duì)其他用戶進(jìn)行跟蹤設(shè)置:
SQL select sid,serial#,username from v$session where username='XXX';
SID SERIAL# USERNAME
------ ---------- ------------------
127 31923 A
128 54521 B
開啟跟蹤:SQL exec dbms_system.set_SQL_TRACE_in_session(127,31923,true);
關(guān)閉跟蹤:SQL exec dbms_system.set_SQL_TRACE_in_session(127,31923,false);
然后使用oracle自帶的tkprof命令行工具格式化跟蹤文件。
4、使用10046事件進(jìn)行查詢:
10046事件級(jí)別:
Lv1 - 啟用標(biāo)準(zhǔn)的SQL_TRACE功能,等價(jià)于SQL_TRACE
Lv4 - Level 1 + 綁定值(bind values)
Lv8 - Level 1 + 等待事件跟蹤
Lv12 - Level 1 + Level 4 + Level 8
全局設(shè)定:
OracleHome/admin/SID/pfile中指定: EVENT="10046 trace name context forever,level 12"
當(dāng)前session設(shè)定:
開啟:SQL alter session set events '10046 trace name context forever, level 8';
關(guān)閉:SQL alter session set events '10046 trace name context off';
對(duì)其他用戶進(jìn)行設(shè)置:
SQL select sid,serial#,username from v$session where username='XXX';
SID SERIAL# USERNAME
------ ---------- ------------------
127 31923 A
SQL exec dbms_system.set_ev(127,31923,10046,8,'A');
5、使用tkprof格式化跟蹤文件: (根據(jù)下面SQL語句得到的文件都不存在該目錄下,郁悶啊,懵懂啊...)
一般,一次跟蹤可以分為以下幾步:
1、界定需要跟蹤的目標(biāo)范圍,并使用適當(dāng)?shù)拿顔⒂盟韪櫋?/p>
2、經(jīng)過一段時(shí)間后,停止跟蹤。此時(shí)應(yīng)該產(chǎn)生了一個(gè)跟蹤結(jié)果文件。
3、找到跟蹤文件,并對(duì)其進(jìn)行格式化,然后閱讀或分析。
--使用一下SQL找到當(dāng)前session的跟蹤文件:
SELECT d.value|| '/' ||lower(rtrim(i.instance, chr( 0 )))|| '_ora_' ||p.spid|| '.trc' trace_file_namefrom( select p.spid from v$mystat m,v$session s, v$process pwhere m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,( select t.instance from v$thread t,v$parameter vwhere v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,( select value from v$parameter where name = 'user_dump_dest' ) d;-- 其它用戶的 session SELECT d.value|| '/' ||lower(rtrim(i.instance, chr( 0 )))|| '_ora_' ||p.spid|| '.trc' trace_file_name from ( select p.spid from v$session s, v$process p where s.sid= '27' and s. SERIAL#= '30' and p.addr = s.paddr) p, ( select t.instance from v$thread t,v$parameter v where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i, ( select value from v$parameter where name = 'user_dump_dest' ) d;
--查找后使用tkprof命令,將TRACE文件格式為到D盤的explain_format.txt文件中
SQL $tkprof d:/oracle/admin/FZLGFM/udump/fzlgfm_ora_3468.trc d:/explain_format.txt
文件內(nèi)容大致如下(看不太懂....懵懂啊.....天啊....神啊.....過幾時(shí)就懂了/////////////)
TKPROF: Release 9.2.0.1.0 - Production on 星期二 4月 20 13:59:20 2010
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Trace file: d:/oracle/admin/FZLGFM/udump/fzlgfm_ora_3468.trc
Sort options: default
********************************************************************************
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call********************************************************************************
alter session set events '10046 trace name context forever, level 8'
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 0 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 0 0.00 0.00 0 0 0 0
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 1 0.00 0.00 0 0 0 0
Misses in library cache during parse: 0
Misses in library cache during execute: 1
Optimizer goal: CHOOSE
Parsing user id: SYS
使用sql語句,查詢oracle的表注釋等信息方法如下:
一、Oracle 下讀取表/字段的備注信息,Oracle 通過COMMENT ON TABLE? /? COMMENT ON COLUMN 追加表/字段的備注。
COMMENT ON TABLE ,MR_DEPT,IS 。
COMMENT ON COLUMN ,MR_DEPTDEPT_ID,IS。
COMMENT ON COLUMN ,MR_DEPT"PARENT_ID,IS。
COMMENT ON COLUMN ,MR_DEPT"DEPT_NAME,IS 。
COMMENT ON COLUMN ,MR_DEPT"STATUS,IS 。
二、查詢表的備注信息
SELECT。
TABLE_NAME。
TABLE_TYPE。
COMMENTS。
FROM。
USER_TAB_COMMENTS。
WHERE-TABLE_NAME -MR_DEPT。
三、查詢字段的備注信息
TABLE_NAME。
COLUMN_NAME。
COMMENTS
FROM。
USER_COL_COMMENTS。
WHERE-TABLE_NAME - 'MR_DEPT。
dbms_metadata.get_ddl('TABLE','表名','用戶名')
不過這個(gè)函數(shù)需要權(quán)限(這是一個(gè)函數(shù),函數(shù)怎么用它就怎么用,只是后面的表是虛表dual即可),相關(guān)數(shù)據(jù)字典視圖的查詢權(quán)限。
一般認(rèn)為select any dictionary權(quán)限就可以,有時(shí)需要授權(quán) select_catalog_role權(quán)限才行。
另外在plsql dev中也有能查詢相關(guān)建表語句的選項(xiàng),不過該軟件更新比較頻繁,現(xiàn)在具體怎么操作要自己仔細(xì)找找才可以。