Fork me on GitHub

oracle

官网:https://www.oracle.com/index.html
版本中字母的含义:c(cloud)、g(grid)、i(internet)

下载:https://www.oracle.com/downloads/,需要登录oracle官网,下载的两个文件解压在一个文件夹中

安装:

  1. 安装Oracle11g出现INS-13001环境不满足最低要求 https://blog.csdn.net/q_sea__/article/details/79012808
  2. Environment variable: “PATH”
    安装时确保不要关机或断电;安装过程中复制文件过程比较耗费时间

完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。

  1. 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等);
  2. Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。

在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件。Oracle有一个很大的内存快,称为全局区(SGA)。

数据库的创建与监听器的配置54C
创建数据库:Database Conguration Assistant,可以创建、配置、删除、管理数据库
全局数据库名称为数据库名称,其至少要有一个Oracle实例引用,该实例由SID唯一标识,如:orcl
配置Enterprise Manager会占用较大内存,先不配置;注意选择字符集;修改scott和hr的密码
sys用户为数据库的所有者,system用户为数据库的操作员
监听器的配置:Net Conguration Assistant,配置完成后在系统服务中查看添加了OracleOraDb11g_home1TNSListener,此服务启动之后就允许外部连接数据库了
OracleServiceORCL是关于数据库实例的服务,此服务启动之后,数据库才可用

oracle常用数据库工具
Oracle Universal Installer:OUI(Oracle全局安装器),用来安装卸载oracle数据库管理系统
Database Conguration Assistant:(DBCA)创建、配置、删除、管理数据库
Net Conguration Assistant:(NCA)监听器、命名方法、本地网络服务名、目录使用配置
SQL Plus:基于命令行的oracle官方操作工具
SQL Devloper:基于Java的图形化的oracle官方操作工具,需人工关联sqldeveloper.exe文件和配置JDK
PL/SQL Devloper:第三方工具
TOAD:第三方工具

Oracle中的用户、权限与角色
用户管理:需切换到system用户操作
创建用户:create user 用户名 identified by 密码 [account lock|unlock] [password expire];(password expire表示密码立即过期,第一次登录后需修改密码)用户创建后还需授权才能操作数据库
修改用户:alter user 用户名 identified by 密码 [account lock|unlock] [password expire];
删除用户:drop user 用户名 [cascade];(cascade用来表示删除用户下的所有数据对象)
权限管理:权限为系统中设置的安全规则或安全策略,分为系统权限(用户能否在数据库上完成某个动作)和对象权限(用户能否在某个数据库对象上完成某种操作)
系统权限授予:grant 权限 to user|role [with admin option];(表示可以级联授予)
系统权限回收:revoke 权限 from user|role;
对象权限授予:grant 权限[(col,…)] on 数据库对象 to user|role [with admin option];
对象权限回收:revoke 权限[(col,…)] on 数据库对象 from user|role;
对象权限的回收是级联的,系统权限回收是非级联的
角色管理:角色是权限的集合,用来简化权限管理
创建/删除角色:create/drop role 角色;
角色上系统权限授予:grant 权限 to role [with admin option];(表示可以级联授予)
角色上系统权限回收:revoke 权限 from 角色;
角色上对象权限授予:grant 权限[(col,…)] on 数据库对象 to role [with admin option];
角色上对象权限回收:revoke 权限[(col,…)] on 数据库对象 from role;
用户角色授予:grant 角色 to 用户;
用户角色回收:revoke 角色 from 用户;

Oracle表:由行和列组成的数据库中基本的存储单元,访问其他用户的表需要加用户名作为前缀
约束:表级别约束和列级别约束,由主键、外键、非空、唯一、检查5种约束
启用表的只读状态便于备份和导出表:alter table 表名 read only;启用表的读写状态:alter table 表名 read write;

Oracle事务:有一组DML组成的逻辑工作单元,有原子性、一致性、独立性和持久性

序列sequence:数值生成器,通常用于生成主键值,

dual是Oracle提供的最小的工作表,只有一行一列,具有某些特殊功用,只有一条记录:‘X’,习惯上,我们称之为’伪表’,他的存在是为了操作上的方便,因为select都是要有特定对象的.
select count(*) from dual;

索引和同义词的使用
索引:通过关联ROWID和关键值来提升查询速度
同义词:数据库对象的别名,public同义词对所有用户有用,创建需一定权限
创建:create [public] synonym 名称 for object;
删除:drop [public] synonym 名称 for object;

PL/SQL:是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点
官网:https://www.oracle.com/technetwork/database/features/plsql/index.html
PL/SQL developer官网:https://www.allroundautomations.com/
PLSQL Developer 12 注册码
product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le
serial Number:226959
password: xs374ca

配置pl/sql的Database的两种方式:
确保OracleOraDb11g_home1TNSListener和OracleServiceXXXX服务已启动
1.登录时直接在Database选项输入数据库信息:在登录时输入数据库信息 ip:端口/数据库名,如:127.0.0.1:1521/ORCL
2.配置product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora文件,添加一下内容到文档最后,登录时输入如ORCL即可登录
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

https://www.jikexueyuan.com/course/oracledb/

https://www.oracle.com/technetwork/topics/winsoft-085727.html

https://www.cnblogs.com/xiashiwendao/p/7634240.html

严格来讲SQL会分为三种类型:

1、数据操纵语言(DML):用来操纵数据库中数据的命令。包括:select、insert、update、delete。

2、数据定义语言(DDL):用来建立数据库、数据库对象和定义列的命令。包括:create、alter、drop。

3、数据控制语言(DCL):用来控制数据库组件

用select * from tab;来查询用户下的表
查看表结构用:DESC 表名称

https://www.cnblogs.com/adforce/p/3312252.html
全局数据库名:就是一个数据库的标识,在安装时就要想好,以后一般不修改,修改起来也麻烦,因为数据库一旦安装,数据库名就写进了控制文件,数据库表,很多地方都会用到这个数据库名。
启动数据库:也叫全局数据库,是数据库系统的入口,它会内置一些高级权限的用户如SYS,SYSTEM等。我们用这些高级权限账号登陆就可以在数据库实例中创建表空间,用户,表了。

查询当前数据库名:select name from v$database;

我们访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。
实例名指的是用于响应某个数据库操作的数据库管理系统的名称。她同时也叫SID。实例名是由参数instance_name决定的
查询当前数据库实例名:select instance_name from v$instance;

从oracle9i版本开始,引入了一个新的参数,即数据库服务名。数据库的逻辑表示,它是数据库呈现给客户机的方式。参数名是SERVICE_NAME。如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。

网络服务名(NET SERVICES NAME)
         它是“连接描述符”简称,连接描述符是网络连接目标特殊格式的描述,它包括网络协议、主机名称或地址、和目标服务
         在Oracle7和Oracle8版本,目标服务由Oracle系统标识符(SID)来标识,而Oracle8i、Oracle9i则通过数据库服务名来来标识。保存tnsnames.ora文件中在格式如下:
 myDB =
   (DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.1)(PORT = 1521))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = testDB.ChinaMobile.com)
     )
   )

若要向ORACLE代理商购买ORACLE,是以用户数来算钱的。那么,这个“用户”跟我们在ORACLE中通过

CREATE USER USERNAME IDENTIFIED BY PASSWORD创建的用户是不同概念,“用户数”指的是并发访问用户数,

(我理解是同时间访问同一个内存地址的进程数)。要是我买了8个用户的,可以建几十、上百个用户也没问题,只要峰值达不到并发数就可以了。

打个比方,你的名字叫小明,但是你有很多外号。你父母叫你小明,但是朋友都叫你的外号。
这里你的父母就是oracle实例,小明就是sid,service name就是你的外号。
sid用于实例区分各个数据库,service name用于外部链接。

一个Oracle Server由一个Oracle实例和一个Oracle数据库组成。
即:Oracle Server = Oracle Instance + Oracle Database

Oracle实例包括了内存结构(SGA)和一系列后台进程(Background Process),两者合起来称为一个Oracle实例,即:Oracle Instance = SGA + Background Process

数据库逻辑组织结构
表空间、段、区、块
一个数据库由一个或多个表空间组成,一个表空间只能属于一个数据库
一个表空间由一个或多个多个数据文件组成,一个数据文件只能属于一个表空间
一个数据文件由一个或多个操作系统块组成,每一个操作系统块只能数以一个数据文件
一个表空间可以包含一个或多个段,一个段只能属于一个表空间
一个段由一个或多个区组成,每一个区只能属于一个段
一个区由一个或多个Oracle 块组成,每一个Oracle块只能属于一个区
一个区只能属于一个数据文件,数据文件的空间可以分配到一个或多个区
一个Oracle 块由一个或多个操作系统块组成,一个操作系统块是一个Oracle块的一部分

https://blog.csdn.net/prince_lintb/article/details/78772999

pl/sql plus: "/"表示执行

scott库:https://www.2cto.com/database/201805/742911.html

https://www.cnblogs.com/adforce/p/3312252.html
http://www.cnblogs.com/kscnchina/p/4570865.html

声明时,变量以v_开头,常量以c_开头

https://blog.csdn.net/michaelehome/article/details/79464214

select userenv(‘language’) from dual;
NLS_LANG=“AMERICAN_AMERICA.AL32UTF8”

字符集:https://www.cnblogs.com/kaishirenshi/p/9018343.html

本地动态sql

SQL环境 begin … end pl/sql环境

一组SQL语句操作要成为事务,数据库管理系统必须保证这组操作的原子性(Atomicity)、一致性(consistency)、隔离性(Isolation)和持久性(Durability),这就是ACID特性。

本文标题:oracle

文章作者:行锋

发布时间:2018年12月12日 - 23:12

最后更新:2019年01月11日 - 00:01

原始链接:https://chetaofeng.github.io/2018/12/12/数据库-2018-12-12-oracle/

许可协议: 署名-非商业性使用 转载请保留原文链接及作者

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!