【发布时间】:2025-11-25 01:45:01
【问题描述】:
我想编写一个 SQL 脚本来创建一个数据库。我想对其进行参数化,以便能够将其重用于未来的数据库。作为基础,我想使用 Oracle 文档页面中的脚本:
CREATE DATABASE mynewdb
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
GROUP 2 ('/u01/app/oracle/oradata/mynewdb/redo02.log') SIZE 100M,
GROUP 3 ('/u01/app/oracle/oradata/mynewdb/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/mynewdb/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/mynewdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/app/oracle/oradata/mynewdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
要运行 Oracle-sqlplus,必须设置一些系统变量,例如 ORACLE_SID。
- 如何从脚本中访问此 ORACLE_SID?例如。我想用 CREATE DATABASE ORACLE_SID 替换 CREATE DATABASE mynewdb
- 在我的例子中,'/u01/app/oracle/oradata/mynewdb/redo01.log' 等于 '/oradata/ORACLE_SID/redo01.log' -> 如何在语句中嵌入这个变量?李>
我希望我的问题足够清楚。任何提示表示赞赏。
【问题讨论】:
-
您是否必须从客户端环境中获取值,或者您可以提示它们吗?你can get arbitrary variables,但可能过分了。根据您打算如何调用它,您还可以在命令行上传递值,并使用位置替换变量。你能缩小你的要求吗?
-
谢谢@AlexPoole。提示就足够了,传递的值并不多。不知道有没有这种可能,谢谢指点。