oracle12C以上版本创建pdb数据库实例实践

1.1 连接数据库

说明:本示例数据库为docker容器部署,实际物理机部署的数据库直接使用sqlplus / as sysdba 进入数据库即可

[admin@localhost ~]$ docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED       STATUS       PORTS                                                                                  NAMES
857c9fee68c2   settle/ora:v1   "/bin/bash"   13 days ago   Up 13 days   0.0.0.0:1521->1521/tcp, :::1521->1521/tcp, 0.0.0.0:5500->5500/tcp, :::5500->5500/tcp   容器名
[admin@localhost ~]$ docker exec -it --user oracle 容器名/容器id /bin/bash
[oracle@ora184 /]$ sqlplus / as sysdba

1.2 查询该容器是CDB 还是非CDB

SQL> select name,cdb,open_mode,con_id from v$database;

NAME      CDB OPEN_MODE                CON_ID
--------- --- -------------------- ----------
ORCLCDB   YES READ WRITE                    0

查看所创建的PDB

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       READ WRITE NO

2.1创建一个新PDB

SQL> select  name from v$datafile;

NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/ORCLCDB/system01.dbf
/opt/oracle/oradata/ORCLCDB/sysaux01.dbf
/opt/oracle/oradata/ORCLCDB/undotbs01.dbf
/opt/oracle/oradata/ORCLCDB/pdbseed/system01.dbf
/opt/oracle/oradata/ORCLCDB/pdbseed/sysaux01.dbf
/opt/oracle/oradata/ORCLCDB/users01.dbf
/opt/oracle/oradata/ORCLCDB/pdbseed/undotbs01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf


--创建pdb
SQL> create pluggable database 数据库实例 admin user 用户名 identified by 密码 file_name_convert=('/opt/oracle/oradata/ORCLCDB/pdbseed/','/opt/oracle/oradata/ORCLCDB/数据库实例/');

Pluggable database created.

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       READ WRITE NO
         4 数据库实例                         MOUNTED

注:select name from v$datafile; 可查询file_name_convert的路径

2.2启动一个创建好的pdb

--启动一个创建好的pdb
SQL> alter pluggable database 数据库实例 open;

Pluggable database altered.

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       READ WRITE NO
         4 数据库实例                         READ WRITE NO
SQL>

2.3创建表空间

切换到对应的pdb下
ALTER SESSION SET CONTAINER=数据库实例;
创建表空间
CREATE TABLESPACE 数据库实例_INDEX
LOGGING
DATAFILE '/opt/oracle/oradata/ORCLCDB/数据库实例/数据库实例_INDEX01.DBF'
SIZE 100M
AUTOEXTEND ON
NEXT 1M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;

CREATE TABLESPACE 数据库实例_DATA
LOGGING
DATAFILE '/opt/oracle/oradata/ORCLCDB/数据库实例/数据库实例_DATA01.DBF'
SIZE 100M
AUTOEXTEND ON
NEXT 1M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;

若是要删除表空间,用如下语句:
drop tablespace 数据库实例_INDEX including contents and datafiles cascade constraint;
drop tablespace 数据库实例_DATA including contents and datafiles cascade constraint;

● 重启数据库

alter pluggable database 数据库实例 close;
alter pluggable database 数据库实例 open;

3. 配置监听文件

监听文件目录在$ORACLE_HOME/network/admin
说明:容器里无法使用vi命令,因此在容器外修改对应配置文件,挂载目录为:/home/admin/oradata/dbconfig/ORCLCDB

3.1 tnsnames.ora 文件内容

 数据库实例=
     (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = IP地址)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 数据库实例)
    )
     )

3.2 listener.ora 文件内容

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orclpdb1)
      (ORACLE_HOME=/opt/oracle/product/19c/dbhome_1)
      (SID_NAME = orclpdb1)
    )
   (SID_DESC =
      (GLOBAL_DBNAME = 数据库实例)
      (ORACLE_HOME=/opt/oracle/product/19c/dbhome_1)
      (SID_NAME = 数据库实例)
    )
   )

3.3 测试配置是否成功(需要切换到Oracle用户)

[oracle@ora184 /]$ tnsping 数据库实例

TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 31-AUG-2022 14:25:09

Copyright (c) 1997, 2019, Oracle.  All rights reserved.

Used parameter files:
/opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 数据库实例)))
OK (30 msec)

4. 配置启动项

oracle12C中在启动数据库的时候,PDB并不会随着CDB而启动。可以通过创建一个触发器让PDB能够随CDB启动。

 alter session set container=CDB$ROOT;
   CREATE OR REPLACE TRIGGER open_pdbs
     AFTER STARTUP ON DATABASE
   BEGIN
     EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
   END open_pdbs;
   /
   --关闭数据库
   SQL> shutdown immediate;
   Database closed.
   Database dismounted.
   ORACLE instance shut down.
   --启动数据库
   SQL> startup
   ORACLE instance started.
   
   Total System Global Area 1610611336 bytes
   Fixed Size                  9136776 bytes
   Variable Size            1040187392 bytes
   Database Buffers          553648128 bytes
   Redo Buffers                7639040 bytes
   Database mounted.
   Database opened.
   SQL>
   

5.创建用户并授权

切换容器:
alter session set container=swapry;

查看当前使用容器:
select sys_context ('USERENV', 'CON_NAME') from dual;

创建用户:

create user 用户 identified by oracle
default tablespace 之前创建的表空间名
temporary tablespace TEMP
profile DEFAULT;

可以考虑给如下权限:
grant connect,resource to  用户;
grant unlimited tablespace to  用户;
grant restricted session to  用户;
grant imp_full_database to 用户;
grant exp_full_database to 用户;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle 12c中,创建数据库需要执行以下步骤: 1. 安装Oracle 12c软件。 2. 以管理员身份登录操作系统。 3. 打开命令行界面,并使用以下命令连接到Oracle 12c实例: sqlplus / as sysdba 注意,“/ as sysdba”表示使用管理员权限登录。 4. 创建数据库。可以使用以下命令创建名为“new_database”的数据库: CREATE DATABASE new_database MAXINSTANCES 8 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 DATAFILE 'C:\path\to\new_database.dbf' SIZE 100M SYSAUX DATAFILE 'C:\path\to\new_database_sysaux.dbf' SIZE 100M UNDO TABLESPACE undo_ts LOGFILE GROUP 1 ('C:\path\to\new_database_redo1.log') SIZE 50M, GROUP 2 ('C:\path\to\new_database_redo2.log') SIZE 50M, GROUP 3 ('C:\path\to\new_database_redo3.log') SIZE 50M; 注意替换“new_database”为您要创建数据库名称,“C:\path\to\new_database.dbf”和“C:\path\to\new_database_sysaux.dbf”为数据文件和系统辅助表空间文件的路径和文件名,“undo_ts”为撤消表空间的名称,以及“C:\path\to\new_database_redo1.log”、“C:\path\to\new_database_redo2.log”和“C:\path\to\new_database_redo3.log”为重做日志文件的路径和文件名。 5. 启动新数据库。可以使用以下命令启动新数据库: STARTUP; 6. 验证数据库已成功创建。可以使用以下命令查看数据库版本和状态: SELECT * FROM v$version; SELECT status FROM v$instance; 如果数据库已成功创建并已启动,则应该看到版本号和状态信息。 这些步骤将创建一个新的Oracle 12c数据库。请注意,这只是一个简单的例子,实际上可能需要更多的步骤和更复杂的命令来创建和配置数据库。此外,创建数据库需要一定的专业知识和技能,建议由有经验的DBA或数据库管理员来完成。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值