侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

oracle 体系简识

2023-12-09 星期六 / 0 评论 / 0 点赞 / 109 阅读 / 10879 字

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

广告 广告

评论区