Centos6安装Oracle详解

环境准备

安装指导

CentOS6.7安装Oracle 11g2R傻瓜图文教程
oracle设置/etc/sysctl.conf参数详解

安装完成后可以通过浏览器访问http://10.110.181.99:5500/em

Oracle常用操作

  • SQLPlus 在连接时通常有四种方式
    1. sqlplus / as sysdba
    2. sqlplus username/password
    3. sqlplus usernaem/password@orcl
    4. sqlplus username/password@//host:port/sid
  • hostname设置需要一致
    1. /etc/hosts
      127.0.0.1   localhost localhost.localdomain
      10.110.181.99   oracle
      
    2. /etc/sysconfig/network
      HOSTNAME=oracle
      
    3. app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
      
    4. app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
      
    5. 配置完成后重启网络服务service network restart。执行hostname命令输出需为oracle
  • 重启监听listener
    # su - oracle
    $ lsnrctl start     #启用监听
    $ lsnrctl stop      #停止监听
    $ lsnrctl status    #检查监听器的状态
    $ lsnrctl reload    #重启监听器
    
  • 重启数据库实例
    # su - oracle
    $ sqlplus / nolog
    SQL> conn / as sysdba
    SQL> shutdown immediate   #关闭数据库
    SQL> startup              #启动数据库
    SQL> exit
    
  • oracle新建数据库、新建用户并授权
    1. 创建表空间
      create tablespace tablespacename datafile '/home/oracle/app/oradata/data.dbf' size xxxm;
      

      tablespacename: 表空间的名字
      /home/oracle/app/oradata/data.dbf: 表空间的存储位置 xxx:表空间的大小,m单位为兆

    2. 创建用户,并指定默认表空间
      create user username identified by password default tablespace tablespacename;
      

      username: 用户名
      password: 密码
      tablespacename: 表空间名字

    3. 给用户授权
      grant create session,create table,unlimited tablespace to username;
      
    4. 使用创建的用户登录,登录之后即可创建表
      conn username/password;
      

常见错误

win7安装Oracle

  • 安装包下载
  • 安装指导
  • Oracle服务状态查看
    win+R输入services.msc,然后可以查看Oracle相关服务
    Oracle ORCL VSS Writer service
    OracleDBConsoleorcl               #EM网页管理服务
    OracleJobSchedulerORCL
    OracleMTSRecoveryService
    OracleOraDb11g_home1ClrAgent
    OracleOraDb11g_home1TNSListener   #表示监听服务,如果客户端想要连接到数据库,此服务必须打开
    OracleServiceORCL                 #表示数据库的主服务,命名规则:OracleService数据库名称。
    
  • 修改主机名或IP地址 修改主机名或IP地址会造成listener监听服务及EM服务不可用,此时需要修改配置文件listener.oratnsnames.ora。修改其中的SID_NAME为数据库SID,其值为orcl;HOST为计算机名。
    listener.ora详细配置:
    SID_LIST_LISTENER =
    (SID_LIST =
      (SID_DESC =
        (SID_NAME = ORCL)
        (ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)
        (PROGRAM = extproc)
        (ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
      )
    )
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = BKC5EBXVFGUUW6E)(PORT = 1521))
        )
      )
    ADR_BASE_LISTENER = D:\app\Administrator
    

    tnsnames.ora详细配置:

    ORACLR_CONNECTION_DATA =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      )
      (CONNECT_DATA =
        (SID = CLRExtProc)
        (PRESENTATION = RO)
      )
    )
    LISTENER_ORCL =
      (ADDRESS = (PROTOCOL = TCP)(HOST = BKC5EBXVFGUUW6E)(PORT = 1521))
    ORCL =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = BKC5EBXVFGUUW6E)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )
    

    修改配置文件后需重启Oracle相关服务。

  • Navicat连接Oracle时报错ORA-28547
    主要是因为oci.dll版本不对。Navicat是通过Oracle客户端连接Oracle服务器的,可以下载相应版本的Instant Client,然后解压,打开Navicat软件配置oci.dll位置:工具 –> 选项 –> 环境 –> 配置oci,配置完成后需重启Navicat软件。

常用SQL语句

  • 运行sql文件
    SQL> @ d:\a.sql;
    SQL> start d:\a.sql;
    
  • 编辑sql文件
    SQL> edit d:\a.sql;
    
  • 将sqlplus屏幕上的内容输出到指定文件中
    SQL> spool d:\b.sql;
    SQL> select * from student;
    SQL> spool off;
    
  • spool保存屏幕上内容到sql文件实例
    SQL> disc;
    从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
    
    SQL> conn system/123456@orcl
    已连接。
    
    SQL> show user;
    USER 为 "SYSTEM"
    
    SQL> create user xiaoming identified by 123456;
    
    用户已创建。
    
    SQL> password xiaoming
    更改 xiaoming 的口令
    口令已更改
    SQL> alter user xiaoming identified by 123456;
    
    用户已更改。
    
    SQL> disc;
    从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
    
    SQL> conn system/123456@orcl
    已连接。
    
    SQL> drop user xiaoming cascade;
    
    用户已删除。
    
    SQL> create table student(xh number(4),
      2  xm varchar2(20),
      3  sex char(2),
      4  birthday date,
      5  sal number(7,2));
    
    表已创建。
    
    SQL> create table class(
      2  classid number(2),
      3  cname varchar2(40)
      4  );
    
    表已创建。
    
    SQL> alter table student add (classid number(2));
    
    表已更改。
    
    SQL> alter table student drop column sal;
    
    表已更改。
    
    SQL> rename student to stu;
    
    表已重命名。
    
    SQL> alter session set nls_date_format='yyyy-mm-dd';
    
    会话已更改。
    
    SQL> insert into stu values('001','mike','M','1990-05-06',10);
    
    已创建 1 行。
    
    SQL> insert into stu values('002','snowy','W','1990-05-06',10);
    
    已创建 1 行。
    
    SQL> insert into stu(xh,xm,sex) values ('003','john','W');
    
    已创建 1 行。
    
    SQL> rename stu to student;
    
    表已重命名。
    
    SQL> select * from student;
    
            XH XM                   SE BIRTHDAY      CLASSID                        
    ---------- -------------------- -- ---------- ----------                        
             1 mike                 M  1990-05-06         10                        
             2 snowy                W  1990-05-06         10                        
             3 john                 W                                               
    
    SQL> select * from student where birthday is not null;
    
            XH XM                   SE BIRTHDAY      CLASSID                        
    ---------- -------------------- -- ---------- ----------                        
             1 mike                 M  1990-05-06         10                        
             2 snowy                W  1990-05-06         10                        
    
    SQL> update student set sex='W' where xh='001';
    
    已更新 1 行。
    
    SQL> select * from student;
    
            XH XM                   SE BIRTHDAY      CLASSID                        
    ---------- -------------------- -- ---------- ----------                        
             1 mike                 W  1990-05-06         10                        
             2 snowy                W  1990-05-06         10                        
             3 john                 W                                               
    
    SQL> savepoint a;
    
    保存点已创建。
    
    SQL> delete from student;
    
    已删除3行。
    
    SQL> select * from student;
    
    未选定行
    
    SQL> rollback to a;
    
    回退已完成。
    
    SQL> select * from student;
    
            XH XM                   SE BIRTHDAY      CLASSID                        
    ---------- -------------------- -- ---------- ----------                        
             1 mike                 W  1990-05-06         10                        
             2 snowy                W  1990-05-06         10                        
             3 john                 W                                               
    
    SQL> delete from student where xh='002';
    
    已删除 1 行。
    
    SQL> select * from student;
    
            XH XM                   SE BIRTHDAY      CLASSID                        
    ---------- -------------------- -- ---------- ----------                        
             1 mike                 W  1990-05-06         10                        
             3 john                 W                                               
    
    SQL> rollback to a;
    
    回退已完成。
    
    SQL> select * from student;
    
            XH XM                   SE BIRTHDAY      CLASSID                        
    ---------- -------------------- -- ---------- ----------                        
             1 mike                 W  1990-05-06         10                        
             2 snowy                W  1990-05-06         10                        
             3 john                 W                                               
    
    SQL> truncate table student;
    
    表被截断。
    
    SQL> select * from student;
    
    未选定行
    
    SQL> rollback to a;
    rollback to a
    *
    第 1 行出现错误:
    ORA-01086: 从未在此会话中创建保存点 'A' 或者该保存点无效
    
    SQL> insert into student values('001','mike','M','1990-05-06',10);
    
    已创建 1 行。
    
    SQL> insert into student(xh,xm,sex) values ('003','john','W');
    
    已创建 1 行。
    
    SQL> select count(*) from student;
    
      COUNT(*)                                                                      
    ----------                                                                      
             2                                                                      
    
    SQL> spool off;
    

赞赏支持

取消

打赏,支持一下!

扫码支持
扫码支持

打开支付宝/微信扫一扫,即可扫码打赏哦!