Oracle数据库学习

  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 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 中支持的数据类型有:
  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 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

未完待继续添加

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle2: 1. 《Oracle8 优化技术》摘录 (第一章 安装) 2. 《Oracle8 优化技术》摘录 (第二章 内存-CPU) 3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 5. Oracle Index 的三个问题 6. Oracle PL-SQL语言基础 7. Oracle的分布式管理 8. ORACLE的数据类型 9. Oracle数据库碎片整理 10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL_SQL单行函数和组函数详解 14.PL-SQL 15.PLSQL异常处理初步 16.SQL语句性能调整原则 17.创建和使用分区的表 18.基于成本的优化器一般错误概念和问题 19.Delphi 3_0中连接数据库的三种方式 20.远程数据库的访问 21.监控数据库性能的SQL 22.简单实现数据库表空间的备份或迁移 23.简析REDO LOGFILE 24.理解和使用Oracle 8i分析工具-LogMiner 25.哪些初始化参数最影响Oracle系统性能 26.你的SQL语句在什么情况下使用全表扫描? 27.如何对CLOB行字段执行全文检索 28.如何让你的SQL运行得更快 29.如何使‘CREATE TABLE AS SELECT’能支持ORDER BY 30.删除表内重复记录的方法 31.数据库安全性策略 32.数据库的查询优化技术. 33.提高C-S系统性能的一些方法 34.提高ORACLE数据库系统import性能 35.外部联接的用法 36.性能调试的一般问题 37.优化 38.优化调整Oracle 8i数据库(从操作系统) 39.在Internet上运作公司是一项艰苦的任务--关键任务 40.在oracle中限制返回结果集的大小 41.在远端如何建立standby数据库 42.怎样分析你的SQL语句的效率 43.自动备份Oracle数据库 44.总结SQL语句中的优化提示 45.使用Database Configuration Assistant安装第二个数据库 46.Oracle 数据库向 MS SQL Server 7.0 的迁移 Oracle1: 1. Decode()函数使用技巧(NT+IIS+ASP+ORACLE) 2. Dual伪列 3. EXP、IMP 命令详解 4. Exp-Imp大量数据 5. Export-Import 使用技巧与常见错误 6. NULL 使用详解 7. Oracle for NT系统实用工具介绍 8. Oracle 和 mysql 的一些简单命令对比参照 9. Oracle8i和Microsoft SQL Server7_0比较 10. Oracle8的不安全因素及几点说明 11. Oracle常见错误代码 12. Oracle常用Script 13. Oracle常用数据字典 14. ORACLE回滚段管理(上) 15. ORACLE回滚段管理(下) 16. Oracle基于Client-Server的性能调整 17. Oracle数据库的安全策略 18. ORACLE数据库简介 19. Oracle数据库密码文件的使用和维护 20. Oracle数据库碎片整理 21. Oracle特殊包 22. Oradim工具的用法 23. PB如何连接Oracle数据库 24. ROLLBACK不能回滚的命令 25. 安装Oracle后,经常使用的修改表空间的SQL代码 26. 比较SQL Server与Oracle、DB2 27. 多个数据库时,如何设置默认数据库 28. 各种数据类型的比较 29. 漫谈oracle中的空值 30. 没有备份、只有归档日志,如何恢复数据文件 31. 哪些初始化参数最影响Oracle系统性能 32. 如何查看数据库的字符集 33. 如何启动ARCHIVELOG模式 34. 如何使‘CREATE TABLE AS SELECT’能支持ORDER BY ? 35. 如何使用归

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值