{"id":333294,"date":"2022-05-18T09:01:32","date_gmt":"2022-05-18T09:01:32","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=333294"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=333294","title":{"rendered":"<span>Oracle. \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438 \u043d\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u044c\u0433\u0430 \u0438 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0418\u043d\u0433\u043e\u0441\u0441\u0442\u0440\u0430\u0445\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435-\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043e\u043e\u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 Oracle 12c. \u0418\u0442\u0430\u043a, \u043f\u043e\u0433\u043d\u0430\u043b\u0438!<\/p>\n<p>\u0412 \u0436\u0438\u0437\u043d\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0430\u0432\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0443\u0436\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0435\u0437 \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u0438 \u043f\u043e\u0440\u0430 \u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c. \u0421\u0442\u0430\u0440\u043e\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u0438\u043b\u0438 \u043e\u0442\u0447\u0451\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0440\u0435\u0434\u0438\u0442\u044c. \u0418 \u0441\u0430\u043c\u044b\u0439 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u2013 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0430 \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/1c8\/107\/738\/1c810773855ad02d6ba4271b571bc1b7.jpg\" width=\"1920\" height=\"1080\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c8\/107\/738\/1c810773855ad02d6ba4271b571bc1b7.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<h4>\u0423\u0441\u043b\u043e\u0432\u0438\u044f<\/h4>\n<ul>\n<li>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c Oracle 12c, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043d\u0430 15 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0441\u0442\u0440\u043e\u043a, \u043e\u0431\u0449\u0438\u043c \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u043e\u043a\u043e\u043b\u043e 2 \u0422\u0431 \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u0447\u0430\u0441: \u043e\u0442 40 \u0442\u044b\u0441\u044f\u0447 \u0433\u043b\u0443\u0445\u043e\u0439 \u043d\u043e\u0447\u044c\u044e, \u0434\u043e \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0434\u043d\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0417\u0430\u0434\u0430\u0447\u0430<\/h4>\n<ul>\n<li>\n<p>\u041f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442 20 \u0434\u043e 50 \u0441\u0435\u0441\u0441\u0438\u0439 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443 \u043d\u043e\u0447\u044c\u044e \u0438 \u0434\u043e 500 \u0434\u043d\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438; <\/p>\n<\/li>\n<li>\n<p>\u0423\u0440\u0435\u0437\u0430\u0442\u044c <s>\u043e\u0441\u0435\u0442\u0440\u0430<\/s> \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e \u0433\u043b\u0443\u0431\u0438\u043d\u044b 3 \u0433\u043e\u0434\u0430. <\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u0443\u043f\u0440\u043e\u0449\u0430\u043b\u0430\u0441\u044c \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442 \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0447\u0430\u0441. \u041e\u0442\u0447\u0435\u0442\u044b \u043d\u043e\u0447\u044c\u044e \u0442\u043e\u0436\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f. <\/p>\n<h4>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u0439<\/h4>\n<ol>\n<li>\n<p>\u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u043c\u044b \u043d\u0435 \u0441\u0442\u0430\u043b\u0438, \u0438\u0431\u043e \u043e\u0442\u0441\u0435\u043a\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e (80%) \u0434\u0430\u0440\u0438\u0442 \u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0440\u0430\u0434\u043e\u0441\u0442\u044c \u043e\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u0442\u0430\u043a \u0438 DBA.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u043b\u043e\u0431 \u2013 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c. \u042d\u0442\u043e \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u0430 \u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f LOB-\u043f\u043e\u043b\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043d\u0435 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446 <strong>DBMS_REDEFINITION<\/strong><em> <\/em>\u0445\u043e\u0440\u043e\u0448, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u0434\u043d\u043e: \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0438\u0442\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043d\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0442\u0440\u0430\u043d\u0437\u0438\u0442\u043d\u043e\u0439. \u0421\u0430\u043c\u044b\u0439 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043f\u043e\u0434\u043c\u0435\u043d\u044b <a href=\"https:\/\/docs.oracle.com\/database\/121\/VLDBG\/GUID-E08650B4-06B1-43F9-91B0-FBF685A3B848.htm#VLDBG1156\">Exchanging Partitions<\/a>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0434 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e, \u0431\u0435\u0437 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432.<\/p>\n<\/li>\n<\/ol>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u0430 \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0442\u0430\u043a<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b46\/c42\/928\/b46c4292840ef4ece71f0bb0094e2bc6.png\" width=\"480\" height=\"184\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b46\/c42\/928\/b46c4292840ef4ece71f0bb0094e2bc6.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u0440\u043e\u0447\u0435, \u043a \u0434\u0435\u043b\u0443 (\u0430 \u0434\u043b\u044f \u043e\u0441\u043e\u0431\u043e \u043e\u0437\u043e\u0440\u043d\u044b\u0445 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 2 \u0422\u0431 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0435\u0451).<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041b\u0430\u0434\u043d\u043e-\u043b\u0430\u0434\u043d\u043e, \u044f \u043f\u043e\u0448\u0443\u0442\u0438\u043b\u0430, 300 \u0413\u0431 \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c\u2026 <\/p>\n<pre><code class=\"sql\">CREATE TABLE Scott.TEST_EXCHANGE (   ISN                NUMBER                     NOT NULL,   HISTESTIMATIONISN  NUMBER                     NOT NULL,   SOURCECODE         CHAR(1 BYTE)               NOT NULL,   SOURCEISN          NUMBER                     NOT NULL,   VALUECODE          CHAR(1 BYTE)               NOT NULL,   VALUENAME          VARCHAR2(255 BYTE),   DATAVALUE          CLOB,   CREATED            DATE                       NOT NULL,   CREATEDBY          NUMBER                     NOT NULL,   UPDATED            DATE                       NOT NULL,   UPDATEDBY          NUMBER                     NOT NULL ) LOB (DATAVALUE) STORE AS BASICFILE (   TABLESPACE TDATA   ENABLE      STORAGE IN ROW   CHUNK       8192   RETENTION   )   tablespace TDATA ;  alter session enable parallel query; alter session enable parallel DML;  declare     V_size number := 0.300; -- \u043e\u0431\u044a\u0435\u043c \u0432 \u0422\u0431     V_rows number := 5000000; -- \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0435 \u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0433\u043e     v_pks   number := 100000; -- \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u0447\u043a\u0438         i number := 0;     s number;     v_sql varchar2(32000); begin     \/*\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439(V_size) \u043e\u0431\u044a\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443, \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0432\u0430\u0448\u0430 \u0431\u0430\u0437\u0430 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0443\u0441\u0442\u0430\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0435     \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u044f\u0433\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439*\/     loop         for r in (         \/* \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438, \u0430 \u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u043a\u043e\u0431\u043e\u043a \u0438 \u043d\u0435 \u0442\u0430\u043a \u043a\u0440\u0430\u0441\u0438\u0432\u043e.          \u0414\u0430\u043b\u0435\u0435 \u0432 \u044d\u0442\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445: *\/             Select  owner, table_name, column_name, num_rows, nvl(varchar2_col,'null') varchar2_col,                   n,  RPAD (ncols, LENGTH (ncols) + (3 - n) * 2, ',0') ncols --\u0435\u0441\u043b\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u043c\u0435\u043d\u044c\u0448\u0435 3 \u0434\u043e\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0443\u043b\u044f\u043c\u0438.                From  (Select  owner, table_name, column_name, ' '||ncols ncols, num_rows, varchar2_col,                              nvl((LENGTH (ncols) - LENGTH (TRANSLATE (ncols, 'x,', 'x')))\/2,0) n -- \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u043d\u0430\u0441 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0448\u043b\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0445 \u0434\u043b\u044f \u0438\u043d\u0441\u0435\u0440\u0442\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a                        From  (Select  l.owner, l.table_name, l.column_name, t.num_rows, varchar2_col                                     , NVL (SUBSTR (l.ncols, 1, INSTR (l.ncols, ',', 1, 3*2+1) - 1), l.ncols) ncols                                     -- \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u043b\u0438\u0448\u043d\u0435\u0435, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e 3 \u0447\u0438\u0441\u043b\u0430, \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043c\u044b \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439,                                      -- \u0430 \u043a\u043b\u044e\u0447 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HISTESTIMATIONISN \u0431\u0443\u0434\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c                                  From  (  Select  l.owner                                                , l.table_name                                                , l.column_name                                                , max(case when l.column_name = c.column_name then c.data_type end) lob_type                                                , max(case when c.data_type = 'VARCHAR2' then c.column_name end) varchar2_col                                                , LISTAGG (Case When c.data_type = 'NUMBER'                                                          Then ',nvl(' ||c.column_name||',0)' End) --\u0442\u0430\u043a \u043a\u0430\u043a  not null \u043f\u043e\u043b\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u0446\u0435\u043f\u0438\u043c nvl                                                      Within Group (Order By c.nullable Desc, c.column_id) ncols                                                      -- \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 \u0442\u0438\u043f\u043e\u043c NUMBER                                            From  dba_lobs l Join all_tab_columns c On c.owner = l.owner And c.table_name = l.table_name                                             --\u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0441 \u043b\u043e\u0431\u0430\u043c\u0438 \u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u043c \u0438\u0437 \u043d\u0438\u0445 \u043b\u043e\u0431\u044b \u0438 \u0447\u0438\u0441\u043b\u0430, \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u0434\u0435\u0440\u0433\u0430\u0442\u044c dbms_random \u0438 \u043d\u0435 \u043a\u0438\u043f\u044f\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446                                        Group By  l.owner, l.table_name, l.column_name) l                                        join dba_tables t on t.table_name = l.table_name and t.owner = l.owner and num_rows>0                                        join all_tab_privs p on p.table_name = t.table_name and p.table_schema = t.owner --\u0447\u0442\u043e \u0431\u044b \u043d\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u043d\u0442\u044b                                         where lob_type='CLOB'))                 order by case when num_rows > v_pks then 1 else 0 end desc         ) loop              v_sql :=             'INSERT \/*+ APPEND PARALLEL(16) *\/ INTO Scott.TEST_EXCHANGE (ISN, HISTESTIMATIONISN, CREATEDBY, UPDATEDBY, SOURCEISN, DATAVALUE, VALUECODE, SOURCECODE, VALUENAME, CREATED, UPDATED)'||              chr(10)||-- \u043a\u043b\u044e\u0447\u0438\u043a\u0438 \u0441\u0435\u0431\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u043c \u0434\u043b\u044f \u041f\u041a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f c \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u043e\u043c ~50 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u043f\u0430\u0447\u043a\u0435 d 100 000 (v_pks)             'SELECT rownum+:i, floor((rownum+:i)\/(:v_pks\/50)) '||r.ncols||' ,'||r.column_name||             --\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e q'{...}'             q'{,decode(mod(rownum,10),1,'V',2,'R',3,'A',4,'D',5,'P',6,'B',7,'T',8,'W',9,'E','S'),'N', substr(}'||r.varchar2_col||',1,200) ,sysdate,sysdate             FROM '||r.owner||'.'||r.table_name ||'             SAMPLE BLOCK ('||case when ceil(100*v_pks\/r.num_rows)> 100 then 99 else ceil(100*v_pks\/r.num_rows) end||') --'||r.num_rows||'             WHERE ROWNUM &lt;=:v_pks';             execute immediate v_sql using i,i,v_pks,v_pks;             i:=i+sql%rowcount;             commit;             if i>= V_rows then --\u0441 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u0447\u0438\u043a                 select sum(bytes)\/power(1024,4) into s                  from (select sum(bytes) bytes                          from dba_segments where owner = 'Scott' and segment_name = 'TEST_EXCHANGE'                        union                        select sum(bytes)                          from dba_lobs l Join dba_segments s on l.OWNER = s.OWNER and l.SEGMENT_NAME = s.SEGMENT_NAME                         where  l.owner = 'Scott' and l.TABLE_NAME = 'TEST_EXCHANGE');                 exit when s >=v_size;             end if;         end loop;         --\u0435\u0441\u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0447\u0435\u043a \u0441 \u043b\u043e\u0431\u0430\u043c\u0438 \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e \u043d\u0438\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f         select sum(bytes)\/power(1024,4) into s          from (select sum(bytes) bytes                  from dba_segments where owner = 'Scott' and segment_name = 'TEST_EXCHANGE'                union                select sum(bytes)                  from dba_lobs l Join dba_segments s on l.OWNER = s.OWNER and l.SEGMENT_NAME = s.SEGMENT_NAME                 where  l.owner = 'Scott' and l.TABLE_NAME = 'TEST_EXCHANGE');         exit when s >=v_size;     end loop;     exception when others then          DBMS_OUTPUT.put_line (v_sql);          raise; end;  CREATE UNIQUE INDEX Scott.PK_TEST_EXCHANGE ON Scott.TEST_EXCHANGE (ISN) parallel 32;    Alter index Scott.PK_TEST_EXCHANGE  noparallel;   CREATE INDEX Scott.X_TEST_EXCHANGE_HISTORY ON Scott.TEST_EXCHANGE (CREATED, SOURCECODE, VALUECODE, VALUENAME) parallel 32;    Alter index Scott.X_TEST_EXCHANGE_HISTORY  noparallel;  ALTER TABLE Scott.TEST_EXCHANGE ADD (   CONSTRAINT CHK_TEST_EXCHANGE_VALUECODE   CHECK (ValueCode in ( 'V', 'R', 'A', 'D', 'P', 'B', 'T', 'W', 'E','S','I','H','C'))   ENABLE NOVALIDATE ,  CONSTRAINT PK_TEST_EXCHANGE   PRIMARY KEY   (ISN)   USING INDEX Scott.PK_TEST_EXCHANGE   ENABLE VALIDATE);<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<pre><code class=\"sql\">\/*\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u0439,  \u043d\u043e \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u043f\u0430\u0440\u0442\u0438\u0446\u043e\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c*\/ Create Table Scott.TEST_EXCHANGE_buf (     isn                   Number    Not Null   , histestimationisn     Number    Not Null   , sourcecode            Char (1)  Not Null   , sourceisn             Number    Not Null   , valuecode             Char (1)  Not Null   , valuename             Varchar2 (255)   , datavalue             Clob   , created               Date      Not Null   , createdby             Number    Not Null   , updated               Date      Not Null   , updatedby             Number    Not Null ) Tablespace TDATA Partition By Range (histEstimationIsn)(Partition p_maxvalue Values                                         Less Than (maxvalue)) Enable Row Movement;   \/*\u0414\u043b\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u0434\u043d\u0438\u043c \u043a\u0443\u0441\u043a\u043e\u043c*\/ begin \/*\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0447\u0430\u0441*\/     Lock Table Scott.TEST_EXCHANGE In Exclusive Mode Nowait;     insert into Scott.TEST_EXCHANGE_buf     select \/*+ index (c X_TEST_EXCHANGE_HISTORY) parallel(32) *\/ *      from Scott.TEST_EXCHANGE where created>sysdate-1\/24;      \/*\u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u0443\u044e \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e*\/     execute immediate 'Alter table Scott.TEST_EXCHANGE_BUF     Exchange partition p_maxvalue     With table Scott.TEST_EXCHANGE     Without validation'; \/*\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0435\u0441\u043b\u0438 \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u043d\u0430 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0439      \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0445 \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0435\u0439\u043d\u0442\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e\u0439*\/ end;  \/*\u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443*\/ Alter table Scott.TEST_EXCHANGE modify  PARTITION BY RANGE (HISTESTIMATIONISN)  INTERVAL (2000000)  (Partition part_1 values less than  (2000000))         COMPRESS    Online Parallel 16 Enable row movement;     \/* \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u043a\u0446\u0438\u0439 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u043e\u0439 \u0441\u0443\u0440\u0440\u043e\u0433\u0430\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043d\u0438\u0437\u0438\u0442  \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 PARALLEL_EXECUTE. \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0446\u0438\u0439 2970.*\/ begin   commit;   for i in 1..2970 loop    Insert Into  scott.TEST_EXCHANGE          Values  (   28803, 21364838103 + (i * 2000000), 'F', 100, 'R'                   , '', '', date'2021-11-07', 0, date'2021-11-07', 0);    rollback;   end loop; end;     \/*\u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u043d\u043e\u0432\u0443\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 3 \u0433\u043e\u0434\u0430*\/ Declare     misn          Number;     v_job_name    Varchar2 (500) := 'RUN_COPY_TEST_EXCHANGE';     n             Number; Begin     \/*\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043f\u043e Isn \u043f\u0435\u0440\u0435\u043d\u043e\u0441, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0430 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043d\u043d\u044b\u0439      \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0447\u0430\u0441 *\/     Select MIN (isn) Into misn From Scott.TEST_EXCHANGE;      \/*\u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0438\u0437 \u0441\u0442\u0430\u0440\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u043d\u043e\u0432\u0443\u044e \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 3 \u0433\u043e\u0434\u0430*\/     Select  COUNT (1)       Into  n       From  dba_parallel_execute_tasks      Where  task_name = 'copy TEST_EXCHANGE';      If n > 0     Then         Dbms_Parallel_Execute.drop_task ('copy TEST_EXCHANGE');     End If;      Dbms_Parallel_Execute.create_task ('copy TEST_EXCHANGE');     Dbms_Parallel_Execute.create_chunks_by_rowid ('copy TEST_EXCHANGE', 'Scott'                                                   , 'TEST_EXCHANGE_BUF', True                                                   , 1000000);      Dbms_Parallel_Execute.run_task ('copy TEST_EXCHANGE' , 'begin insert into Scott.TEST_EXCHANGE select \/*+rowid(h)*\/ *  from Scott.TEST_EXCHANGE_BUF h where rowid between :start_id and :end_id and created>=add_months(trunc(sysdate),-36) and isn &lt; ' || misn || '; end;', Dbms_Sql.native, parallel_level => 64); End;  \/*\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 *\/ CREATE INDEX Scott.X_TEST_EXCHANGE_HISTESTIMATIONISN  ON Scott.TEST_EXCHANGE(HISTESTIMATIONISN) LOCAL TABLESPACE IDXDATA COMPRESS  parallel 32;     Alter index Scott.X_TEST_EXCHANGE_HISTESTIMATIONISN noparallel;  alter table Scott.TEST_EXCHANGE noparallel;<\/code><\/pre>\n<p>\u0412\u0440\u0435\u043c\u044f \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043e\u043a\u043e\u043b\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u0412\u0443\u0430\u043b\u044f! <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/5ed\/3fa\/2d9\/5ed3fa2d95cf4770203ee85f4e3fda28.jpg\" width=\"1761\" height=\"366\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ed\/3fa\/2d9\/5ed3fa2d95cf4770203ee85f4e3fda28.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ingos_it\/blog\/666254\/\"> https:\/\/habr.com\/ru\/company\/ingos_it\/blog\/666254\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u044c\u0433\u0430 \u0438 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 \u0418\u043d\u0433\u043e\u0441\u0441\u0442\u0440\u0430\u0445\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435-\u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043e\u043e\u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 Oracle 12c. \u0418\u0442\u0430\u043a, \u043f\u043e\u0433\u043d\u0430\u043b\u0438!<\/p>\n<p>\u0412 \u0436\u0438\u0437\u043d\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0430\u0432\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u0443\u0436\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0435\u0437 \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u0438 \u043f\u043e\u0440\u0430 \u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c. \u0421\u0442\u0430\u0440\u043e\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u0438\u043b\u0438 \u043e\u0442\u0447\u0451\u0442\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440, \u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0440\u0435\u0434\u0438\u0442\u044c. \u0418 \u0441\u0430\u043c\u044b\u0439 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u2013 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0430 \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h4>\u0423\u0441\u043b\u043e\u0432\u0438\u044f<\/h4>\n<ul>\n<li>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c Oracle 12c, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043d\u0430 15 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u043e\u0432 \u0441\u0442\u0440\u043e\u043a, \u043e\u0431\u0449\u0438\u043c \u043e\u0431\u044a\u0435\u043c\u043e\u043c \u043e\u043a\u043e\u043b\u043e 2 \u0422\u0431 \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 \u0447\u0430\u0441: \u043e\u0442 40 \u0442\u044b\u0441\u044f\u0447 \u0433\u043b\u0443\u0445\u043e\u0439 \u043d\u043e\u0447\u044c\u044e, \u0434\u043e \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0434\u043d\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0417\u0430\u0434\u0430\u0447\u0430<\/h4>\n<ul>\n<li>\n<p>\u041f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043e\u0442 20 \u0434\u043e 50 \u0441\u0435\u0441\u0441\u0438\u0439 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443 \u043d\u043e\u0447\u044c\u044e \u0438 \u0434\u043e 500 \u0434\u043d\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438; <\/p>\n<\/li>\n<li>\n<p>\u0423\u0440\u0435\u0437\u0430\u0442\u044c <s>\u043e\u0441\u0435\u0442\u0440\u0430<\/s> \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e \u0433\u043b\u0443\u0431\u0438\u043d\u044b 3 \u0433\u043e\u0434\u0430. <\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u0434\u0430\u0447\u0430 \u0443\u043f\u0440\u043e\u0449\u0430\u043b\u0430\u0441\u044c \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442 \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0447\u0430\u0441. \u041e\u0442\u0447\u0435\u0442\u044b \u043d\u043e\u0447\u044c\u044e \u0442\u043e\u0436\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f. <\/p>\n<h4>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u0439<\/h4>\n<ol>\n<li>\n<p>\u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0434\u0435 \u043c\u044b \u043d\u0435 \u0441\u0442\u0430\u043b\u0438, \u0438\u0431\u043e \u043e\u0442\u0441\u0435\u043a\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e (80%) \u0434\u0430\u0440\u0438\u0442 \u043d\u0435\u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0443\u044e \u0440\u0430\u0434\u043e\u0441\u0442\u044c \u043e\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u0438 \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c, \u0442\u0430\u043a \u0438 DBA.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 \u043b\u043e\u0431 \u2013 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0441\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c. \u042d\u0442\u043e \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u0430 \u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f LOB-\u043f\u043e\u043b\u044f, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043d\u0435 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u0431\u043b\u0438\u0446 <strong>DBMS_REDEFINITION<\/strong><em> <\/em>\u0445\u043e\u0440\u043e\u0448, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0442\u0430\u0432\u0430\u043b\u043e\u0441\u044c \u043e\u0434\u043d\u043e: \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0438\u0442\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432 \u043d\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u0443 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0442\u0440\u0430\u043d\u0437\u0438\u0442\u043d\u043e\u0439. \u0421\u0430\u043c\u044b\u0439 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043f\u043e\u0434\u043c\u0435\u043d\u044b <a href=\"https:\/\/docs.oracle.com\/database\/121\/VLDBG\/GUID-E08650B4-06B1-43F9-91B0-FBF685A3B848.htm#VLDBG1156\">Exchanging Partitions<\/a>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0434 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e, \u0431\u0435\u0437 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0439 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432.<\/p>\n<\/li>\n<\/ol>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u0430 \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0442\u0430\u043a<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<p>\u041a\u043e\u0440\u043e\u0447\u0435, \u043a \u0434\u0435\u043b\u0443 (\u0430 \u0434\u043b\u044f \u043e\u0441\u043e\u0431\u043e \u043e\u0437\u043e\u0440\u043d\u044b\u0445 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 2 \u0422\u0431 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0435\u0451).<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041b\u0430\u0434\u043d\u043e-\u043b\u0430\u0434\u043d\u043e, \u044f \u043f\u043e\u0448\u0443\u0442\u0438\u043b\u0430, 300 \u0413\u0431 \u0432\u043f\u043e\u043b\u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c\u2026 <\/p>\n<pre><code class=\"sql\">CREATE TABLE Scott.TEST_EXCHANGE (   ISN                NUMBER                     NOT NULL,   HISTESTIMATIONISN  NUMBER                     NOT NULL,   SOURCECODE         CHAR(1 BYTE)               NOT NULL,   SOURCEISN          NUMBER                     NOT NULL,   VALUECODE          CHAR(1 BYTE)               NOT NULL,   VALUENAME          VARCHAR2(255 BYTE),   DATAVALUE          CLOB,   CREATED            DATE                       NOT NULL,   CREATEDBY          NUMBER                     NOT NULL,   UPDATED            DATE                       NOT NULL,   UPDATEDBY          NUMBER                     NOT NULL ) LOB (DATAVALUE) STORE AS BASICFILE (   TABLESPACE TDATA   ENABLE      STORAGE IN ROW   CHUNK       8192   RETENTION   )   tablespace TDATA ;  alter session enable parallel query; alter session enable parallel DML;  declare     V_size number := 0.300; -- \u043e\u0431\u044a\u0435\u043c \u0432 \u0422\u0431     V_rows number := 5000000; -- \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0435 \u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0435\u0433\u043e     v_pks   number := 100000; -- \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u0447\u043a\u0438         i number := 0;     s number;     v_sql varchar2(32000); begin     \/*\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439(V_size) \u043e\u0431\u044a\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0442\u0430\u0431\u043b\u0438\u0447\u043a\u0443, \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0432\u0430\u0448\u0430 \u0431\u0430\u0437\u0430 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0443\u0441\u0442\u0430\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u0430\u043d\u043d\u044b\u0435 \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u043d\u0435\u0435     \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u044f\u0433\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439*\/     loop         for r in (         \/* \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438, \u0430 \u0442\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u043a\u043e\u0431\u043e\u043a \u0438 \u043d\u0435 \u0442\u0430\u043a \u043a\u0440\u0430\u0441\u0438\u0432\u043e.          \u0414\u0430\u043b\u0435\u0435 \u0432 \u044d\u0442\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0441\u043d\u0438\u0437\u0443 \u0432\u0432\u0435\u0440\u0445: *\/             Select  owner, table_name, column_name, num_rows, nvl(varchar2_col,'null') varchar2_col,                   n,  RPAD (ncols, LENGTH (ncols) + (3 - n) * 2, ',0') ncols --\u0435\u0441\u043b\u0438 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u043c\u0435\u043d\u044c\u0448\u0435 3 \u0434\u043e\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043d\u0443\u043b\u044f\u043c\u0438.                From  (Select  owner, table_name, column_name, ' '||ncols ncols, num_rows, varchar2_col,                              nvl((LENGTH (ncols) - LENGTH (TRANSLATE (ncols, 'x,', 'x')))\/2,0) n -- \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u043d\u0430\u0441 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u044b\u0448\u043b\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u0445 \u0434\u043b\u044f \u0438\u043d\u0441\u0435\u0440\u0442\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a                        From  (Select  l.owner, l.table_name, l.column_name, t.num_rows, varchar2_col                                     , NVL (SUBSTR (l.ncols, 1, INSTR (l.ncols, ',', 1, 3*2+1) - 1), l.ncols) ncols                                     -- \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u043a\u043e\u043b\u043e\u043d\u043e\u043a \u043b\u0438\u0448\u043d\u0435\u0435, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e 3 \u0447\u0438\u0441\u043b\u0430, \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u043c\u044b \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439,                                      -- \u0430 \u043a\u043b\u044e\u0447 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f HISTESTIMATIONISN \u0431\u0443\u0434\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0442\u044c                                  From  (  Select  l.owner                                                , l.table_name                                                , l.column_name                                                , max(case when l.column_name = c.column_name then c.data_type end) lob_type                                                , max(case when c.data_type = 'VARCHAR2' then c.column_name end) varchar2_col                                                , LISTAGG (Case When c.data_type = 'NUMBER'                                                          Then ',nvl(' ||c.column_name||',0)' End) --\u0442\u0430\u043a \u043a\u0430\u043a  not null \u043f\u043e\u043b\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u0446\u0435\u043f\u0438\u043c nvl                                                      Within Group (Order By c.nullable Desc, c.column_id) ncols                                                      -- \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 \u0442\u0438\u043f\u043e\u043c NUMBER                                            From  dba_lobs l Join all_tab_columns c On c.owner = l.owner And c.table_name = l.table_name                                             --\u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0441 \u043b\u043e\u0431\u0430\u043c\u0438 \u0438 \u0432\u044b\u0442\u0430\u0449\u0438\u043c \u0438\u0437 \u043d\u0438\u0445 \u043b\u043e\u0431\u044b \u0438 \u0447\u0438\u0441\u043b\u0430, \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u0434\u0435\u0440\u0433\u0430\u0442\u044c dbms_random \u0438 \u043d\u0435 \u043a\u0438\u043f\u044f\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446                                        Group By  l.owner, l.table_name, l.column_name) l                                        join dba_tables t on t.table_name = l.table_name and t.owner = l.owner and num_rows>0                                        join all_tab_privs p on p.table_name = t.table_name and p.table_schema = t.owner --\u0447\u0442\u043e \u0431\u044b \u043d\u0430 \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u043d\u0442\u044b                                         where lob_type='CLOB'))                 order by case when num_rows > v_pks then 1 else 0 end desc         ) loop              v_sql :=             'INSERT \/*+ APPEND PARALLEL(16) *\/ INTO Scott.TEST_EXCHANGE (ISN, HISTESTIMATIONISN, CREATEDBY, UPDATEDBY, SOURCEISN, DATAVALUE, VALUECODE, SOURCECODE, VALUENAME, CREATED, UPDATED)'||              chr(10)||-- \u043a\u043b\u044e\u0447\u0438\u043a\u0438 \u0441\u0435\u0431\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u043c \u0434\u043b\u044f \u041f\u041a \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f c \u0440\u0430\u0437\u0431\u0440\u043e\u0441\u043e\u043c ~50 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u043f\u0430\u0447\u043a\u0435 d 100 000 (v_pks)             'SELECT rownum+:i, floor((rownum+:i)\/(:v_pks\/50)) '||r.ncols||' ,'||r.column_name||             --\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e q'{...}'             q'{,decode(mod(rownum,10),1,'V',2,'R',3,'A',4,'D',5,'P',6,'B',7,'T',8,'W',9,'E','S'),'N', substr(}'||r.varchar2_col||',1,200) ,sysdate,sysdate             FROM '||r.owner||'.'||r.table_name ||'             SAMPLE BLOCK ('||case when ceil(100*v_pks\/r.num_rows)> 100 then 99 else ceil(100*v_pks\/r.num_rows) end||') --'||r.num_rows||'             WHERE ROWNUM &lt;=:v_pks';             execute immediate v_sql using i,i,v_pks,v_pks;             i:=i+sql%rowcount;             commit;             if i>= V_rows then --\u0441 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u0447\u0438\u043a                 select sum(bytes)\/power(1024,4) into s                  from (select sum(bytes) bytes                          from dba_segments where owner = 'Scott' and segment_name = 'TEST_EXCHANGE'                        union                        select sum(bytes)                          from dba_lobs l Join dba_segments s on l.OWNER = s.OWNER and l.SEGMENT_NAME = s.SEGMENT_NAME                         where  l.owner = 'Scott' and l.TABLE_NAME = 'TEST_EXCHANGE');                 exit when s >=v_size;             end if;         end loop;         --\u0435\u0441\u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0447\u0435\u043a \u0441 \u043b\u043e\u0431\u0430\u043c\u0438 \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e \u043d\u0438\u043c \u0435\u0449\u0435 \u0440\u0430\u0437 \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f         select sum(bytes)\/power(1024,4) into s          from (select sum(bytes) bytes                  from dba_segments where owner = 'Scott' and segment_name = 'TEST_EXCHANGE'                union                select sum(bytes)                  from dba_lobs l Join dba_segments s on l.OWNER = s.OWNER and l.SEGMENT_NAME = s.SEGMENT_NAME                 where  l.owner = 'Scott' and l.TABLE_NAME = 'TEST_EXCHANGE');         exit when s >=v_size;     end loop;     exception when others then          DBMS_OUTPUT.put_line (v_sql);          raise; end;  CREATE UNIQUE INDEX Scott.PK_TEST_EXCHANGE ON Scott.TEST_EXCHANGE (ISN) parallel 32;    Alter index Scott.PK_TEST_EXCHANGE  noparallel;   CREATE INDEX Scott.X_TEST_EXCHANGE_HISTORY ON Scott.TEST_EXCHANGE (CREATED, SOURCECODE, VALUECODE, VALUENAME) parallel 32;    Alter index Scott.X_TEST_EXCHANGE_HISTORY  noparallel;  ALTER TABLE Scott.TEST_EXCHANGE ADD (   CONSTRAINT CHK_TEST_EXCHANGE_VALUECODE   CHECK (ValueCode in ( 'V', 'R', 'A', 'D', 'P', 'B', 'T', 'W', 'E','S','I','H','C'))   ENABLE NOVALIDATE ,  CONSTRAINT PK_TEST_EXCHANGE   PRIMARY KEY   (ISN)   USING INDEX Scott.PK_TEST_EXCHANGE   ENABLE VALIDATE);<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<pre><code class=\"sql\">\/*\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043f\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u0439,  \u043d\u043e \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u043f\u0430\u0440\u0442\u0438\u0446\u043e\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c*\/ Create Table Scott.TEST_EXCHANGE_buf (     isn                   Number    Not Null   , histestimationisn     Number    Not Null   , sourcecode            Char (1)  Not Null   , sourceisn             Number    Not Null   , valuecode             Char (1)  Not Null   , valuename             Varchar2 (255)   , datavalue             Clob   , created               Date      Not Null   , createdby    <\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-333294","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=333294"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/333294\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=333294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=333294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=333294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}