开发环境windows安装oracle 19c并连接数据库
oracle 19c下载地址:https://www.oracle.com/cn/database/technologies/oracle-database-software-downloads.html#license-lightbox








创建链接服务器(远程数据库、DB_LINK),登录 sql plus ,如下:
创建 链接服务器(远程数据库)语句如下:
CREATE DATABASE LINK dblink_yybip
CONNECT TO yybip
IDENTIFIED BY Afxm1234 USING
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.80.189.12)
(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))';
查看所有数据库连接,如下:
-- 查看所有的数据库链接
SELECT * FROM dba_db_links;
-- 删除数据库连接
DROP DATABASE LINK dblink_yybip;
-- 查看当前用户的数据库链接
SELECT * FROM user_db_links;
-- 查询远程数据库中的数据
SELECT * FROM IUAP_APDOC_BASEDOC.BO_ORGADMIN@DBLINK_YYBIP;
-- 查询所有模式名称
SELECT username FROM dba_users;
-- 查询当前登录用户拥有的模式名称
SELECT username FROM all_users;
-- 创建用户
create user C##RY_NET
default tablespace USERS
temporary tablespace TEMP
profile DEFAULT
password expire
quota unlimited on users;
-- 给用户授权系统权限
grant create session to C##RY_NET;
grant unlimited tablespace to C##RY_NET;
-- 给用户授权创建链接数据库的权限
GRANT CREATE DATABASE LINK TO c##ry_net;
-- 创建角色
CREATE ROLE c##remote_yybip_reader;
-- 查看当前用户拥有的角色
SELECT * FROM USER_ROLE_PRIVS;
-- 查看所有角色
SELECT * FROM DBA_ROLES;
-- 查看某个角色被授予了哪些权限
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE = 'C##REMOTE_YYBIP_READER';
-- 查看某个角色授予了哪些对象权限
SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'C##REMOTE_YYBIP_READER';
-- 查看角色是否已经存在
SELECT * FROM DBA_ROLES WHERE ROLE = 'C##REMOTE_YYBIP_READER';
-- 检查角色是否已授予用户
SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'C##RY_NET' AND GRANTED_ROLE = 'C##REMOTE_YYBIP_READER';
-- 授权角色给用户
GRANT c##remote_yybip_reader TO c##ry_net;
-- 给用户取消角色授权
REVOKE c##remote_yybip_reader FROM c##ry_net;
-- 删除角色
DROP ROLE c##remote_yybip_reader;
-- 创建新的模式
CREATE USER my_schema IDENTIFIED BY password;
CREATE USER c##newuser IDENTIFIED BY password;
-- 授予模式权限
GRANT SELECT, INSERT, UPDATE, DELETE ON table_name TO my_schema;
-- 查看所有表空间
SELECT * FROM DBA_TABLESPACES;
SELECT tablespace_name FROM dba_tablespaces;
-- 查看指定表空间下的所有表
SELECT TABLE_NAME,TABLESPACE_NAME FROM DBA_TABLES WHERE TABLESPACE_NAME='USERS';
-- 查看当前用户默认表空间
SELECT * FROM USER_USERS;
-- 修改用户默认表空间
ALTER USER C##RY_NET DEFAULT TABLESPACE USERS;
-- 查看指定表空间当前配额
SELECT * FROM dba_ts_quotas WHERE tablespace_name = 'USERS';
-- 分配表空间配额
ALTER USER C##RY_NET QUOTA UNLIMITED ON USERS;
-- 验证权限
SELECT * FROM dba_sys_privs WHERE grantee = 'C##RY_NET';
-- 基本权限
GRANT CREATE SESSION TO C##RY_NET;
-- 分配表空间配额
GRANT UNLIMITED TABLESPACE TO C##RY_NET;
-- 具体表的权限
GRANT SELECT, INSERT, UPDATE, DELETE ON DM_BED TO C##RY_NET;
-- 切换会话
ALTER SESSION SET CURRENT_SCHEMA = C##RY_NET;
-- 列出当前用户的序列
SELECT * FROM USER_SEQUENCES;
SELECT * FROM DBA_SEQUENCES ORDER BY SEQUENCE_NAME;
-- 用序列和触发器生成自增ID
CREATE SEQUENCE sys_logininfor_seq START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER sys_logininfor_seq_tr
BEFORE INSERT ON sys_logininfor FOR EACH ROW
WHEN (NEW.info_id IS NULL)
BEGIN
SELECT sys_logininfor_seq.NEXTVAL INTO :NEW.info_id FROM DUAL;
END;
-- 查看序列当前值
SELECT C##RY_NET.SYS_LOGININFOR_SEQ.CURRVAL FROM DUAL;
-- 输出序列的当前值,确保它是正确的
-- 生成下一个值
SELECT C##RY_NET.SYS_LOGININFOR_SEQ.NEXTVAL FROM DUAL;
-- 输出序列的下一个值,确保它是连续的
-- 使用 ALTER SEQUENCE 语句将序列的当前值调整到 133
SELECT C##RY_NET.SYS_LOGININFOR_SEQ.CURRVAL FROM DUAL; -- 39
ALTER SEQUENCE C##RY_NET.SYS_LOGININFOR_SEQ INCREMENT BY 94; -- 修改步长
SELECT C##RY_NET.SYS_LOGININFOR_SEQ.NEXTVAL FROM DUAL; -- 39+94=133
SELECT C##RY_NET.SYS_LOGININFOR_SEQ.CURRVAL FROM DUAL; -- 133
ALTER SEQUENCE C##RY_NET.SYS_LOGININFOR_SEQ INCREMENT BY 1; -- 恢复步长
-- 从 Oracle 12c 开始,可以利用 GENERATED ALWAYS AS IDENTITY 来生成自增列
CREATE TABLE your_table (
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
other_column VARCHAR2(100)
);
INSERT INTO your_table (other_column) VALUES ('some_value');
-- 查询PDB
SELECT name FROM v$pdbs;
-- 切换到指定PDB
alter session set container = orclpdb;
-- 修改指定PDB状态
ALTER PLUGGABLE DATABASE orclpdb OPEN READ WRITE;
-- 查询指定PDB状态
select name,open_mode from v$pdbs where name='ORCLPDB';
-- 查询数据库实例
SELECT instance_name, status FROM v$instance;
-- 查询数据库服务
select global_name from global_name;
tnsnames.ora 和 listener.ora 配置文件都正确,但 TNSListener 服务无法启动。检查 环境变量 中是否存在 ORACLE_HOME ,将其删除,重新启动 TNSListener 服务。
# tnsnames.ora Network Configuration File: C:\Users\Administrator\Downloads\WINDOWS.X64_193000_db_home\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.185)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.185)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.mshome.net)
)
)
# listener.ora Network Configuration File: C:\Users\Administrator\Downloads\WINDOWS.X64_193000_db_home\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\Users\Administrator\Downloads\WINDOWS.X64_193000_db_home)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\Users\Administrator\Downloads\WINDOWS.X64_193000_db_home\bin\oraclr19.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.185)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
命令行启动数据库实例:
Microsoft Windows [Version 10.0.19045.6332]
(c) Microsoft Corporation. All rights reserved.
C:\Users\Administrator>sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sat Oct 4 13:06:30 2025
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL>
检查监听器状态:
C:\Users\Administrator>lsnrctl status
LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 04-OCT-2025 13:09:19
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.185)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production
Start Date 04-OCT-2025 10:15:11
Uptime 0 days 2 hr. 54 min. 8 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\Users\Administrator\Downloads\WINDOWS.X64_193000_db_home\network\admin\listener.ora
Listener Log File D:\Oracle19CBaseDic\diag\tnslsnr\DESKTOP-S83F2IH\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.3.185)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=DESKTOP-S83F2IH)(PORT=5500))(Security=(my_wallet_directory=D:\ORACLE19CBASEDIC\admin\orcl\xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "52448234712340b69f274bcc790ecfe0.mshome.net" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "cb256491eb234c18ae41c8f8bcc40ca5.mshome.net" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl.mshome.net" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.mshome.net" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclpdb.mshome.net" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
C:\Users\Administrator>
配置 ORCLPDB 数据库,配置完毕重启 services.msc 中的 OracleOraDB19Home1TNSListener 服务,listener.ora 和 tnsnames.ora 配置 如下:
# listener.ora Network Configuration File: D:\WINDOWS.X64_193000_db_home\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\WINDOWS.X64_193000_db_home)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\WINDOWS.X64_193000_db_home\bin\oraclr19.dll")
)
(SID_DESC =
(SID_NAME = ORCLPDB)
(ORACLE_HOME = D:\WINDOWS.X64_193000_db_home)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\WINDOWS.X64_193000_db_home\bin\oraclr19.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
# tnsnames.ora Network Configuration File: D:\WINDOWS.X64_193000_db_home\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb)
)
)
浏览器访问 https://127.0.0.1:5500/em/shell 可以使用用户名密码登录 Oracle 的企业管理器,如下图:
查询是否为 CDB(Container Databse)容器数据库,如下:
-- 查看用户
SELECT username FROM dba_users
-- 查看数据库是否为CDB容器数据库
SELECT a.name,a.CDB, a.* FROM v$database a;
-- v$pdbs 视图,该视图只有在 CDB(容器数据库)中才存在,用于列出所有 PDB
SELECT name, open_mode FROM v$pdbs;
使用 DBCA(Database Configuration Assistant) 创建 PDB(Pluggable Databse)可插拔数据库,如下:







在本机的 tnsnames.org 文件中添加如下配置:
DevServerMYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.80.189.43)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb)
)
)
远程服务器 10.80.189.43 上的 tnsnames.org 如下:
# tnsnames.ora Network Configuration File: D:\WINDOWS.X64_193000_db_home\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb)
)
)
MYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = mydb)
)
)
在本机使用 PLSQL Developer 连接刚刚创建的 PDB ,如下:

需要打开 PDB 数据库,先使用 sys 用户连接 mydb 这个数据库,如下:
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)