- 实现Oracle 数据库的安装
- 管理数据表
- 简单存放数据
- 更新数据
- 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的方法。
- 关闭oracle所有的服务。可以在windows的服务管理器中关闭;(控制面板-管理工具-服务)
打开注册表:在运行中regedit 打开路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
删除该路径下的所有以oracle开始的服务名称,这个键是标识Oracle在windows下注册的各种服务!打开注册表,找到路径:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
删除该oracle目录,该目录下注册着Oracle数据库的软件安装信息。删除注册的oracle事件日志,打开注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
删除注册表的以oracle开头的所有项目。删除环境变量path中关于oracle的内容。
鼠标右键右单击“我的电脑属性高级环境变量PATH 变量。
删除Oracle在该值中的内容。注意:path中记录着一堆操作系统的目录,在windows中各个目录之间使用分号(; )隔开的,删除时注意。
建议:删除PATH环境变量中关于Oracle的值时,将该值全部拷贝到文本编辑器中,找到对应的Oracle的值,删除后,再拷贝修改的串,粘贴到PATH环境变量中,这样相对而言比较安全。重新启动操作系统。
以上1~5个步骤操作完毕后,重新启动操作系统。重启操作系统后各种Oracle相关的进程都不会加载了。这时删除Oracle_Home下的所有数据。(Oracle_Home指Oracle程序的安装目录)
删除C:\Program Files下oracle目录。
(该目录视Oracle安装所在路径而定)删除开始菜单下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就应该对组织和管理数据库负责任,其主要任务是:
- 启动和关闭数据库;
- 创建数据库;
- 删除数据库;
- 调整初始化参数;
- 管理网络。
对于数据库的管理,必须要具有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
此时需要手工删除实例相关的配置:
- 删除 ORACLEBASE/admin/ ORACLE_SID所有目录。
- 删除$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 user
create user SEAN
identified by 123456
default tablespace USERS
temporary tablespace TEMP
profile DEFAULT
password expire
quota unlimited on users;
-- Grant/Revoke role privileges
grant connect to SEAN;
grant dba to SEAN with admin option;
-- Grant/Revoke system privileges
grant 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 中支持的数据类型有:
字符数据类型
- CHAR 类型。
- VHARCHAR2和VARCHAR类型
- VARCHAR数据类型
- NVARCHAR和NVARCHAR2类型
- Long 类型
数值类型
- NUMBER类型
浮点数类型
- BINARY_FLOAT
- BINARY_DOUBLE
日期和时间类型
- DATE类型
- TIMESTAMP类型
大对象类型
- BLOB类型
- BFILE类型
详细介绍可以参考:简书:Oracle数据库数据类型, oracle数据类型
2. Issue 新建表格 comment中中文乱码
参考这里解决: PLSQL Developer建表时注释(COMMENT)中文乱码的解决方案(Windows)
处理方法:在环境变量中新增以下变量值对:
- 变量名:NLS_LANG
- 变量值:AMERICAN_AMERICA.ZHS16GBK
暂时没有解决,猜测仍然是字符集选择问题,database character set 选择了WE8MSWIN1252 似乎这是英文的字符集,会产生中文乱码,考虑更改字符集
解决
在建立表格的时候就选UTF8 编码或者中文编码。
新建日历文件表格
-- Create table
create 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 columns
comment 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 ora
usr = "system"
psw = "123456"
host = "localhost"
port = 1521
sid = "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
未完待继续添加