Oracle

作者: luckee | 来源:发表于2019-03-07 13:18 被阅读0次

oracle经典教程
oracle经典教程百度文库

安装

  1. 选择安装软件和配置数据,不要选只安装软件的那一项(如果选只安装软件,那后面我需要单独去创建数据库,还不如在安装软件的同时创建一个数据库)
  2. 记得设置并记住口令,即sys账户的密码
  3. 先决条件阶段如果提示内存检查失败,则cmd运行regedit进入注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters 选中Parameters,在右边名称中找到AutoShareWks 项,在其右键菜单中 ,点击修改,将其“数值数据(V):”由原来的0改为1,然后点击确定。重启电脑重新安装,安装完记得改回来
  4. 字符编码选择Unicode(AL32uft8)

安装后

  1. 连接时提示无监听程序
    确保打开了监听服务(打开Windows服务可以看到Oracle有七八个服务,有一个带有listener的就是监听服务),然后配置监听程序product\11.2.0\dbhome_1\NETWORK\ADMIN目录下有个tnsnames.ora配置文件

区别

Oracle的概念跟其他的数据库有很大的不同,它的结构图如下


image.png
image.png

数据库

Oracle一般只创建一个数据库,也就是说一个ip+port(Oracle端口默认1521)一般只创建一个数据库(当然也可以创建多个数据库,使用SID即服务ID来区分,也叫作全局数据库名,默认创建的数据库一般SID为orcl)。查询当前数据库名select name from v$database;

实例

类似于其他数据库的连接,实例名也叫SID,查看当前实例名select instance_name from v$instance;
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。

  1. 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等);
  2. Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。
    在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件。Oracle有一个很大的内存快,成为全局区(SGA)。

表空间

Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表。有了数据库,就可以创建表空间。
表空间(tablespace)是数据库的逻辑划分,表空间的概念类似于mysql的数据库
创建表空间

create tablespace db_test  //表空间名
datafile 'D:\oracle\product\10.2.0\userdata\db_test.dbf'  //表空间路径地址
size 50m  //大小
autoextend on; //空间自动增长
next 10m
maxsize 500m
extent management local;

用户

在安装Oracle的过程中会要求输入口令,其实就是为最高用户(sys)设置密码,sys账户就相当于mysql的root,所以一定要设置并记住这个口令
创建用户

CREATE USER username
IDENTIFIED BY password  
DEFAULT TABLESPACE db_test  
TEMPORARY TABLESPACE temp;

授予权限(角色)

GRANT CONNECT TO username;  //临时用户
GRANT RESOURCE TO username;  //一般用户
GRANT dba TO username; //管理员

撤回权限(角色)

Revoke dba from username

连接类型

  • SYSDBA
    管理员用户
  • Normal
    一般用户

创建表

create table t_stu(  
  stuid      number(10)   primary key,  
  stuname    varchar2(20) not null,  
  stusex     varchar2(2)  default '男' check(stusex in('男','女'))
); 

驱动和URL

RDBMS JDBC驱动程序名称 URL格式
MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname/databaseName
ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:portNumber:databaseName
PostgreSQL org.postgresql.Driver jdbc:postgresql://hostname:port/dbname

oracle可以一个用户指定多个表空间吗

只能设置一个default tablespace,但是有一个角色叫做resource,如果将这个角色授予了用户,用户默认就有了一个unlimited tablespace权限,拥有这个权限的用户将无限使用表空间,即可以使用任意表空间。比如创建表的时候,不指定tablespace默认将该表放在default tablespace里面。如果加入tablespace参数 ,就存放在指定的表空间。表空间是公共区域,大家都能用的

Oracle创建序列

Oracle中的主键不能像mysql一样指定自增,而是通过创建sequence对象来获得唯一的主键,创建的sequence可以被整个表空间共享,通过调用sequence的nextval方法可以获得一个唯一的主键(currval 返回当前值)

//创建sequence
create sequence auto_id
start with 1//开始值
increment by 1//增长值,正数就是递增,负数递减
[maxvalue | nomaxvalue]//设置或不设置最大值
[minvalue | nominvalue]//设置或不设置最小值
[{CYCLE | NOCYCLE}] //循环/不循环
 [{CACHE n | NOCACHE}];//分配并存入到内存中
//查询,必须先使用nextval才能使用currval
select auto_id.nextval from dual;
select auto_id.currval from dual;
//使用sequence
insert into student(id,name) values(auto_id.nextval,'xiaoming');
//删除sequence
drop sequence auto_id //删除后不能引用

使用触发器生成唯一主键

-- 使用触发器实现ID递增
-- 创建序列
CREATE SEQUENCE auto;
 
-- persons_tri 触发器名字
-- person 表名
-- AUTO.nextval AUTO表示刚刚创建的序列
-- personid 表示自增的字段
 //注意要使用分号,否则会编译失败
CREATE OR REPLACE TRIGGER persons_tri
BEFORE INSERT ON person
FOR EACH ROW
  DECLARE
  BEGIN
    SELECT AUTO.nextval
    INTO :NEW.personid
    FROM dual;
  END;

然后在执行插入操作的时候就可以不指定主键了

//删除触发器
drop trigger persons_tri

触发器

修改表

  • 增加列
    alter table student add address varchar(20) not null
  • 删除列
    alter table student drop column address
  • 修改列名
    alter table student rename column id to sid
  • 修改列类型
    alter table student modify name varchar(10)

修改用户

  • 修改密码
alter user scott identified by '123'
  • 修改锁定/解锁状态
    alter user scott account unlock | lock
  • 删除用户
//删除用户
drop user test;
//如果用户有自己的数据(比如创建了表对象)
drop user test cascade

Oracle本身就有工具

  • database configuration assistant
    创建、配置、删除、管理数据库
  • net configuration assistant
  • sqlplus
    conn username/pwd as {sysdba | sysoper | normal} @服务器字符串,服务器字符串在安装目的NETWORK\ADMIN\tnsnames.ora中配置,
    image.png ,可以通过net configuration assistant工具来配置

客户端连接工具,连接后命令要以分号结尾

默认账户

Oracle安装后sys和system是已有的账户,且没有锁定,是管理员账户。scott账户是给用户学习用的,是锁定的,默认密码是tiger,可以用sys账户登录后解锁scott账户并修改scott账户的密码

关键字

我们一般在命名的时候不要使用Oracle中的关键字,否则会出现一些奇怪的错误,其实代码没错,就是因为使用了关键字导致的

查询表空间文件位置

select file_name from dba_data_files

相关文章

网友评论

      本文标题:Oracle

      本文链接:https://www.haomeiwen.com/subject/jprcpqtx.html