1 實例(SID)sql
訪問數據庫的一種方式。內存結構pga和sga數據庫
pga:pga也稱爲私有全局區域或者程序全局區域。每個用戶連接oracle都會分配內存,pga裏面存放用戶連接oracle是使用定什麼工具,主機名是什麼,IP地址是什麼,端口,作了那些操做,等都會記錄在pga中,用戶推出pga回收,內存釋放。注意pga是私有定。服務器
sga:sga又叫作「系統全局區域」,也是實例的另一部分。共享pga裏面sql的ID號,共享其餘信息,這個區域也叫作共享池,共享池裏面的數據塊也叫作數據庫告訴緩衝區。數據庫定DML 語句放在日誌緩衝區。oracle
2 數據庫ide
存放數據的物理文件,能夠理解爲物理結構+邏輯結構函數
邏輯結構:表空間--》段--》區--》數據塊工具
物理結構:日誌文件,數據文件,控制文件,參數文件,密碼文件(密碼文件在$oracle_home下的dbs文件夾裏面)日誌
數據庫存放在磁盤中,有五大類文件,其中數據庫文件,控制文件,日誌文件,內存中定文件最終都會寫入磁盤。code
參數文件:用來啓動數據庫,分配pga,sga,記錄有幾個控制文件,文件放在哪裏。這個參數文件不是很關鍵,若是對參數文件丟失能夠手動寫一個才參數文件類啓動數據庫,數據是不會丟失的。server
密碼文件:記錄sysdba的密碼。普通用戶的密碼是放在數據庫中的,不在這裏。
歸檔文件:數據庫要打開歸檔功能,用來備份連接日誌。
3 數據庫服務器
數據庫服務器=實例+數據庫
4 監聽
動態監聽,數據庫安裝完成以後自動啓動監聽
通常若是報錯ora-12541 就是監聽出了問題
5 登陸數據庫
查看數據庫是否打開
select open_mode from v$database;
SQL> select name,open_mode from v$database; NAME OPEN_MODE --------- -------------------- ORCL READ WRITE
數據庫新建完成以後不必定是打開定,先用上面定select open_mode from v$database;查看數據庫狀態
沒有掛載定能夠掛載,沒有打開定能夠打開
SQL> alter database orcl mount; alter database orcl mount * ERROR at line 1: ORA-01100: database already mounted 這個數據庫已經掛載
SQL> alter database orcl open; alter database orcl open * ERROR at line 1: ORA-01531: a database already open by the instance 這個數據庫已是打開的
sysplus 數據庫連接,究竟是連接的哪一個數據庫(實例)?這個在咱們的環境變量裏面有配置,也就是以前咱們配置定.db 環境變量文件:
[root@wangzilong oracle]# cat .db export ORACLE_BASE=/u01/product export ORACLE_HOME=/u01/product/11g export ORACLE_SID=orcl export PATH=$ORACLE_HOME/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
[root@wangzilong oracle]# sqlplus sys/123456 as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon Nov 21 14:36:10 2016 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options
運行上面的環境變量文件. .db 以後登陸sqlplus sys/123456 as sysdba 登陸的就是環境變量配置文件裏面配置的ORACLE_SID=orcl 實例就是orcl。
登陸以前切換實例用:export ORACLE_SID=base1 就是在登陸以前切換實例
在登陸以後進行用戶切換:
conn username/password 切換數據庫
SQL> show user; USER is "SYS" SQL> conn scott/tiger Connected. SQL> show user; USER is "SCOTT"
若是密碼到期,解鎖並從新更新密碼
alter user scott "scott" identified by "123456" account unlock;
DBA 查看用戶下有哪些表
select table_name from dba_tables
普通用戶查看用戶下有哪些表
SQL> select table_name from user_tables; TABLE_NAME ------------------------------ SALGRADE BONUS EMP DEPT
排序:能不使用排序就不使用排序,排序會嚴重消耗pga和cpu,若是磁盤空間不足會排序會大大影響IO
sqlplus :使用l查看上一次的sql,c/原來定字符/改變定字符 能夠修改上一次定sql,a 對原來定sql進行添加
SQL> l 1* selectt table_name from user_tables SQL> c/selectt/select 1* select table_name from user_tables SQL> / TABLE_NAME ------------------------------ SALGRADE BONUS EMP DEPT
上面用c/old/new 方式更新以前的sql
SQL> l 1* select ename from emp SQL> a where 1 = 2; 1* select ename from emp where 1 = 2 SQL> / no rows selected
上面的用a 對上一次的字符從進行添加
SQL> l 1 select ename, 2 sal 3 from 4* emp SQL> l2 2* sal SQL> i ,job SQL> ; 1 select ename, 2 sal 3 ,job 4 from 5* emp SQL> / ENAME SAL JOB ---------- ---------- --------- SMITH 800 CLERK ALLEN 1600 SALESMAN WARD 1250 SALESMAN JONES 2975 MANAGER MARTIN 1250 SALESMAN BLAKE 2850 MANAGER CLARK 2450 MANAGER SCOTT 3000 ANALYST KING 5000 PRESIDENT TURNER 1500 SALESMAN ADAMS 1100 CLERK ENAME SAL JOB ---------- ---------- --------- JAMES 950 CLERK FORD 3000 ANALYST MILLER 1300 CLERK 14 rows selected.
如上面,若是是多行sql,能夠用類l2 顯示第二行,而後用i 插入
SQL> save /tmp/test.sql Created file /tmp/test.sql
以前的操做保存成一個文件
SQL> spool /tmp/1.sql SQL> select ename from emp; ENAME ---------- SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS ENAME ---------- JAMES FORD MILLER 14 rows selected. SQL> spool off;
如上圖所示,用spoor /tmp/1.sql 會把後面的全部操做都保存在文件中
set linesize 300 設置一行定寬度
SQL> show linesize; linesize 80 SQL> select * from emp where sal > 4000; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ---------- DEPTNO ---------- 7839 KING PRESIDENT 17-NOV-81 5000 10 原來定顯示比較窄,會換行
SQL> set linesize 300 SQL> select * from emp where sal > 4000; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7839 KING PRESIDENT 17-NOV-81 5000 10 設置行寬度就比較好了
show pagesize 看到默認定一頁顯示多少行
SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 原來定只顯示十幾行就分頁列,很差看
set pagesize 100 一頁顯示100行
SQL> set pagesize 100 SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 14 rows selected. 設置每也顯示100行就好看了
set heading on 打開顯示列標題,關閉off
SQL> set heading off SQL> select * from emp where sal > 4000; 7839 KING PRESIDENT 17-NOV-81 5000 10 能夠不顯示錶頭
col col_name for a10,改變顯示列的寬度
show all 能夠看見不少的命令 autocommit off 自動提交關閉 autoprint off 自動打印關閉 auttrace off 自動打開執行計劃關閉 colsep 「 」 表示列與列直接用空格分開 serveroutput off 輸出功能不打開,plsql 要打開這個 timing off 執行時長不顯示 空值nvl函數處理