您的位置:首页 > 数据库 > Oracle

Oracle数据库学习

2017-10-21 01:36 204 查看
实现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


未完待继续添加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息