Oracle数据库学习

来源:互联网 发布:淘宝客 部分退款 编辑:程序博客网 时间:2024/06/11 03:59
  1. 实现Oracle 数据库的安装
  2. 管理数据表
  3. 简单存放数据
  4. 更新数据
  5. python接口

Oracle 数据库安装

安装Oracle 11g.

主要参考网页:Oracle 11g数据库详细安装步骤图解注意以管理员模式运行setup.exe
Oracle 11g 安装在 D:\app\Sean\product 下
此外,参考了网址[Oracle 11g数据库安装及配置] (http://blog.csdn.net/u010784236/article/details/52072085) 用于数据表的后续配置,如添加表等。

卸载Oracle 11g.

Windows 平台彻底卸载Oracle 11通常较为麻烦,可以参考如下网址给出的步骤
如何彻底卸载oracle(http://jingyan.baidu.com/article/3c343ff70bb3ea0d3779632c.html):

因为Oracle在Windows下的卸载有一些麻烦,如果不能完全卸载有可能影响将来的再次安装,常规卸载方法是运行Oracle的自带的卸载程序,可遗憾的是在卸载时总不能完全卸载,有时候是注册表没有处理干净,或者用专门的卸载工具才可以,但是当再次安装Oracle时,就会出现莫名其妙的问题,并且这种卸载方式比较麻烦,比较慢,下面介绍一种比较快并且能够彻底卸载Oracle的方法。

  1. 关闭oracle所有的服务。可以在windows的服务管理器中关闭;(控制面板-管理工具-服务)
  2. 打开注册表:在运行中regedit 打开路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
    删除该路径下的所有以oracle开始的服务名称,这个键是标识Oracle在windows下注册的各种服务!

  3. 打开注册表,找到路径:
    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
    删除该oracle目录,该目录下注册着Oracle数据库的软件安装信息。

  4. 删除注册的oracle事件日志,打开注册表
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
    删除注册表的以oracle开头的所有项目。

  5. 删除环境变量path中关于oracle的内容。
    鼠标右键右单击“我的电脑属性高级环境变量PATH 变量。
    删除Oracle在该值中的内容。注意:path中记录着一堆操作系统的目录,在windows中各个目录之间使用分号(; )隔开的,删除时注意。
    建议:删除PATH环境变量中关于Oracle的值时,将该值全部拷贝到文本编辑器中,找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到PATH环境变量中,这样相对而言比较安全。

  6. 重新启动操作系统。
    以上1~5个步骤操作完毕后,重新启动操作系统。

  7. 重启操作系统后各种Oracle相关的进程都不会加载了。这时删除Oracle_Home下的所有数据。(Oracle_Home指Oracle程序的安装目录)

  8. 删除C:\Program Files下oracle目录。
    (该目录视Oracle安装所在路径而定)

  9. 删除开始菜单下oracle项,如:
    C:\Documents and Settings\All Users\「开始」菜单\程序\Oracle - Ora10g
    如果不删除开始菜单下的Oracle相关菜单目录,没关系,这个不影响再次安装Oracle.当再次安装Oracle时,该菜单会被替换。

至此,Windows平台下Oracle就彻底卸载了。

安装Oracle client

主要参考网页: PL/SQL Developer连接本地Oracle 11g 64位数据库,解压后放在 目录 D:\app\Sean\product 下
然后在解压后的 D:\app\Sean\product\instantclient_11_2目录下新建NETWORK\ADMIN目录,在ADMIN目录下新建tnsnames.ora文件,添加数据库TNS

oracle
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = sean-PC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

注意:tnsnames.ora文件也可以从Oracle数据库HOME目录的NETWORK\ADMIN目录,还要把sqlnet.ora拷贝过来。然后确定HOST配置是否正确,如果HOST是主机名,需要把主机名后面的域名去掉

Oracle 数据库管理操作

目的:主要通过在本地建立一些数据表,存放在研究中经常用到的数据,并且定期更新数据库(约半年一次更新),不需要非常强大的SQL功能。

建立数据库–>创建用户和授予权限–>连接数据库建立表格、操作表格

在完成Oracle软件安装后,DBA就应该对组织和管理数据库负责任,其主要任务是:

  1. 启动和关闭数据库;
  2. 创建数据库;
  3. 删除数据库;
  4. 调整初始化参数;
  5. 管理网络。

对于数据库的管理,必须要具有SYSDBA和SYSOPER的角色,才有权启动、关闭、运行数据库。SYSDBA角色拥有SYS数据表的所有权限,SYSOPER的角色拥有Public数据表的所有权限。

1. 新建数据库|删除数据库

主要通过DBCA完成,主要参考博客 Oracle数据库管理(一):创建和删除数据库
注意字符集选择 UTF8
注意创建数据库之后,需要修改目录 D:\app\Sean\instantclient_11_2\NETWORK\ADMIN 下的tnsnames.ora 文件将新的数据库添加到PL/SQL登录的备选数据库中,此处以CSMAR为例。

CSMAR =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))    (CONNECT_DATA =      (SSID = CSMAR)      (SERVICE_NAME = CSMAR)    )  )

删除数据库的时候,除了按照DBCA的步骤之外,还需要删除注册表和一些其他数据,例如删除了数据库CSMAR,本机的一些路径设定如下:

  • $ORACLE_SID = CSMAR
  • $ORACLE_BASE = D:\app\Sean
  • $ORACLE_HOME = D:\app\Sean\product\11.2.0\dbhome_2

此时需要手工删除实例相关的配置:

  1. 删除ORACLEBASE/admin/ORACLE_SID所有目录。
  2. 删除$ORACLE_HOME/dbs下和SID相关的文件和参数文件,包括hc_CSMAR.dat,init.ora,lkBISAL,orapwbisal。

2. PL/SQL 创建用户、授予权限等

  • Step 1. 以system 账号登录数据库CSMAR,
  • Step 2. 文件–新建–用户,并给用户搭配相应的权限,参考了这里。新建了一个用户,表空间在Users,角色为connect,系统权限包括create session,以及对表格的操作,表空间中不受限额。

点击应用后,即可生成用户,还可以查看对应的SQL代码如下:

-- Create the usercreate user SEAN  identified by 123456  default tablespace USERS  temporary tablespace TEMP  profile DEFAULT  password expire  quota unlimited on users;-- Grant/Revoke role privilegesgrant connect to SEAN;grant dba to SEAN with admin option;-- Grant/Revoke system privilegesgrant create session to SEAN with admin option;grant create table to SEAN with admin option;grant delete any table to SEAN with admin option;grant insert any table to SEAN with admin option;grant select any table to SEAN with admin option;grant unlimited tablespace to SEAN with admin option;grant update any table to SEAN with admin option;

新建完成之后,点击钥匙(也就是登录按钮),然后切换成新的用户进行登录。

在创建数据库时,已经为SYS等4个账户设定了口令,其中SYS与SYSTEM具有管理员权限,在SQL*Plus工具中使用SYSTEM账户登录Oracle数据库。

通过数据字典dba_users,查看Oracle账户的锁定状态,如下:(v其中,OPEN表示账户为解锁状态;EXPIRED表示账户为过期状态(需要设置口令才能解除此状态);LOCKED表示账户为锁定状态。)

使用ALTER USER语句为scott账户解锁:

SQL> ALTER USER scott ACCOUNT UNLOCK;

再使用ALTER USER语句为scott账户设置口令,如下:

    SQL> ALTER USER scott IDENTIFIED BY tiger;

通过数据字典dba_users查看现在scott账户的状态,通过查询结果可以看出,scott账户已经被成功解锁。在使用数据字典dba_users时,需要注意其字段的值是区分大小的。

给用户解锁

3. 新建数据表

通过PL/SQL完成

1. Oracle 中支持的数据类型有:

  1. 字符数据类型

    • CHAR 类型。
    • VHARCHAR2和VARCHAR类型
    • VARCHAR数据类型
    • NVARCHAR和NVARCHAR2类型
    • Long 类型
  2. 数值类型

    • NUMBER类型
  3. 浮点数类型

    • BINARY_FLOAT
    • BINARY_DOUBLE
  4. 日期和时间类型

    • DATE类型
    • TIMESTAMP类型
  5. 大对象类型

    • BLOB类型
    • BFILE类型

详细介绍可以参考:简书:Oracle数据库数据类型, oracle数据类型

2. Issue 新建表格 comment中中文乱码

参考这里解决: PLSQL Developer建表时注释(COMMENT)中文乱码的解决方案(Windows)

处理方法:在环境变量中新增以下变量值对:

  • 变量名:NLS_LANG
  • 变量值:AMERICAN_AMERICA.ZHS16GBK

暂时没有解决,猜测仍然是字符集选择问题,database character set 选择了WE8MSWIN1252 似乎这是英文的字符集,会产生中文乱码,考虑更改字符集

解决
在建立表格的时候就选UTF8 编码或者中文编码。

新建日历文件表格

-- Create tablecreate table TRD_CALE(  markettype NUMBER,  clddt      DATE,  daywk      NUMBER,  state      VARCHAR2(10))tablespace USERS  pctfree 10  initrans 1  maxtrans 255  storage  (    initial 64K    next 1M    minextents 1    maxextents unlimited  );-- Add comments to the columnscomment on column TRD_CALE.markettype  is '市场类型,1=上海A,2=上海B,4=深圳A,8=深圳B, 16=创业板';comment on column TRD_CALE.clddt  is '日历日期,以YYYY-MM-DD表示';comment on column TRD_CALE.daywk  is '星期,1=星期一,2=星期二,3=星期三,4=星期四,5=星期五 6=星期六,0=星期天';comment on column TRD_CALE.state  is '开始情况,‘O’=开市(Open),‘C’=休市(Close)';

4. 批量插入数据

从外部数据格式中导入数据,例如excel, csv, dbf甚至SAS, Stata等格式的数据等。

参考这里:教你Excel数据通过plsql导入到Oracle
注意,在设定“每次提交”时选择0,这样会把所有都提交。

2. 从python接入数据库

Required python packages: cx_Oracle. 代码文件参考: Github地址

# -*- coding: utf-8 -*-# test for conneted to Oracle 11g database.import cx_Oracle as orausr = "system"psw = "123456"host = "localhost"port = 1521sid = "csmar"dsn = ora.makedsn(host, port, sid)  # define the destination to Oracle database.con = ora.connect(usr, psw, dsn)   # connected to Oracle database.con = ora.connect("system", "123456", "localhost/csmar")print(con.version)con.close

未完待继续添加

原创粉丝点击