oracle怎么写代码(oracle 代码)

oracle怎么写代码(oracle 代码)使用 dbca 方式创建数据库方便快速 但是臃肿 生成的数据库中包含大量预先部署组件 官方还提供了一种纯净建库方案 使用 CREATE DATABASE 语句 本文参考网址 https docs oracle com en database oracle oracle database 19 multi creating and configuring a cdb

大家好,我是讯享网,很高兴认识大家。



使用dbca方式创建数据库方便快速,但是臃肿,生成的数据库中包含大量预先部署组件。官方还提供了一种纯净建库方案,使用CREATE DATABASE语句。

本文参考网址:

https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/creating-and-configuring-a-cdb.html#GUID-54C5126C-427A-4BFE-81BF-950FB1A062D5

SQL语句要运行,需要一个可用的数据库实例。启动实例,需要一个数据库参数文件。这个参数文件,可以从\(ORACLE_HOME/dbs/init.ora文件修改得到。省略注释,init.ora原文如下:</p><blockquote><p>db_name='ORCL'</p><p>memory_target=1G</p><p>processes = 150</p><p>audit_file_dest='<ORACLE_BASE>/admin/orcl/adump'</p><p>audit_trail ='db'</p><p>db_block_size=8192</p><p>db_domain=''</p><p>db_recovery_file_dest='<ORACLE_BASE>/fast_recovery_area'</p><p>db_recovery_file_dest_size=2G</p><p>diagnostic_dest='<ORACLE_BASE>'</p><p>dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'</p><p>open_cursors=300 </p><p>remote_login_passwordfile='EXCLUSIVE'</p><p>undo_tablespace='UNDOTBS1'</p><p># You may want to ensure that control files are created on separate physical</p><p># devices</p><p>control_files = (ora_control1, ora_control2)</p><p>compatible ='11.2.0'</p></blockquote><p>将<ORACLE_BASE>全局替换成/u01/app/oracle。将数据库名ORCL全局替换成newcdb。将memory_target替换成sga+pga的方式。控制文件指定到具体的目录。兼容性调整到19c。最重要的是添加参数enable_pluggable_database=TRUE。复制改名成initnewcdb.ora文件,修改后的样子:</p><blockquote><p><br></p><p>db_name='newcdb'</p><p>sga_target=1G</p><p>pga_aggregate_target=512M</p><p>processes = 150</p><p>audit_file_dest='/u01/app/oracle/admin/newcdb/adump'</p><p>audit_trail ='db'</p><p>db_block_size=8192</p><p>db_domain=''</p><p>db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'</p><p>db_recovery_file_dest_size=2G</p><p>diagnostic_dest='/u01/app/oracle'</p><p>dispatchers='(PROTOCOL=TCP) (SERVICE=newcdbXDB)'</p><p>open_cursors=300 </p><p>remote_login_passwordfile='EXCLUSIVE'</p><p>undo_tablespace='UNDOTBS1'</p><p>control_files = (/u01/app/oracle/oradata/newcdb/control01.ctl, /u01/app/oracle/oradata/newcdb/control02.ctl)</p><p>compatible ='19.0.0'</p><p>enable_pluggable_database=TRUE</p></blockquote><p>参数文件用到的几个目录,必须在实例启动前建好</p><blockquote><p><br></p><p>mkdir -p /u01/app/oracle/admin/newcdb/adump</p><p>mkdir -p /u01/app/oracle/fast_recovery_area</p></blockquote><p>官方给出的CREATE DATABASE语句如下:<br></p><blockquote><p><br></p><p>CREATE DATABASE newcdb</p><p>  USER SYS IDENTIFIED BY sys_password</p><p>  USER SYSTEM IDENTIFIED BY system_password</p><p>  LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') </p><p>             SIZE 100M BLOCKSIZE 512,</p><p>          GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') </p><p>             SIZE 100M BLOCKSIZE 512,</p><p>          GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') </p><p>             SIZE 100M BLOCKSIZE 512</p><p>  MAXLOGHISTORY 1</p><p>  MAXLOGFILES 16</p><p>  MAXLOGMEMBERS 3</p><p>  MAXDATAFILES 1024</p><p>  CHARACTER SET AL32UTF8</p><p>  NATIONAL CHARACTER SET AL16UTF16</p><p>  EXTENT MANAGEMENT LOCAL</p><p>  DATAFILE '/u01/app/oracle/oradata/newcdb/system01.dbf'</p><p>    SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED</p><p>  SYSAUX DATAFILE '/u01/app/oracle/oradata/newcdb/sysaux01.dbf'</p><p>    SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED</p><p>  DEFAULT TABLESPACE deftbs</p><p>     DATAFILE '/u01/app/oracle/oradata/newcdb/deftbs01.dbf'</p><p>     SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED</p><p>  DEFAULT TEMPORARY TABLESPACE tempts1</p><p>     TEMPFILE '/u01/app/oracle/oradata/newcdb/temp01.dbf'</p><p>     SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED</p><p>  UNDO TABLESPACE undotbs1</p><p>     DATAFILE '/u01/app/oracle/oradata/newcdb/undotbs01.dbf'</p><p>     SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED</p><p>  ENABLE PLUGGABLE DATABASE</p><p>    SEED</p><p>    FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/newcdb/', </p><p>                         '/u01/app/oracle/oradata/pdbseed/')</p><p>    SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED</p><p>    SYSAUX DATAFILES SIZE 100M</p><p>  USER_DATA TABLESPACE usertbs</p><p>    DATAFILE '/u01/app/oracle/oradata/pdbseed/usertbs01.dbf'</p><p>    SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED</p><p>  LOCAL UNDO ON;</p></blockquote><p>在空实例中执行,一定会报错。需要把用户默认表空间去掉,CDB中的deftbs和SEED中的usertbs,为什么呢?不知道。反正加上这俩,一定报错。顺便把临时表空间tempts1名字改成了temp,更符合平时使用习惯。修改后的CREATE DATABASE语句如下:</p><blockquote><p><br></p><p>CREATE DATABASE newcdb</p><p>  USER SYS IDENTIFIED BY sys_password</p><p>  USER SYSTEM IDENTIFIED BY system_password</p><p>  LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') </p><p>             SIZE 100M BLOCKSIZE 512,</p><p>          GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') </p><p>             SIZE 100M BLOCKSIZE 512,</p><p>          GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') </p><p>             SIZE 100M BLOCKSIZE 512</p><p>  MAXLOGHISTORY 1</p><p>  MAXLOGFILES 16</p><p>  MAXLOGMEMBERS 3</p><p>  MAXDATAFILES 1024</p><p>  CHARACTER SET AL32UTF8</p><p>  NATIONAL CHARACTER SET AL16UTF16</p><p>  EXTENT MANAGEMENT LOCAL</p><p>  DATAFILE '/u01/app/oracle/oradata/newcdb/system01.dbf'</p><p>    SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED</p><p>  SYSAUX DATAFILE '/u01/app/oracle/oradata/newcdb/sysaux01.dbf'</p><p>    SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED</p><p>  DEFAULT TEMPORARY TABLESPACE temp</p><p>     TEMPFILE '/u01/app/oracle/oradata/newcdb/temp01.dbf'</p><p>     SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED</p><p>  UNDO TABLESPACE undotbs1</p><p>     DATAFILE '/u01/app/oracle/oradata/newcdb/undotbs01.dbf'</p><p>     SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED</p><p>  ENABLE PLUGGABLE DATABASE</p><p>    SEED</p><p>    FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/newcdb/', </p><p>                         '/u01/app/oracle/oradata/pdbseed/')</p><p>    SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED</p><p>    SYSAUX DATAFILES SIZE 100M</p><p>  LOCAL UNDO ON;</p></blockquote><p>CREATE DATABASE语句运行前的目录必须建好</p><blockquote><p><br></p><p>#root execute</p><p>mkdir /u02</p><p>chown oracle:oinstall /u02</p><p>chmod 775 /u02</p><p>#oracle execute</p><p>mkdir -p /u01/app/oracle/oradata/newcdb</p><p>mkdir -p /u01/app/oracle/oradata/pdbseed</p><p>mkdir -p /u01/logs/my</p><p>mkdir -p /u02/logs/my</p></blockquote><p>准备结束,开始建库</p><p>设置SID</p><blockquote><p>export ORACLE_SID=newcdb<br></p></blockquote><p>启动实例<br></p><blockquote><p>sqlplus / as sysdba</p><p>startup nomount pfile='/home/oracle/initnewcdb.ora'</p></blockquote><p>执行前面修改后的CREATE DATABASE语句</p><p>建库完成后执行catcdb.sql脚本,并输入参数</p><blockquote><p><br></p><p>@?/rdbms/admin/catcdb.sql</p><p><br></p><p>SQL> host perl -I &&rdbms_admin &&rdbms_admin_catcdb --logDirectory &&1 --logFilename &&2</p><p>Enter value for 1: /tmp</p><p>Enter value for 2: create_cdb.log</p><p>Enter new password for SYS: </p><p>Enter new password for SYSTEM: </p><p>Enter temporary tablespace name: temp</p></blockquote><p>等待半小时以上,脚本才能执行完。sga和redo logfile调大一些,等待时间能够变短,我看到alert日志中多次出现Checkpoint not complete。此时<br></p><blockquote><p>SQL> show pdbs</p><p><br></p><p>    CON_ID CON_NAME   OPEN MODE  RESTRICTED</p><p>---------- ------------------------------ ---------- ----------</p><p> 2 PDB\)SEED   READ ONLY  NO

新建pdb验证前,新建pdb所在目录

mkdir -p /u01/app/oracle/oradata/salespdb


讯享网

新建pdb

CREATE PLUGGABLE DATABASE salespdb ADMIN USER salesadm IDENTIFIED BY pwd FILE_NAME_CONVERT = (‘/u01/app/oracle/oradata/pdbseed/’, ‘/u01/app/oracle/oradata/salespdb/’);

验证

SQL> show pdbs

    CON_ID CON_NAME   OPEN MODE  RESTRICTED

———- —————————— ———- ———-

2 PDB\(SEED   READ ONLY  NO</p><p> 3 SALESPDB   MOUNTED</p><p>SQL> alter pluggable database all open;</p><p><br></p><p>Pluggable database altered.</p><p><br></p><p>SQL> show pdbs</p><p><br></p><p>    CON_ID CON_NAME   OPEN MODE  RESTRICTED</p><p>---------- ------------------------------ ---------- ----------</p><p> 2 PDB\)SEED   READ ONLY  NO

3 SALESPDB   READ WRITE NO

手工建库完成。缺少的数据库缺省用户表空间,可以手工添加,不影响正常使用。

小讯
上一篇 2025-04-14 11:18
下一篇 2025-05-08 08:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/165820.html