根据源库表空间实际使用创建表空间脚本

根据源库表空间实际使用创建表空间脚本
经常迁移数据库,创建表空间还需要继续创建几个文件,今写个脚本方便以后操作。


点击(此处)折叠或打开

  1. declare
  2. ---根据表空间实际使用自动生成创建语句;
  3. ---如需要修改数据文件创建路径,修改v_path参数即可;
  4. --2017.4.14 19:18
  5. ---Edit by Well
  6.   v_path varchar2(100) := '''/data/ciq/';
  7.   i integer;
  8.   j integer;
  9.   v_tbname varchar2(50);
  10.   v_tbused varchar2(50);
  11.   cursor c_tb is
  12.     SELECT d.tablespace_name,
  13.            ceil(NVL(a.bytes - NVL(f.bytes, 0), 0) / 1024 / 1024 / 1024) as usedgb
  14.       FROM sys.dba_tablespaces d,
  15.            (select tablespace_name, sum(bytes) bytes
  16.               from dba_data_files
  17.              group by tablespace_name) a,
  18.            (select tablespace_name, sum(bytes) bytes
  19.               from dba_free_space
  20.              group by tablespace_name) f
  21.      WHERE d.tablespace_name = a.tablespace_name(+)
  22.        AND d.tablespace_name = f.tablespace_name(+)
  23.        AND NOT (d.extent_management like 'LOCAL' AND
  24.             d.contents like 'TEMPORARY')
  25.        and d.TABLESPACE_NAME not in
  26.            ('SYSAUX', 'UNDOTBS1', 'USERS', 'SYSTEM');
  27. begin
  28.   for v_tb in c_tb loop
  29.     v_tbname := v_tb.tablespace_name;
  30.     v_tbused := v_tb.usedgb;
  31.     i := ceil(v_tbused / 30);
  32.     DBMS_OUTPUT.ENABLE(buffer_size => null);
  33.     j := 1;
  34.     dbms_output.put_line('create tablespace ' || v_tbname || ' datafile ' ||
  35.                          v_path || v_tbname || '_' || j ||
  36.                          '.dbf size 100M autoextend on next 1024M'';');
  37.     for j in 2 .. i loop
  38.       dbms_output.put_line('alter tablespace ' || v_tbname ||
  39.                            ' add datafile ' || v_path || v_tbname || '_' || j ||
  40.                            '.dbf size 100M autoextend on next 1024M'';');
  41.     end loop;
  42.   end loop;
  43.   dbms_output.put_line('---for end---');
  44. end;


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29519108/viewspace-2137313/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29519108/viewspace-2137313/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
shell脚本是一种命令语言,可以通过编写一系列命令来实现自动化任务。下面是一个示例的shell脚本,用于创建或删除Oracle用户和表空间。 1. 创建Oracle用户和表空间脚本: ```shell #!/bin/bash # 设置Oracle环境变量 export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 export ORACLE_SID=orcl # 创建Oracle用户 function create_user() { sqlplus -s username/password@localhost <<EOF CREATE USER myuser IDENTIFIED BY mypassword; GRANT CONNECT, RESOURCE TO myuser; EXIT; EOF } # 创建Oracle表空间 function create_tablespace() { sqlplus -s username/password@localhost <<EOF CREATE TABLESPACE mytablespace DATAFILE '/u01/app/oracle/oradata/orcl/mytablespace.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 500M; ALTER USER myuser DEFAULT TABLESPACE mytablespace; EXIT; EOF } # 调用函数来创建用户和表空间 create_user create_tablespace ``` 上述脚本首先设置Oracle环境变量,然后定义了两个函数create_user和create_tablespace,分别用于创建Oracle用户和表空间。在函数内部使用sqlplus命令连接到Oracle数据库,并执行相应的SQL语句来实现创建用户和表空间的操作。 2. 删除Oracle用户和表空间脚本: ```shell #!/bin/bash # 设置Oracle环境变量 export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 export ORACLE_SID=orcl # 删除Oracle用户 function delete_user() { sqlplus -s username/password@localhost <<EOF DROP USER myuser CASCADE; EXIT; EOF } # 删除Oracle表空间 function delete_tablespace() { sqlplus -s username/password@localhost <<EOF DROP TABLESPACE mytablespace INCLUDING CONTENTS AND DATAFILES; EXIT; EOF } # 调用函数来删除用户和表空间 delete_user delete_tablespace ``` 上述脚本创建脚本类似,只是SQL语句改为删除用户和表空间的操作。通过调用相应的函数来实现删除用户和表空间的功能。 需要注意的是,以上脚本中的username/password@localhost需要根据实际情况进行修改,以正确连接到Oracle数据库。另外,创建表空间时指定的文件路径和名称也需要根据实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值