oracle 体系简识
博客专区 > wzl_up 的博客 > 博客详情
oracle 体系简识
wzl_up 发表于1年前
oracle 体系简识
  • 发表于 1年前
  • 阅读 27
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

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/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函数处理

标签: oracle
共有 人打赏支持
粉丝 21
博文 118
码字总数 120291
×
wzl_up
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: