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.oralistener.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.oratnsnames.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 这个数据库,如下:
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐