• 科普数据库


    d

    格式:alter table 表名 modify 列名 列的类

    演示:alter table users modify mobile char(11)

    4、删除一

    格式:alter table 表名 drop column 列

    演示:alter table users drop column mobile

    5、修改表

    格式:rename 旧表名 to 新表

    演示:rename users to myusers

    6.6、表约

    一、语

    CREATE TABLE 表

            列名 列的类型 primary key,--主键约

            列名 列的类型 not null,--非空约

            列名 列的类型 unique,--唯一约

            列名 列的类型 check(列名 in (检查列表)),--检查约

            constraint 约束名 foreign key(字段名) references 主表(被引用列)--外键

    二、演

    --商品分

    create table category

           cid number primary key

           cname varchar2(20)

    )

    --商品详

    create table product

           pid number primary key,--主键约

           pname varchar2(50) not null,--非空约

           pimg varchar2(50) unique,--唯一约

           pflag varchar2(10) check(pflag in ('上架','下架')),--检查约

           cid number

           constraint FK_CATEGORY_ID foreign key(cid) references category(cid)--外键约

    )

    1

    1

    1

    1

    1

    1

    三、修

    1、主键

    alter table product add constraint PK_PRODUCT_PID primary key(pid)

    alter table product drop constraint PK_PRODUCT_PID

    alter table product drop primary key

    2、非空约

    alter table product modify pname not null

    alter table product modify pname null

    3、唯一约

    alter table product add constraint UK_PRODUCT_PIMG unique(pimg)

    alter table product drop constraint UK_PRODUCT_PIMG

    alter table product drop unique(pimg)

    4、检查约

    alter table product add constraint CK_PRODUCT_PFLAG check(pflag in ('上架','下架'))

    alter table product drop constraint CK_PRODUCT_PFLAG

    5、外键约

    alter table product add constraint FK_PRODUCT_ID foreign key(cid) references category(cid)

    alter table product drop constraint FK_PRODUCT_ID

    第七章 DML语

    7.1、插入语

    格式:insert into 表名(列名1,列名2,...) values(值1,值2,...)

    演示:insert into category(cid,cname) values(1,'电视')

    注意:commit

    7.2、修改语

    格式:update 表名 set 列名1=值1,列名2=值2,... where 查询条件

    演示:update category set cname='汽车' where cid = 1

    注意:commit

    7.3、删除语

    格式:delete from 表名 where 查询条件

    演示:delete from category where cid = 1

    注意:commit

    第八章 TCL语

    8.1、事

    一、含

    一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不

    二、特点(ACI

    原子性:一个事务是不可再分割的整体,要么都执行要么都不

    一致性:一个事务的执行不能破坏数据库数据的完整性和一致

    隔离性:一个事务不受其它事务的干扰,多个事务是互相隔离

    持久性:一个事务一旦提交了,则永久的持久化到本

    三、分

    1、开启

    Oracle 11g中事务是隐式自动开始的,它不需要用户显示的执行开始事务语

    2、编写一组逻辑sql

    注意:sql语句支持的是insert、update、delet

    【设置回滚

    savepoint 回滚点名

    3、结束

    提交:commit

    回滚:rollback

    回滚到指定的地方: rollback to 回滚点名

    1

    1

    1

    1

    8.2、事务并发(读问题

    一、事物的并发问题如何发生

    多个事务同时操作同一个数据库的相同数

    二、事务的并发问题都有哪

    脏读:一个事务读到了另一个事务还未提交的update数据,导致多次查询的结果不一样(Oracle中不会产

    不可重复读:一个事务读到了另一个事务已经提交的update数据,导致多次查询结果不一

    幻读:一个事务读到了另一个事务已经提交的insert数据,导致多次查询的结果不一

    三、事物的并发问题如何解决

    通过设置隔离级别来解决并发

    四、隔离

    Oracle中只支持READ COMMITTED、SERIALIZABLE、READ ONLY、READ WRITE,这些语句是互斥的,不能同时设置两个或两个以上的选项,一般默认即

    8.3、丢失更新(写问

    一、定

    在事务的隔离级别内容中,能够了解到两个不同的事务在并发的时候可能会发生数据的影响。细心的话可以发现事务隔离级别章节中,脏读、不可重复读、幻读三个问题都是由事务A对数据进行修改、增加,事务B总是在做读操作。如果两事务都在对数据进行修改则会导致另外的问题:丢失更

    二、

    悲观锁:认为两个事务更新操作一定会发生丢失

    解决:通过在语句后边添加for update来实现行级上锁,所以又称为“行级锁”,例如:select * from t_account t wheret.id=‘1’ for update

    乐观锁:认为事务不一定会产生丢失更新,让事务进行并发修改,不对事务进行锁

    解决:由程序员自己解决,可以通过给数据表添加自增的version字段或时间戳timestamp,进行数据修改时,数据库会检测version字段或者时间戳是否与原来的一致,若不一致,抛出异常或者重新查

    三、注

    对于账户交易建议直接使用悲观锁,数据库的性能很高,并发度不是很高的场景两者性能没有太大差别。如果是交易减库存的操作可以考虑乐观锁,保证并发

    第九章 高级

    9.1、序

    一、含

    序列是Oracle数据库中特有的,使用序列可以生成类似于 auto_increment 这种ID自动增长 1,2,3,4,5… 的

    二、

    create sequence 序列

    start with 从几开

    increment by 每次增长多

    [maxvalue 最大值] | nomaxvalu

    [minvalue 最小值] | nominvalu

    cycle | nocycle --是否自动循

    [cache 缓存数量] | nocache

    三、演

    --创建

    create sequence auto_increment_se

    start with 

    increment by 

    nomaxvalu

    minvalue 

    nocycl

    cache 10000

    --调用

    select auto_increment_seq.nextval from dual

    select auto_increment_seq.currval from dual

    1

    1

    1

    9.2、PLSQL编

    9.2.1、格

    declar

      --声明变

             

    begi

      --业务逻

    en

    9.2.2、变

    declar

      --声明变

      -- 格式一:变量名 变量类型

      -- 格式二:变量名 变量类型 := 初始值

      -- 格式三:变量名 变量类型 := &文本框名

      -- 格式四:变量名 表名.字段名%type

      -- 格式五:变量名 表名%rowtype

      vnum number

      vage number := 28

      vabc number := &abc;--输入一个数值,从一个文本框输

      vsal emp.sal%type;  --引用型的变量,代表emp.sal的类

      vrow emp%rowtype;   --记录型的变量,代表emp一行的类型         

    begi

      --业务逻

      dbms_output.put_line(vnum);                       --输出一个未赋值的变

      dbms_output.put_line(vage);                       --输出一个已赋值的变

      dbms_output.put_line(vabc);                       --输出一个文本框输入的变

      select sal into vsal from emp where empno = 7654; --将查询到的sal内容存入vsal并输

      dbms_output.put_line(vsal)

      select * into vrow from emp where empno = 7654;   --将查询到的一行内容存入vrow并输出 

      dbms_output.put_line(vrow.sal)

      dbms_output.put_line(123);                        --输出一个整

      dbms_output.put_line(123.456);                    --输出一个小数 

      dbms_output.put_line('Hello,World');              --输出一个字符

      dbms_output.put_line('Hello'||',World');          --输出一个拼接的字符串,||拼接符Oracle特

      dbms_output.put_line(concat('Hello',',World'));   --输出一个拼接的字符串,concat函数比较通

    end

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    2

    2

    2

    2

    2

    2

    2

    2

    9.2.3、if判

    一、语

    if 条件1 th

        

    elsif 条件2 the

          

    else

        

    end if

    二、演

    decla

      age number := &age

    begi

      if age < 18 the

        dbms_output.put_line('小屁孩')

      elsif age >= 18 and age <= 24 the

        dbms_output.put_line('年轻人')

      elsif age > 24 and age < 40 the

        dbms_output.put_line('老司机')

      els

        dbms_output.put_line('老年人')

      end if

    end

    1

    1

    1

    1

    9.2.4、while循

    一、语

    while 条件 lo

           

    end loop

    二、演

    --输出1~

    declar

      i number := 1

    begi

      while i <= 10 loo

        dbms_output.put_line(i)

        i := i + 1

      end loop

    end

    9.2.5、for循

    一、语

    for 变量  in [reverse] 起始值..结束值 lo

           

    end loop

    二、演

    --输出1~

    declar

    beg

      for i in reverse 1 .. 10 loo

        dbms_output.put_line(i)

      end loop

    end

    9.2.6、loop循

    一、语

    lo

     

      exit when 条

     

    end loop

    二、演

    --输出1~

    declar

      i number := 1

    begi

      loo

        exit when i > 10

        dbms_output.put_line(i)

        i := i + 1

      end loop

    end

    1

    9.2.7、意

    一、含

    意外是程序运行的过程发生的异常,相当于是Java中的

    二、

    decla

       --声明变

    begi

       --业务逻

    exceptio

       --处理异

       when 异常1 the

         ..

       when 异常2 the

         ..

       when others the

         ...处理其它异

    end

    1

    1

    1

    1

    三、分

    系统

    zero_divide :除数为零

    value_error :类型转换异

    no_data_found : 没有找到数

    too_many_rows : 查询出多行记录,但是赋值给了%rowtype一行数据变

    自定义异

    decla

       --声明变

       异常名称 exception

    begi

       --业务逻

       if 触发条件 the

          raise 异常名称; --抛出自定义的异

    exceptio

       --处理异

       when 异常名称 the

         dbms_output.put_line('输出了自定义异常'); 

       when others the

         dbms_output.put_line('输出了其它的异常'); 

    end

    1

    1

    1

    1

    1

    四、演

    1、内置系统

      vi   numbe

      vrow emp%rowtype

    begi

      --以下四行对应四个异常,测试请依次放

      vi := 8/0; 

      --vi := 'aaa'

      --select * into vrow from emp where empno = 1234567

      --select * into vrow from emp

    exceptio

      when zero_divide the

        dbms_output.put_line('发生除数为零异常')

      when value_error the

        dbms_output.put_line('发生类型转换异常')

      when no_data_found the

        dbms_output.put_line('没有找到数据异常')

      when too_many_rows the

        dbms_output.put_line('查询出多行记录,但是赋值给了%rowtype一行数据变量')

      when others the

        dbms_output.put_line('发生了其它的异常' || sqlerrm)

    end

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    2

    2、抛出系统异

    --查询指定编号的员工,如果没有找到,则抛出系统

    declar

      --1.声明一个变量 %rowtyp

      vrow emp%rowtype

    begi

      --查询员工信息,保存起

      select * into vrow from emp where empno = 8000

      --判断是否触发异常的条

      if vrow.sal is null the

        --抛出系统异

         raise_application_error(-20001,'员工工资为空')

      end if

    exceptio

      when others the

        dbms_output.put_line('输出了其它的异常' || sqlerrm)

    end

    1

    1

    1

    1

    1

    1

    1

    3、抛出自定义异

    --查询指定编号的员工,如果没有找到,则抛出自定义

    declar

      --1.声明一个变量 %rowtyp

      vrow emp%rowtype

      --2.声明一个自定义的异

      no_emp exception

    begi

      --查询员工信息,保存起

      select * into vrow from emp where empno = 8000

      --判断是否触发异常的条

      if vrow.sal is null the

        raise no_emp; --抛出自定义的异

      end if

    exceptio

      when no_emp the

        dbms_output.put_line('输出了自定义异常')

      when others the

        dbms_output.put_line('输出了其它的异常' || sqlerrm)

    end

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    9.3、索

    一、含

    索引相当于是一本书的目录,能够提高我们的查询

    二、

    1、创建

    create [UNIQUE]|[BITMAP] index 索引名 on 表名(列名1,列名2,...

    2、修改索

    --重命名

    alter index 索引名称 rename to 新的名称

    --合并

    alter index 索引名称 coalesce

    --重建

    alter index 索引名称 rebuild

    --修改

    先删除,在创

    1

    1

    3、删除索

    drop index 索引名

    三、演

    1、创建

    create index INX_CATEGORY_CNAME on category(cname

    2、修改索

    --重命名

    alter index INX_CATEGORY_CNAME rename to INX_CATEGORY_CNAME_NEW

    --合并

    alter index INX_CATEGORY_CNAME_NEW coalesce

    --重建

    alter index INX_CATEGORY_CNAME_NEW rebuild

    --修改

    先删除,在创

    1

    1

    3、删除索

    drop index INX_CATEGORY_CNAM

    9.4、视

    一、含

    视图是对查询结果的一个封装,视图里面所有的数据,都是来自于它查询的那张表,视图本身不存储任何数据,但是可以修改原数据,但是不建议这样

    二、

    1、创建

    create view 视图

    as 查询语

    [with read only]

    2、修改视

    create or replace view 视图

    as 查询语

    [with read only]

    3、删除视

    drop view 视图名

    三、演

    1、创建

    create view view_emp 

    select ename,job,mgr from emp

    2、修改视

    create or replace view view_emp 

    select ename,job,mgr,deptno from emp

    3、删除视

    drop view view_em

    9.5、同义

    一、含

    同义词就是别名的意思和视图的功能类似,就是一种映射

    二、

    1、创建同

    create [public] synonym 同义词名称 for 对象的名

    2、修改同义

    create or replace [public] synonym 同义词名称 for 对象的名

    3、删除同义

    drop [public] synonym 同义词名

    三、演

    1、创建同

    --

    create synonym syno_emp for emp

    --调

    select * from syno_emp

    2、修改同义

    --

    create or replace synonym syno_emp_update for emp

    --调

    select * from syno_emp_update

    3、删除同义

    drop synonym syno_emp_updat

    9.6、游

    一、含

    游标是用来操作查询结果集,相当于是JDBC中ResultSet,它可以对查询的结果一行一行的

    二、

    --第一步:定义

        --第一种:普通游

        cursor 游标名[(参数 参数类型)] is 查询语句

        --第二种:系统引用游

        游标名 sys_refcursor

    --第二步:打开

        --第一种:普通游

        open 游标名[(参数 参数类型)]

        --第二种:系统引用游

        open 游标名 for 查询语句

    --第三步:获取

        fetch 游标名 into 变量

    --第四步:关闭

        close 游标名

    1

    1

    1

    1

    1

    1

    1

    1

    三、演

    1、普通游标

    --输出指定部门下的员工姓名和

    declar

      --1.声明游

      cursor vrows(dno number) is select * from emp where deptno = dno

      --声明变

      vrow emp%rowtype

    begi

      --2.打开游标

      open vrows(10)

      --3.循环遍

      loo

        fetch vrows into vrow

        exit when vrows%notfound

        dbms_output.put_line('姓名:' || vrow.ename || ' 工资: ' || vrow.sal)

      end loop

      --4.关闭游

      close vrows

    end

    1

    1

    1

    1

    1

    1

    1

    1

    1

    2、系统引用游标使

    --输出员工表中所有的员工姓名和

    declar

      --1.声明系统引用游

      vrows sys_refcursor

      --声明变

      vrow emp%rowtype

    begi

      --2.打开游

      open vrows for select * from emp

      --3.循环遍

      loo

        fetch vrows into vrow

        exit when vrows%notfound

        dbms_output.put_line('姓名:' || vrow.ename || ' 工资: ' || vrow.sal)

      end loop

      --4.关闭游

      close vrows

    end

    1

    1

    1

    1

    1

    1

    1

    1

    1

    3、使用for循环输

    --输出员工表中所有的员工姓名和

    declar

      cursor vrows is select * from emp

    begi

      --自动定义变量vrow,自动打开游标,自动关闭游

      for vrow in vrows loo

        dbms_output.put_line('姓名:' || vrow.ename || ' 工资: ' || vrow.sal || '工作:' || vrow.job)

      end loop

    end

    9.7、存储过

    一、含

    存储过程实际上是封装在服务器上一段PLSQL代码片断,它已经编译好了,如果客户端调用存储过程,执行效率就会非常

    二、

    1、创建存储

    create procedure 存储过程名称(参数名 in|out 参数类型,参数名 in|out 参数类型,..

    is|a

     --声明部

    begi

     --业务逻辑

    end

    2、修改存储过

    create [or replace] procedure 存储过程名称(参数名 in|out 参数类型,参数名 in|out 参数类型,..

    is|a

     --声明部

    begi

     --业务逻辑

    end

    3、删除存储过

    drop procedure 存储过程名

    4、调用存储过

    --方式

    call 存储过程名称(...)

    --方式

    declar

    beg

      存储过程名称(...)

    end

    三、演

    1、创建存储

    --给指定员工涨薪并打印涨薪前和涨薪后的

    create procedure proc_update_sal(vempno in number,vnum in number

    i

      --声明变

      vsal number

    begi

      --查询当前的工

      select sal into vsal from emp where empno = vempno

      --输出涨薪前的工

      dbms_output.put_line('涨薪前:' || vsal)

      --更新工

      update emp set sal = vsal + vnum where empno = vempno

      --输出涨薪后的工

      dbms_output.put_line('涨薪后:' || (vsal + vnum))

      --提交事

      commit

    end

    --给员工编号为7521的员工涨工资1

    call proc_update_sal(7521, 10)

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    2

    2、修改存储过

    --给指定员工涨薪并打印涨薪前和涨薪后的

    create or replace procedure proc_update_sal(vempno in number,vnum in number

    i

      --声明变

      vsal number

    begi

      --查询当前的工

      select sal into vsal from emp where empno = vempno

      --输出涨薪前的工

      dbms_output.put_line('涨薪前:' || vsal)

      --更新工

      update emp set sal = vsal + vnum where empno = vempno

      --输出涨薪后的工

      dbms_output.put_line('涨薪后:' || (vsal + vnum))

      --提交事

      commit

    end

    --给员工编号为7521的员工涨工资1

    call proc_update_sal(7521, 10)

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    2

    3、删除存储过

    drop procedure proc_update_sa

    9.8、函

    一、含

    函数实际上是封装在服务器上一段PLSQL代码片断,它已经编译好了,如果客户端调用存储过程,执行效率就会非常高效,它跟存储过程没有什么本质区别,存储过程能做的函数也能做,只不过函数有返

    二、

    1、创建

    create function 函数名称(参数名 in|out 参数类型,参数名 in|out 参数类型,...) return 返回的参数

    is|a

     --声明部

    begi

     --业务逻辑

    end

    2、修改函

    create [or replace] function 函数名称(参数名 in|out 参数类型,参数名 in|out 参数类型,...) return 返回的参数

    is|a

     --声明部

    begi

     --业务逻辑

    end

    3、删除函

    drop function 函数名

    4、调用函

    --方式

    select 函数名称(...) from dual

    --方式

    declar

      变量名 变量类型

    begi

      变量名 = 函数名称(...)

    end

    三、演

    1、创建

    --查询指定员工的

    /

        参数 : 员工的编

        返回 : 员工的年薪         

    *

    create function func_getsal(vempno number) return numbe

    i

      vtotalsal number

    begi

      select sal * 12 + nvl(comm, 0) into vtotalsal from emp where empno = vempno

      return vtotalsal

    end

    --查询员工编号为7788的

    declar

      vsal number

    begi

      vsal := func_getsal(7788)

      dbms_output.put_line(vsal)

    end

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    2

    2、修改函

    --查询指定员工的

    /

        参数 : 员工的编

        返回 : 员工的年薪         

    *

    create or replace function func_getsal(vempno number) return numbe

    i

      vtotalsal number

    begi

      select sal * 12 + nvl(comm, 0) into vtotalsal from emp where empno = vempno

      return vtotalsal

    end

    --查询员工编号为7788的

    declar

      vsal number

    begi

      vsal := func_getsal(7788)

      dbms_output.put_line(vsal)

    end

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    2

    3、删除函

    drop function func_getsa

    9.9、触发

    一、含

    当用户执行了 insert | update | delete 这些操作之后,可以触发一系列其它的动作、业务逻辑,使用触发器可以协助应用在数据库端确保数据的完整性、日志记录 、数据校验等操作。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在Oracle触发器不仅支持行级触发,还支持语句级

    二、

    触发器类型    NEW 和 OLD的

    INSERT 型触发器    NEW 表示将要或者已经新增的数

    UPDATE 型触发器    OLD 表示修改之前的数据 , NEW 表示将要或已经修改后的数

    DELETE 型触发器    OLD 表示将要或者已经删除的数

    三、语

    1、创建触

    create trigger 触发器

    before|afte

    insert|update|delete

    on 表名

    [for each row]--行级触发

    declar

     --声明部

    begi

     --业务逻辑

    end

    1

    2、修改触发

    create [or replace] trigger 触发器

    before|afte

    insert|update|delete

    on 表名

    [for each row]--行级触发

    declar

     --声明部

    begi

     --业务逻辑

    end

    1

    3、删除触发

    drop trigger 触发器名

    四、演

    1、INSERT 型触

    --新员工入职之后,输出一句话: 欢迎加入

    create or replace trigger tri_emp_inser

    afte

    inser

    on em

    declar

    beg

      dbms_output.put_line('欢迎加入我们')

    end

    --插入数据就可以自动触发触

    insert into emp(empno, ename) values(9527, '马哈哈')

    1

    1

    1

    1

    2、UPDATE 型触发

    --判断员工涨工资后的工资一定要大于涨工资前的

    create or replace trigger tri_emp_update_sa

    befor

    updat

    on em

    for each ro

    declar

    beg

      if :old.sal > :new.sal the

        raise_application_error(-20002,'旧的工资不能大于新的工资')

      end if

    end

    --更新数据就可以自动触发触发器(无异

    update emp set sal = sal + 10

    select * from emp

    --更新数据就可以自动触发触发器(有异

    update emp set sal = sal - 100

    select * from emp

    1

    1

    1

    1

    1

    1

    1

    1

    1

    1

    2

    2

    3、DELETE 型触发

    --老员工离职之后,输出一句话: 有员工离

    create or replace trigger tri_emp_delet

    afte

    delet

    on em

    declar

    beg

      dbms_output.put_line('有员工离职了')

    end

    --删除数据就可以自动触发触

    delete from emp where empno = 9527

    1

    1

    1

    1

    4、删除触发

    drop trigger tri_emp_inser

    drop trigger tri_emp_update_sal

    drop trigger tri_emp_delete

    第十章 数据备份与恢

    10.1、全部导

    --注意:以下操作为cmd命令行操

    全部导出: exp 管理员帐号/密码 file='d:\beifen.dmp' full=

    10.2、全部导

    --注意:以下操作为cmd命令行操

    全部导入: imp 管理员帐号/密码 file='d:\beifen.dmp' full=

    10.3、按用户导

    --注意:以下操作为cmd命令行操

    按用户导出: exp 管理员帐号/密码 file='d:\beifen.dmp' owner=帐

    10.4、按用户导

    --注意:以下操作为cmd命令行操

    按用户导入: imp 管理员帐号/密码 file='d:\beifen.dmp' fromuser=帐

    第十一章 安装Oracle单实

    11.1、环境准

    注意:当前Linux为CentOS-6.10-x86_64-bin-DVD1.is

    界面:使用图形

    内存:4

    硬盘:20

    连接:SecureCRT,上传文件(rz命令)需要安装:yum -y install lrz

    11.2、下载

    32位需要下载(需要登录账号)

    http://download.oracle.com/otn/linux/oracle11g/R2/linux_11gR2_database_1of2.z

    http://download.oracle.com/otn/linux/oracle11g/R2/linux_11gR2_database_2of2.z

    64位需要下载(需要登录账号

    http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_1of2.z

    http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_database_2of2.z

    11.3、解压

    unzip linux.x64_11gR2_database_1of2.zip

    unzip linux.x64_11gR2_database_2of2.zi

    注意:unzip可能会提示没有这个命令,那就需要我们安装

    yum -y install zi

    yum -y install unzi

    11.4、移动软

    [root@caochenlei ~]# mkdir -p /usr/local/oracl

    [root@caochenlei ~]# mv database/ /usr/local/oracl

    11.5、域名映

    查看当前系统主机名

    [root@caochenlei ~]# hostna

    caochenle

    查看当前系统的IP地址

    [root@caochenlei ~]# ifconf

    修改系统的映射文件

    [root@caochenlei ~]# vi /etc/hos

    在末尾添加以下内容

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomai

    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain

    192.168.112.129 caochenl

    11.6、关闭selinu

    [root@caochenlei ~]# vi /etc/selinux/confi

    设置SELINUX=disable

    临时关闭一下selinu

    [root@caochenlei ~]# setenforce

    11.7、关闭防火

    [root@caochenlei ~]# service iptables sto

    [root@caochenlei ~]# chkconfig iptables of

    11.8、安装依赖

    [root@caochenlei ~]# yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat unixODBC-devel pdksh java-1.8.0-openjdk

    11.9、添加新用

    [root@caochenlei ~]# groupadd oinstal

    [root@caochenlei ~]# groupadd db

    [root@caochenlei ~]# useradd -g oinstall -G dba oracl

    [root@caochenlei ~]# passwd oracl

    11.10、修改内核文

    [root@caochenlei ~]# vi /etc/sysctl.con

    在末尾添加以下内容

    fs.aio-max-nr = 10485

    fs.file-max = 681574

    kernel.shmall = 209715

    kernel.shmmax = 53687091

    kernel.shmmni = 409

    kernel.sem = 250 32000 100 12

    net.ipv4.ip_local_port_range = 9000 6550

    net.core.rmem_default = 26214

    net.core.rmem_max = 419430

    net.core.wmem_default = 26214

    net.core.wmem_max = 104857

    更新一下文件以生

    [root@caochenlei ~]# sysctl 

    11.11、修改用户限

    [root@caochenlei ~]# vi /etc/security/limits.con

    在末尾添加以下内容

    oracle            soft    nproc           40

    oracle            hard    nproc           6553

    oracle            soft    nofile          409

    oracle            hard    nofile          6553

    修改完成后重启服务器

    [root@caochenlei ~]# rebo

    11.12、创建安装目

    [root@caochenlei ~]# mkdir -p /data/oracle/product/11.2.

    [root@caochenlei ~]# mkdir -p /data/oracle/oradat

    [root@caochenlei ~]# mkdir -p /data/oracle/inventor

    [root@caochenlei ~]# chown -R oracle:oinstall /data/oracl

    [root@caochenlei ~]# chmod -R 775 /data/oracl

    11.13、设置环境

    切换到oracle用户下

    [root@caochenlei ~]# su - orac

    [oracle@caochenlei ~]$ vi .bash_profil

    在末尾添加以下内容

    ORACLE_BASE=/data/orac

    ORACLE_HOME=$ORACLE_BASE/product/11.2.

    ORACLE_SID=orc

    PATH=$PATH:$ORACLE_HOME/bi

    export ORACLE_BASE ORACLE_HOME ORACLE_SID PAT

    更新一下文件以生效

    [oracle@caochenlei ~]$ source .bash_profi

    11.14、安装应用程

    这一步需要在虚拟机里进行,因为会弹出窗体程

    [oracle@caochenlei response]$ cd /usr/local/oracle/databas

    [oracle@caochenlei database]$ LANG=en_US ./runInstalle

    用户安装截

    然后提示要执行两个脚本,使用root执行,可以使用SecureCRT重新新建一个连接

    [root@caochenlei ~]# sh /data/oracle/inventory/orainstRoot.

    Changing permissions of /data/oracle/inventory

    Adding read,write permissions for group

    Removing read,write,execute permissions for world

    Changing groupname of /data/oracle/inventory to oinstal

    The execution of the script is complete

    [root@caochenlei ~]# sh /data/oracle/product/11.2.0/dbhome_1/root.s

    Running Oracle 11g root.sh script..

    The following environment variables are set a

        ORACLE_OWNER= oracl

        ORACLE_HOME=  /data/oracle/product/11.2.0/dbhome_

    Enter the full pathname of the local bin directory: [/usr/local/bin]

       Copying dbhome to /usr/local/bin ..

       Copying oraenv to /usr/local/bin ..

       Copying coraenv to /usr/local/bin ..

    Creating /etc/oratab file

    Entries will be added to the /etc/oratab file as needed b

    Database Configuration Assistant when a database is create

    Finished running generic part of root.sh script

    Now product-specific root actions will be performed

    Finished product-specific root actions

    执行完成,点ok,安装成

    11.15、使用sqlplus

    配套资料,免费下

    链接:https://pan.baidu.com/s/1yjJY3IstA8aMQBPYhWNlC

    提取码:qmp

    复制这段内容后打开百度网盘手机App,操作更方便

    ORCL

      (DESCRIPTION 

        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.112.129)(PORT = 1521)

        (CONNECT_DATA 

          (SERVER = DEDICATED

          (SERVICE_NAME = orcl

        

      

    新建一个系统环境变量,变量名为TNS_ADMIN,变量值为tnsnames.ora所在文件夹的全路径))))=)= =哦dw载连接功...dy......: 1es:.h.l....sh进行图:re/序序1le:Hnl0le:ele:变量eeya0录1ot:432166696:1f制1-p效:644408622476:1f件4321eeal户1*包21fp墙1 0x:d1gx4321ei6n4:1ts:1ig:21ime:射21ee件pp一下了p

    解压传程序ipip):ipip:程序szGBGB界面o备例21号作入21号作出21y作入21y作出复321;;t;器3210987654321;发器;;inepere职了器109876543210987654321;;常);;常);;;ninewpeel工资器3210987654321;发器;;ineptrt我们发器示1称;器0987654321; n分e器称 r名称器0987654321; n分e器称 r名称发器法据据据使用分类触发义器1l;数09876543210987654321;;;n;e年薪;;;n;sr/ 号*年薪数09876543210987654321;;;n;e年薪;;;n;sr/ 号*年薪函数示987654321;;n;e二:;一:数1称;数654321; n分s类型数654321; n分s类型函数语法回值义数1l;程09876543210987654321;0元;;物;资;资;资;资n;量s)工资程09876543210987654321;0元;;物;资;资;资;资n;量s)工资过程示987654321;;ine二:;一:程1称;程654321; n分s.)程654321; n分s.)过程语法高效义程987654321;;;p标n;e工资出876543210987654321;;标;;;;p历;标n;量;标e工资用876543210987654321;;标;;;;p历; n;量;标e工资使用示76543210987654321;游标;一行;标;标游标;标;标游标语法获取义标1e;词4321;用;创建词4321;用;创建义词示1称;词1称;词1称;义词语法关系义词1p;图21;as图21;as视图示1称;图321;句名称图321;句名称视图语法使用义图1E;引10987654321建某列;索引;索引;索引引1);索引示1称;引10987654321建某列;索引;索引;索引引1);索引语法效率义引9876543210987654321;;n;nn;常n件;来n;常;ee异常常6543210987654321;;nn;;常n件;来n;ee异常常09876543210987654321;;n;n;n;n;nn;;; 开n;r;异常示43210987654321; n n常n常n辑n;量re常量据常异常异常类3210987654321;常n.n.n常n辑n量re语法异常义外0987654321;;;;;pn;e10示54321; 件 op法环87654321;;;pine10示321; op法环987654321;;;;pn;e10示321; op法环3210987654321;;;e;n;n;nn;re示7654321;   n en法断765432109876543210987654321;用有串 数; ;出量量量辑n 型入;;;;;;;量e量7654321d;辑n 量e式程210987654321;;序列;e1e11q序列示7654321;环ee少始名称语法效果义列部分度。意询定;更新解决新。义题)可。级别问题?样致生)些?据时?)3210987654321;;;事务;点】e语句句事务类地的性执行D)执行义务言321;;;句321;;;句321;;;句言4321;除;添加束4321;除;添加束654321;者;除;添加束4321;除;添加束654321;者;除;添加约束改543210987654321;束,束束束束(情表; ,(类表示7654321;束束束束束名(法束21;名;名21;名;列21;型;型21;名;名21;型;列

  • 相关阅读:
    Hadoop知识点全面总结
    元对象系统功能
    保持长期主义,打开你的赚钱密码?
    【SpringCloud学习笔记】RabbitMQ(中)
    国内最牛的Java面试八股文合集,不接受反驳 我这该死的魅力
    华为云CodeArts产品体验的心得体会及想法
    面向对象设计原则之接口隔离原则
    ubuntu20.04 运行 lio-sam 流程记录
    通讯协议学习之路:IrDA协议协议理论
    微服务学习|初识Docker、使用Docker、自定义镜像、DockerCompose、Docker镜像仓库
  • 原文地址:https://blog.csdn.net/RzhenDwo/article/details/127214194