• Oracle学习——扫盲篇



    前言

     

    近期这几天一直在与Oracle数据库打交道。因为之前对Oracle的学习并不深入,仅仅是把Oracle当成一个数据源去使用。非常多东西了解的不是非常深,比方。数据库、数据库实例、表空间、用户、表。它们是怎样创建的,它们之间又有什么关系。所以这次就一块来学习下。

     

     

     

    1数据库

     

    一个完整的Oracle数据库通常由两部分组成,各自是Oracle数据库和Oracle数据库实例,第一个Oralce数据库是指Oracle类型的关系型数据库管理系统,包括物理数据、数据库管理系统。也就是物理数据、内存、操作系统进程的组合体;而后面提到的Oracle数据库是指一系列物理文件的数据集合。这些集合包括数据文件、控制文件、联机日志、參数文件等。

     

    以下这张图是创建数据库的一个步骤:



     

    第一个要填写的是全局数据库名,第二个要填写的是数据库实例SID(下文会介绍)。


    全局数据库名:就是一个数据库的标识。简单来说就是名字,这个一般在创建的时候一定要想好。以后通常是不改动的。只是也能够改动,仅仅只是改动起来比較麻烦,由于数据库安装好以后。数据库的这个标识名字就会写入控制文件、数据库表等非常多地方。

     

    关于数据库的命令:

     

    查看当前的数据库的名字:

     

    select name from v$database;
     

    2数据库实例


     

    官方说Oracle实例是訪问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合。

     

    我们在写代码过程中需求调用对象的方法时。须要new出来一个实例,这个new出来的实例也是放在内存中的;我们的oracle实例跟这个new出来的对象差点儿相同。也是当须要訪问oracle数据库时就在内存中创建出一块进程,它也是仅仅存在与内存中的。

     

     

    我们訪问oracle事实上就是訪问oracle的实例,訪问oracle实例的时候。有时候须要先开启实例,我的实例名为orcltest

     

    startup open orcltest;


    实例名与SID

     

    实例名(instance_name)指的是用于响应某个数据库操作的数据库管理系统的名字。提到Oralce实例名就不能不提Oracle_SID,SID事实上Oracle实例的一个标识。

     

    但两者是有差别的,instance_name是oracle数据库參数。而Oracle_SID是操作系统的环境变量。

    Oracle_SID用于与操作系统交互,也就是说。从操作系统的角度訪问实例名,必须通过Oracle_SID。而且Oracle_SID必须与instance_name的值一致。否则,你将会收到一个错误,在unix平台,是“ORACLEnot available”,在windows平台。是“TNS:协议适配器错误”。

     

    数据库实例名除了与操作系统交互外,还用于网络连接的oracleserver标识。

    当你配置oracle主机连接串的时候,就须要指定实例名例如以下

     

    jdbc:oracle:thin:@localhost:1521:orcltest(orcltest就为数据库实例名)

    查询当前数据库实例名:

     

    select instance_name from v$instance;<span style="font-size: 16pt; font-family: SimSun; "> </span>


    查看当前数据库实例的信息:

     

    Show parameter instance_name;

    注意:一个数据库能够有多个实例,在作数据库服务集群的时候能够用到,或者不同的项目用不同的数据库实例也能够。这块内容兴许会继续说明。

     

    3表空间

     

    Oracle数据库是通过表空间来存储物理表的。表空间(tablespace)是数据库的逻辑划分,它是隶属与Oracle数据库实例以下的。一个数据库实例能够有N个表空间,一个表空间下能够有N张表。

     

    所以有了数据库实例就能够创建表空间了。

     

     

    创建表空间:

     

    create tablespace OracleTest logging datafile 'C:oracleproduct10.2.0oradataORCLTESTOracleTest.dbf' size 32m autoextend on next 32m maxsize2048m extent management local;


    当中的创建的表空间名字为OracleTest ,建立表空间的位置是:C:oracleproduct10.2.0oradataORCLTESTOracleTest.dbf,大小是32M。空间能够自己主动扩充,每次扩充32M,最大表空间为2048M

     

    查询表空间名字:

     

    select tablespace_name from dba_data_files group by tablespace_name;


    查询表空间的大小:

     

    select tablespace_name,count(*),sum(blocks),sum(bytes)/1024/1024 from dba_data_filesgroup by tablespace_name;


    查看表空间是否自己主动扩充:

     

    select file_name,autoextensible,increment_by from dba_data_files;


    假设表空间中有表的话,能够查看:


    Select tablespace_name,table_name from dba_tables where tablespace_name='ORACLETEST';
     


    4用户

     

    关于Oracle的用户,一个Oracle数据库装好后,建立了Oracle实例。创建了表空间,为用户指定表空间,最后才是创建物理表。

     

    上面我们已经创建好数据库实例和表空间了,如今就是创建用户为指定的表空间:

     

    Create user testuser identified by test default tablespace OracleTest;

    创建了一个testuser的用户。password是test。表空间是OracleTest.

    在这里要说一点的是,同一表空间是能够授予多个用户的,而且能够给不同的用户分配对表空间的不同等级的操作权限。

     

    testuser用户授予权限,有三种:

     

    grant connect to testuser; 
    grant resource to testuser; 
    grant dba to testuser;

    我给testuser用户授予的是第三种dba管理员权限。

     

    当我们通过我们创建好的用户登陆后能够查到当前用户:

     

    show user;

    查看当前数据库的全部用户:

     

    select  * from dba_users;
      

    5

     

    数据库实例、表空间、用户这些都有了以后。就能够在自己的用户所属的表空间下创建表了。关于表这块我们大家经经常使用,这里就不多说了。看下经常使用命令就能够了:

     

    查看表所属表空间


    Select table_name,tablespace_name from all_tables where table_name='t_student';

    查看表结构


    desc t_student;


    总结

     

    关于Oracle的使用,首先安装oracle数据库软件、然后创建数据库实例、接下来创建表空间、再往下给表空间创建用户并分配权限、然后创建表、最后測试,当中创建表空间和创建用户这两个顺序能够颠倒的。这几天这些东西来回捣鼓了好几遍。关于Oracle的这些操作,假设不去自己一步步实践。你永远都不知道自己究竟有多生,你也不会知道它究竟会出哪些让你抓狂的错误。

     

  • 相关阅读:
    非常牛的实现三个数交换
    assert后面如果是假则程序崩溃
    python三元操作符
    三种方法划分成绩等级
    爱因斯坦难题
    打印奇数
    判断给到的年份是否为闰年
    【bzoj1895】Pku3580 supermemo Splay
    【bzoj1050】[HAOI2006]旅行comf 并查集
    【bzoj4002】[JLOI2015]有意义的字符串 数论+矩阵乘法
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6797441.html
Copyright © 2020-2023  润新知