Oracle 生成";“创建表空间”;不带dbms_元数据的脚本。get_ddl
我想从我们的生产数据库中为创建一个“创建表空间”脚本。我已经尝试了以下导致ORA-31603的方法:Oracle 生成";“创建表空间”;不带dbms_元数据的脚本。get_ddl,oracle,ddl,Oracle,Ddl,我想从我们的生产数据库中为创建一个“创建表空间”脚本。我已经尝试了以下导致ORA-31603的方法: 选择dbms\u元数据。从dba\u表空间获取\u ddl('TABLESPACE',TABLESPACE\u name),其中TABLESPACE\u name!='系统“ 在谷歌搜索之后,我发现我需要选择目录\u角色来使用dbms\u元数据。获取ddl。我拥有的是访问DBA\u表空间的权限 问题:是否有一种方法可以在不使用SELECT\u CATALOG\u角色的情况下仅使用DBA\u表空间
选择dbms\u元数据。从dba\u表空间获取\u ddl('TABLESPACE',TABLESPACE\u name),其中TABLESPACE\u name!='系统“
在谷歌搜索之后,我发现我需要选择目录\u角色
来使用dbms\u元数据。获取ddl
。我拥有的是访问DBA\u表空间的权限
问题:是否有一种方法可以在不使用SELECT\u CATALOG\u角色的情况下仅使用DBA\u表空间生成“create tablespace”脚本
我会自己编写脚本,但我真的不知道如何解释DBA_表空间中的select*from
(AUOTEXTEND是开还是关,初始大小是多少等等)给出的信息 自动扩展和大小详细信息可在DBA_数据_文件
表中找到。如果表空间不是BIGFILE
表空间,那么它可以有多个具有不同大小和属性的文件
一个简单的创建脚本示例(在11g中),没有考虑大多数特殊功能(因此请检查表空间以了解压缩和加密等详细信息,并相应地将它们添加到脚本中。请参阅完整的create TABLESPACE
reference),并一如既往地进行彻底测试。排除UNDO
和TEMP
表空间:
SELECT 'CREATE '
|| DECODE (ts.bigfile, 'YES', 'BIGFILE ') --assuming smallfile is the default table space
|| 'TABLESPACE "'
|| ts.tablespace_name
|| '" DATAFILE' --assuming OMF (Oracle-Managed File names) is used
|| CHR (13)
|| CHR (10)
|| LISTAGG (
' SIZE '
|| df.bytes
|| DECODE (
df.autoextensible,
'YES', CHR (13)
|| CHR (10)
|| ' AUTOEXTEND ON NEXT '
|| df.increment_by * ts.block_size
|| ' MAXSIZE '
|| CASE
WHEN maxbytes < POWER (1024, 3) * 2
THEN
TO_CHAR (maxbytes)
ELSE
TO_CHAR (
FLOOR (maxbytes / POWER (1024, 2)))
|| 'M'
END),
',' || CHR (13) || CHR (10))
WITHIN GROUP (ORDER BY df.file_id)
|| CHR (13)
|| CHR (10)
|| ' '
|| ts.logging
|| ' '
|| ts.status
|| ' BLOCKSIZE '
|| ts.block_size
ddl
FROM dba_tablespaces ts
INNER JOIN
dba_data_files df
ON ts.tablespace_name = df.tablespace_name
WHERE ts.contents = 'PERMANENT' --excludes UNDO and TEMP
GROUP BY ts.tablespace_name,
ts.bigfile,
ts.logging,
ts.status,
ts.block_size
ORDER BY ts.tablespace_name;
选择“创建”
||解码(ts.bigfile,'YES','bigfile')--假设smallfile是默认的表空间
||“表空间”
||ts.tablespace\u name
||““数据文件”-假设使用OMF(Oracle托管文件名)
||人权专员(13)
||CHR(10)
||利斯塔格(
“尺寸”
||字节数
||解码(
df.autoextensible,
“是”,CHR(13)
||CHR(10)
||“下一步自动扩展”
||df.increment_乘以*ts.block_大小
||“最大尺寸”
||案例
当maxbytes<功率(1024,3)*2时
然后
至字符(最大字节)
其他的
托查(
楼层(最大字节数/功率(1024,2)))
||“我是
(完),,
“,”| | CHR(13)| | CHR(10))
组内(按df.file\u id排序)
||人权专员(13)
||CHR(10)
|| ' '
||ts.测井
|| ' '
||ts状态
||“块大小”
||块大小
ddl
来自dba_表空间ts
内连接
dba_数据_文件df
在ts.tablespace\u name=df.tablespace\u name上
其中ts.contents='PERMANENT'--不包括撤消和临时
按ts.tablespace\u名称分组,
ts.bigfile,
ts.logging,
ts.status,
块大小
按ts.tablespace\u name排序;
如果表空间中有多个数据文件,请考虑将其更改为<代码> BigFiels表空间。
< P>这是有用的,如果您知道您的数据文件路径,并给出与它们的表空间相同的名称。
如果需要,它还会生成一些表空间
SELECT 'CREATE '
|| DECODE (ts.bigfile, 'YES', 'BIGFILE ') --assuming smallfile is the default table space
|| 'TABLESPACE "'
|| ts.tablespace_name
|| '" DATAFILE ''C:\Oracle\oradata\yourDATABASEname\'|| ts.tablespace_name || '.DBF'''
|| CHR (13)
|| CHR (10)
|| LISTAGG (
' SIZE '
|| df.bytes
|| DECODE (
df.autoextensible,
'YES', CHR (13)
|| CHR (10)
|| ' AUTOEXTEND ON NEXT '
|| df.increment_by * ts.block_size
|| ' MAXSIZE '
|| CASE
WHEN maxbytes < POWER (1024, 3) * 2
THEN
TO_CHAR (maxbytes)
ELSE
TO_CHAR (
FLOOR (
maxbytes / POWER (1024, 2)))
|| 'M'
END),
',' || CHR (13) || CHR (10))
WITHIN GROUP (ORDER BY df.file_id)
|| CHR (13)
|| CHR (10)
|| ' '
|| ts.logging
|| ' '
|| ts.status
|| ' BLOCKSIZE '
|| ts.block_size
ddl
FROM dba_tablespaces ts
INNER JOIN dba_data_files df
ON ts.tablespace_name = df.tablespace_name
WHERE ts.contents = 'PERMANENT' --excludes UNDO and TEMP
AND ts.tablespace_name IN ('YOUR_TABLESPACE LIST')
GROUP BY ts.tablespace_name,
ts.bigfile,
ts.logging,
ts.status,
ts.block_size
ORDER BY ts.tablespace_name;
选择“创建”
||解码(ts.bigfile,'YES','bigfile')--假设smallfile是默认的表空间
||“表空间”
||ts.tablespace\u name
||““数据文件”C:\Oracle\oradata\yourDATABASEname\'|| ts.tablespace|u name | |'.DBF”
||人权专员(13)
||CHR(10)
||利斯塔格(
“尺寸”
||字节数
||解码(
df.autoextensible,
“是”,CHR(13)
||CHR(10)
||“下一步自动扩展”
||df.increment_乘以*ts.block_大小
||“最大尺寸”
||案例
当maxbytes<功率(1024,3)*2时
然后
至字符(最大字节)
其他的
托查(
地板(
最大字节/功率(1024,2)))
||“我是
(完),,
“,”| | CHR(13)| | CHR(10))
组内(按df.file\u id排序)
||人权专员(13)
||CHR(10)
|| ' '
||ts.测井
|| ' '
||ts状态
||“块大小”
||块大小
ddl
来自dba_表空间ts
内部连接dba_数据_文件df
在ts.tablespace\u name=df.tablespace\u name上
其中ts.contents='PERMANENT'--不包括撤消和临时
和ts.tablespace_name IN('您的_表空间列表')
按ts.tablespace\u名称分组,
ts.bigfile,
ts.logging,
ts.status,
块大小
按ts.tablespace\u name排序;