Oracle数据库介绍

Oracle数据库是一种关系型数据库管理系统,由美国甲骨文公司开发,它是当前最流行的关系型数据库管理系统之一,也是业界最受欢迎的数据库之一。Oracle数据库拥有丰富的功能,如安全管理、可靠性管理、数据库管理、数据库优化等,并且具有强大的可扩展性和可移植性,可以满足不同类型的应用程序的需求。

环境搭建

  • Oracle数据库安装包
  • Windows server 2016

直接去官网下载安装包,我这里下载的版本为19。

下载完直接安装,不会有报错(选择Windows server 2016),安装完成后,打开cmd,输入sqlplus 输入账号密码直接进入数据库

使用sys用户登陆 sys as sysdbas (建立远程连接关闭Windows防火墙就行)

使用代码连接oracle数据库有两种形式,需要知道sid和Server_Name

  • jdbc:oracle:thin:@ip:port:SID
  • jdbc:oracle:thin:@ip:port/Server_Name

Oracle数据库基本操作

1
2
3
4
5
6
7
8
select * from user_users;       查询当前用户
select * from all_users; 查询所有用户
select name from v$database; 查询数据库名称
select * from all_tables 查询所有的表
select * from user_tables 查询当前用户的所有表
select * from all_tab_columns 查询所有字段
select * from user_tab_columns 查询当前用户的字段
select * from v$version 查当前使用的Oracle版本

rownum的特性

由于在Oracle中不存在limit,所以查询特定的数据需要用rownum来进行选择。比如先输入:

1
select owner from all_tables;

显示前2条数据

1
select owner from all_tables where rownum<=2;

使用python连接Oracle数据库

方法一:使用cx_Oracle模块

1
2
3
4
5
6
7
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cx_Oracle

db = cx_Oracle.connect('用户/密码@ip:端口/service name')
cursor = cx_Oracle.Cursor(db) # db作为参数传递给函数
cursor.execute('select * from table_name')

方法二:使用oracledb模块

请确保已安装以下 Oracle 依赖:

  1. oracledb: Python 的 Oracle 数据库模块,用于连接和操作 Oracle 数据库
    安装方法:pip install oracledb
  2. Oracle Instant Client: Oracle 的轻量级客户端库,用于与 Oracle 数据库进行通信
    下载地址:https://www.oracle.com/cn/database/technologies/instant-client/downloads.html
    请根据您的操作系统和 Python 版本选择合适的 Instant Client 版本
  3. 将 Instant Client 解压到 ‘instantclient_19_8’ 文件夹,并确保该文件夹位于当前脚本的同一目录下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import oracledb
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
folder_path = os.path.join(dir_path, 'instantclient_19_8')
oracledb.init_oracle_client(lib_dir=folder_path)
connection = oracledb.connect(
user="sys",
port=1521,
password='123456',
host="192.168.140.112",
sid="orcl",
mode=oracledb.SYSDBA)

推荐方法二,因为方法二相对于方法一,更加简单,灵活。

连接数据库一些常见的状态码

1
2
3
4
5
6
7
8
9
ORA-12170: (连接超时,端口无法通信)
ORA-12505: (SID错误,能够通信)
ORA-12504: (没有提供SERVICE_NAME)
ORA-12514: (SID或服务名错误,能够通信)
ORA-28000: (该账户锁定,不判断密码是否正确)
ORA-01017: (用户名或密码错误)
ORA-28009: (此时密码正确,需切换DBA角色登陆)
ORA-01031: (该账户不是DBA权限,不保证账户存在)
ORA-28547:(连接的oci.dll版本文件版本或配置不正确)`

参考链接