1 实例(SID) 访问数据库的一种方式。内存结构pga和sga pga:pga也称为私有全局区域或者程序全局区域。每一个用户链接oracle都会分配内存,pga里面存放用户链接oracle是使用
1 实例(SID)
访问数据库的一种方式。内存结构pga和sga
pga:pga也称为私有全局区域或者程序全局区域。每一个用户链接oracle都会分配内存,pga里面存放用户链接oracle是使用定什么工具,主机名是什么,IP地址是什么,端口,做了那些操作,等都会记录在pga中,用户推出pga回收,内存释放。注意pga是私有定。
sga:sga又叫做“系统全局区域”,也是实例的另外一部分。共享pga里面sql的ID号,共享其他信息,这个区域也叫做共享池,共享池里面的数据块也叫做数据库告诉缓冲区。数据库定DML 语句放在日志缓冲区。
2 数据库
存放数据的物理文件,可以理解为物理结构+逻辑结构
逻辑结构:表空间--》段--》区--》数据块
物理结构:日志文件,数据文件,控制文件,参数文件,密码文件(密码文件在$oracle_home下的dbs文件夹里面)
数据库存放在磁盘中,有五大类文件,其中数据库文件,控制文件,日志文件,内存中定文件最终都会写入磁盘。
参数文件:用来启动数据库,分配pga,sga,记录有几个控制文件,文件放在哪里。这个参数文件不是很关键,如果对参数文件丢失可以手动写一个才参数文件类启动数据库,数据是不会丢失的。
密码文件:记录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/productexport ORACLE_HOME=/u01/product/11gexport ORACLE_SID=orclexport 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 sysdbaSQL*Plus: Release 11.2.0.3.0 Production on Mon Nov 21 14:36:10 2016Copyright (c) 1982, 2011, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith 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/tigerConnected.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------------------------------SALGRADEBONUSEMPDEPT
排序:能不使用排序就不使用排序,排序会严重消耗pga和cpu,如果磁盘空间不足会排序会大大影响IO
sqlplus :使用l查看上一次的sql,c/原来定字符/改变定字符 可以修改上一次定sql,a 对原来定sql进行添加
SQL> l 1* selectt table_name from user_tablesSQL> c/selectt/select 1* select table_name from user_tablesSQL> /TABLE_NAME------------------------------SALGRADEBONUSEMPDEPT
上面用c/old/new 方式更新之前的sql
SQL> l 1* select ename from empSQL> a where 1 = 2; 1* select ename from emp where 1 = 2SQL> /no rows selected
上面的用a 对上一次的字符从进行添加
SQL> l 1 select ename, 2 sal 3 from 4* empSQL> l2 2* salSQL> i ,jobSQL> ; 1 select ename, 2 sal 3 ,job 4 from 5* empSQL> /ENAME SAL JOB---------- ---------- ---------SMITH 800 CLERKALLEN 1600 SALESMANWARD 1250 SALESMANJONES 2975 MANAGERMARTIN 1250 SALESMANBLAKE 2850 MANAGERCLARK 2450 MANAGERSCOTT 3000 ANALYSTKING 5000 PRESIDENTTURNER 1500 SALESMANADAMS 1100 CLERKENAME SAL JOB---------- ---------- ---------JAMES 950 CLERKFORD 3000 ANALYSTMILLER 1300 CLERK14 rows selected.
如上面,如果是多行sql,可以用类l2 显示第二行,然后用i 插入
SQL> save /tmp/test.sqlCreated file /tmp/test.sql
之前的操作保存成一个文件
SQL> spool /tmp/1.sqlSQL> select ename from emp;ENAME----------SMITHALLENWARDJONESMARTINBLAKECLARKSCOTTKINGTURNERADAMSENAME----------JAMESFORDMILLER14 rows selected.SQL> spool off;
如上图所示,用spoor /tmp/1.sql 会把后面的所有操作都保存在文件中
set linesize 300 设置一行定宽度
SQL> show linesize;linesize 80SQL> 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 300SQL> 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 100SQL> 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 1014 rows selected.设置每也显示100行就好看了
set heading on 打开显示列标题,关闭off
SQL> set heading offSQL> 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函数处理